如何运行必须由特定用户与另一个用户在没有密码的情况下运行的 bash

如何运行必须由特定用户与另一个用户在没有密码的情况下运行的 bash

我有 2 个用户。test1我用它创建的/sbin/nologin并且没有密码。test2具有sudo特权和密码。

我有这个脚本:/data/tempWork/fazitst必须在test2.现在我想运行这个脚本,test1但我希望它在test2.

我尝试这样做test1
/bin/su -c "/data/tempWork/fazitst " - test2

但这没有用。我正在从应用程序运行此命令,因为我无法使用ssh我无法正确调试它。没有日志。我用 root 尝试了这个命令,它起作用了。

但我猜它需要密码。那么我如何在没有密码的 test1情况下运行我的脚本呢?test2

答案1

这正是sudo设计的目的。

首先,具有 root 访问权限的人需要创建如下配置行/etc/sudoers(或者/etc/sudoers.d/*,如果您的操作系统版本支持):

test1 ALL=(test2) NOPASSWD: /data/tempWork/fazitst

这将授权用户test1(在ALL使用该文件副本的主机上sudoers)以 user 身份执行带有任何命令行参数(或根本没有)的test2命令,而无需密码请求。/data/tempWork/fazitst

然后,用户test1可以使用以下命令执行它:

sudo -u test2 /data/tempWork/fazitst

如果执行命令时$HOME环境变量需要指向用户的主目录test2,您可能需要也可能不需要-H在命令中添加该选项,具体取决于操作系统版本sudo的默认配置。在这种情况下,用户运行sudo的命令将是:test1

sudo -Hu test2 /data/tempWork/fazitst

如果重要的是环境设置与运行时完全相同su - test2,则需要-i选项:sudo

sudo -iu test2 /data/tempWork/fazitst

相关内容