Bash
su 選項 - 以另一個使用者身份執行命令
我想知道如何從腳本中以另一個使用者身份執行命令。
我將腳本的所有者設置為 root。我還在腳本中執行以下命令,以 hudson 使用者身份執行命令:
su -c command hudson
這是正確的語法嗎?
是的。這是
--help
:$ su --help Usage: su [options] [LOGIN] Options: -c, --command COMMAND pass COMMAND to the invoked shell -h, --help display this help message and exit -, -l, --login make the shell a login shell -m, -p, --preserve-environment do not reset environment variables, and keep the same shell -s, --shell SHELL use SHELL instead of the default in passwd
和一些測試(我用過
sudo
,因為我不知道nobody
帳戶的密碼)$ sudo su -c whoami nobody [sudo] password for oli: nobody
當您的命令接受參數時,您需要引用它。如果你不這樣做,就會發生奇怪的事情。在這裡,我以 root 身份嘗試在 /home/oli(作為 oli)中創建一個目錄,而不引用完整的命令:
# su -c mkdir /home/oli/java oli No passwd entry for user '/home/oli/java'
它僅被讀取
mkdir
為-c
標誌的值,並試圖用作用/home/oli/java
戶名。如果我們引用它,它就會起作用:# su -c "mkdir /home/oli/java" oli # stat /home/oli/java File: ‘/home/oli/java’ Size: 4096 Blocks: 8 IO Block: 4096 directory Device: 811h/2065d Inode: 5817025 Links: 2 Access: (0775/drwxrwxr-x) Uid: ( 1000/ oli) Gid: ( 1000/ oli) Access: 2016-02-16 10:49:15.467375905 +0000 Modify: 2016-02-16 10:49:15.467375905 +0000 Change: 2016-02-16 10:49:15.467375905 +0000 Birth: -