我正在尝试在 /etc/sudoers 文件 (redhat) 中为“sudotest.sh”(或任何需要 sudo 的脚本/二进制文件)添加 NOPASSWD 条目,但为了使其正常工作,我必须指定完整路径。以下条目工作正常:
%jenkins ALL=(ALL)NOPASSWD:/home/vts_share/test/sudotest.sh
问题是脚本可能会移动到不同的目录。我尝试提供 /home/*/sudotest.sh,但当我尝试执行 sudo ./sudotest.sh 时,它没有起作用,它告诉我你没有 root 权限
注意:我也没有 /bin/sh 目录的权限。
答案1
完整路径是强制性的,否则非特权用户可以在任意位置创建具有相同名称的新脚本,完全绕过您尝试实施的安全性。
答案2
HBrujin 完全正确:你不能这样做,这是一个经过深思熟虑的设计决定。然而,通常可以解决这个问题,方法是意识到相关脚本通常在幕后做很多相同的事情,并授予该脚本特权sudo
,而不是授予多个包装器脚本特权。
例如,在我的一个站点,我经常受到压力,要求我允许“还有一个“^n 脚本让用户拥有 sudo 访问权限ccm_root
。但我们意识到,所有这些脚本都/usr/bin/ccm
在后台运行相同的特权命令,而且它们总是由一小群开发人员编写和运行,他们是事实上ccm 管理员,我们可以授予该命令 sudo 权限,并告诉人们编写使用该命令的脚本,而不是要求整个脚本的权限。
对于仅用于安全控制的站点来说,这可能没有帮助sudo
,但对于那些将其用于健全性控制、安全和审计的混合站点来说,这可能是一个有用的建议。