我可以使脚本始终以root用户身份执行吗?

快乐开发者

不管谁执行脚本,如何使脚本以root用户身份执行?

我读过有关setuid的文章,但不确定如何执行此操作。

我正在使用Linux,Ubuntu 12.04 LTS。

讲者

务必小心:脚本与setuid结合使用很危险!

首先,请查看此问题/答案,尤其是此答案和安全警告

如果仍要使用setuidset执行脚本,则可以编写一个简短的C程序作为包装器,并setuid在已编译的二进制文件上设置该位。

包装器示例:

int main(void) {        
    setuid(0);
    clearenv();
    system("/absolute/path/to/your/script.sh");
}

使用的另一种解决方案sudo(在此处提到):

  1. 以root用户身份,阻止对脚本的写(或其他)访问:

    chown root /absolute/path/to/your/script.sh 
    chmod 700 /absolute/path/to/your/script.sh
    
  2. 验证除root以外的任何人都不能替换脚本,例如,通过修改父文件夹的访问权限:

    chown root / absolute / path / to / your / 
    chmod 755 / absolute / path / to / your /
    
  3. 在修改sudo的访问权限/etc/sudoersvisudo

    ALL ALL =(root)NOPASSWD:/absolute/path/to/your/script.sh
    

    可以在sudoers联机帮助页中找到有关设置的更多详细信息(例如,限制对特定用户或组的访问)。

之后,所有用户都可以以root用户身份运行脚本,而无需输入密码:

sudo /absolute/path/to/your/script.sh

这类似于使用上面的wrapper / setuid解决方案。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

无法以root用户身份执行bash脚本?

我可以使用Java Scripting API将kotlin作为脚本运行吗

我们可以使用Spring-cloud-netflix和Hystrix重试失败的执行吗

gcc可以使我的代码并行吗?

计算引擎启动脚本无法以非root用户身份执行

我可以使用Kprobe阻止新流程执行吗?

我可以使用return停止在生成器函数中执行吗?

我可以使用C#dll终止VBA宏执行吗

以root用户身份从php执行shell脚本?

以root用户身份在启动应用程序中执行用户脚本

检查脚本是否以root用户身份执行?

root是否可以以非root用户身份执行命令?

我无法使用su命令以root用户身份登录,但可以使用SSH登录

以root用户身份运行的脚本可以以普通用户身份运行另一个脚本吗?

您可以将存储过程设置为始终以特定用户身份执行吗?

如何设置以root用户身份创建的文件和目录可以以其他用户身份读取和执行?

Webmin可以以sudoer而不是root身份运行吗?

我们可以在Docker容器启动期间以root用户身份执行脚本吗?

如何以root用户身份执行脚本,以特定用户身份执行脚本中的某些命令,以root用户身份执行一个命令

我应该在包含环境中以root用户身份运行吗?

以非root用户身份执行

运行某些脚本/命令以用户身份挂起,以root用户身份可以挂起

我无法以root用户身份执行命令

非root用户登录时以root身份执行脚本

是否可以使用getuid()以root用户身份登录用户ID来运行?

以root用户身份执行命令,然后在shell脚本中切换回用户

从非root用户执行root所需的脚本

我始终必须以root用户身份访问Jupyter Notebook

以 root 用户身份以另一个用户身份执行 sudo Bash 脚本