【问题标题】:Auto run script in root mode在 root 模式下自动运行脚本
【发布时间】:2013-08-04 23:26:49
【问题描述】:

我是根用户。我想在以 root 模式登录后为所有用户自动运行脚本。我确实找到了为所有用户自动运行脚本的方法。但是对于普通用户,权限被拒绝。有什么解决方法吗?

【问题讨论】:

    标签: unix minix


    【解决方案1】:

    您应该使用sudo - 您的命令在 root 模式下可用,无需用户或组的密码

    Cmnd_Alias YCMD = /usr/local/somecommand
    username  ALL=YCMD, NOPASSWD: YCMD
    

    【讨论】:

    • 脚本由我的系统自动运行。在这种情况下会有所帮助吗??
    • 您可以创建一个虚拟用户,在 crontab 或其他东西中运行“sudo /usr/local/somecommand”。这减少了从“系统上的每个人”到“一个带有星号密码的用户”的潜在滥用。 sudo 还允许您清理环境变量和其他内容,以使运​​行特权代码更安全。 sudo 是你想要的。
    【解决方案2】:

    确保脚本归root所有,然后尝试设置setuid:

    # chown root:root script.sh
    # chmod +s script.sh
    # exit
    $ ./script.sh (executed as a normal user, but will have root mode)
    

    setuid 权限使可执行文件以所有者(在本例中为 root)的权限执行。

    但要小心!您可能会打开一个可被滥用以获取根的漏洞。 (但您尝试由用户在 root 模式下运行脚本的任何其他解决方案都将提供相同的风险。此解决方案并不像其他解决方案那样更容易受到攻击)

    【讨论】:

    • chown root.root script.sh 说 root.root:unknown 用户名。我试过 chown root script.sh 。最后它什么也没做......
    • @Rabin 是的。尝试将点替换为冒号。 chroot root:root script.sh ...并将script.sh替换为您的实际脚本
    • FWIW - bash,可以说是 unix 世界中传播最广泛的 shell 将不再允许您运行这样的 suid 脚本。它有一堆会阻碍你的虚拟检查。不确定tcsh。但是,考虑到大量的安全漏洞(读取环境变量和修改程序,利用没有显式路径运行的程序(即 export PATH=.:$PATH;ln -s /bin/bash ls;./ run-script-that-uses-ls-without-specifying-bin-ls') .. 强烈且一致地建议所有脚本作者不要使用 SUID 脚本,除非您真的知道自己在做什么。
    • 嗯,我明白了。说,@Rabin,你的脚本是做什么的?为什么需要root模式呢?
    • @Chris the root:root 工作,但权限仍然被拒绝。我正在使用 Minix3。这会是个问题吗?
    猜你喜欢
    • 1970-01-01
    • 2020-05-25
    • 2015-03-06
    • 1970-01-01
    • 2021-10-30
    • 2017-07-28
    • 2023-03-31
    • 2021-02-26
    • 2012-06-10
    相关资源
    最近更新 更多