是否可以运行命令
- 参数首先以
-
(破折号)开头,例如/usr/bin/echo -n foo
- 作为不同的用户和组,例如
apache:apache
- 使用命令
su
- 当登录 shell 设置为
/sbin/nologin
?
我试过:
su -s "/usr/bin/echo" -g apache apache -n foo
- 失败并显示
su: invalid option -- 'n'
.看起来第一个参数可能不以破折号开头。
- 失败并显示
su -c "/usr/bin/echo -n foo" -g apache apache
- 失败并显示
nologin: invalid option -- 'c'
.如果登录 shell似乎-c
无法使用/sbin/nologin
- 失败并显示
答案1
su -s /bin/bash -c "/usr/bin/echo -n foo" -g apache apache
-s /bin/bash
覆盖 nologin 并允许解释-c
选项的值-c "/usr/bin/echo -n foo"
允许避免使用破折号开头的第一个参数
答案2
须藤来救援!
sudo -u <user> -g <group> -- echo -n foo
答案3
如果用户的登录 shell 设置为,/sbin/nologin
则用户无法登录并且su -
通常无法工作。
但可以su -m
选择保留当前用户的环境和登录 shell:
su -m <user> -c "<command>"
例如:
su -m apache -c "echo hello; id"
印刷:
hello
uid=33(apache) gid=33(apache) groups=33(apache)