如何以不同的用户身份运行命令

cze*_*rny 9 su

是否可以运行命令

  • 参数首先以-(破折号)开头,例如/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'-c如果登录 shell 是,看起来不能使用/sbin/nologin

cze*_*rny 23

su -s /bin/bash -c "/usr/bin/echo -n foo" -g apache apache
Run Code Online (Sandbox Code Playgroud)
  • -s /bin/bash覆盖 nologin 并允许解释-c选项的值
  • -c "/usr/bin/echo -n foo" 允许避免使用破折号开始的第一个参数

  • CentOS 6 中的 `su` 不支持 `-g <group>` 选项。CentOS 7 和 8 支持此选项。 (2认同)

Les*_*ung 20

sudo 来救援!

sudo -u <user> -g <group> -- echo -n foo
Run Code Online (Sandbox Code Playgroud)