Linux

如何在 bash 中使用“nohup”和“&”以另一個使用者身份正確執行程序

  • October 20, 2016

在過去的幾個月裡,我一直在學習 bash 和 linux 管理,同時生成了越來越多需要在後台執行的程式碼。理想情況下,我希望在更接近生產環境的地方執行我的開發系統,以避免由於安全和權限問題而不得不重新開發程式碼。

一般來說,我會執行一些東西:

$nohup <program> <program args> >> <program logfile> 2>&1 &

IE:

$nohup ping 192.168.0.1 >> ping.log 2>&1 &

但是,今天我嘗試通過創建使用者並授予他們正確的權限來正確設置它,以便他們只能訪問自己的文件而不能訪問其他文件。這似乎是一種明智的安全做法。

我會這樣做:

$sudo -u <program user> nohup <program> <program args> >> <program logfile> 2>&1 &

但是,當我執行時,這會導致以下輸出ps aux | grep <program>

<admin user>@server:~$ ps aux | grep <program>
root      1396  0.0  0.0  61868  3792 pts/38   S    10:50   0:00 sudo -u <program user> nohup <program> <program args>
<program user>  1397  0.0  0.8 1273232 68308 pts/38  Sl   10:50   0:02 <program> <program args>

問題是輸出中的第一行:理想情況下,我希望能夠在不啟動任何具有根級權限的程序的情況下執行這些程序。我怎麼做?

你可以這樣做:

su - user -c "nohup ping 192.168.122.1 >> ping.log 2>&1 &"

引用自:https://serverfault.com/questions/810201