我有 2 个用户。test1
我创建它/sbin/nologin
并且没有密码。test2
有sudo
特权和密码。
我有这个脚本:/data/tempWork/fazitst
必须在test2
. 现在我想运行这个脚本,test1
但我希望它在test2
.
我试过这个test1
:
/bin/su -c "/data/tempWork/fazitst " - test2
但它没有用。我正在从应用程序运行此命令,因为我无法使用ssh
我无法正确调试它。没有日志。我用root尝试了这个命令,它奏效了。
但我想它需要密码。那么我如何在没有密码 的情况test1
下运行我的脚本呢?test2
这正是
sudo
设计的目的。首先,具有 root 访问权限的人需要将这样的配置行设置为
/etc/sudoers
(或者/etc/sudoers.d/*
,如果您的操作系统版本支持):这将授权用户
test1
(在ALL
使用该sudoers
文件副本的主机上)以用户身份执行test2
,无需密码请求,/data/tempWork/fazitst
带有任何命令行参数(或根本没有)的命令。然后,用户
test1
可以使用以下命令执行它:如果
$HOME
环境变量在执行命令时需要指向用户的主目录test2
,您可能需要也可能不需要将-H
选项添加到sudo
命令中,具体取决于sudo
您的操作系统版本中的默认配置。在这种情况下,用户test1
运行的命令将是:如果环境设置与运行时完全相同很重要,
su - test2
则需要-i
选项sudo
: