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

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

是否可以运行命令

  • 参数首先以-(破折号)开头,例如/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)

相关内容