Answers:
是。这是--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: -
注意:“我已将脚本的所有者设置为root”,它什么都不做;即使您设置了setuid位,它仍然不起作用
假设您实际上以root用户身份运行脚本,则可以使用sudo
。su
主要用于切换用户,而sudo
与其他用户一样执行命令。该-u
标志使您可以指定执行该命令的用户:
sudo -u hudson command
sudo
您可以得到以下信息:root is not in the sudoers file
。这是su - <username> -c "command to run"
唯一的选择。
sudo -u kilgore mv this that
)
sudo cat /etc/passwd | grep user-abc
。如果您看到类似这样的内容:user-abc:x:994:994::/home/user-abc:/bin/false
它将无法正常工作。这是因为最后一部分“/bin/false
”表示该用户没有外壳。