【问题标题】:Make a shell script with sudo-level operations accessible to others使其他人可以访问具有 sudo 级别操作的 shell 脚本
【发布时间】:2021-01-05 08:21:24
【问题描述】:

在这个特定的 Linux 服务器上,我们有一个目录,人们可以在其中添加某些文件,并且我们希望这些文件归特定用户所有,可由特定组编辑,并且不向公众展示。现在,我要做的就是偶尔从命令行运行sudo chown this_user:that_group /foo/bar/*.ext; sudo chmod 750 /foo/bar/*.ext。如果我能把它变成一个命令行程序,其他用户可以调用,包括那些没有sudo 访问权限的用户,我会更愿意。想象一个名为/usr/bin/fixpermissions 的程序将运行上述chownchmod 命令并返回成功消息。

我应该如何编写这个脚本,这样它就不会要求输入 sudo 部分的密码?以及如何将其提供给其他用户(将其放在 /usr/bin/ 中是否足够或合适)?

【问题讨论】:

    标签: linux bash sudo


    【解决方案1】:

    这不是“如何编写脚本”的问题,而是“如何通过sudo 使其可用”的问题。

    脚本的规范位置是/usr/local/bin ...

    为了实现“作为 sudo 无密码执行”,我将创建一个单独的 sudoers 文件:

    sudo visudo -f /etc/sudoers.d/fixpermissions
    

    内容如下:

    %group ALL = NOPASSWD:  /usr/local/bin/fixpermissions
    

    显然调整文件和组的名称以匹配您的个人偏好和现有设置。

    小心使用 visudo 以外的其他方式创建上面的 sudoers 文件 - 如果保存有语法错误的文件,您最终可能会将自己锁定在开箱之外(visudo 将在退出时检查它的有效性并提示您修复如果它很无聊)。

    【讨论】:

    • 感谢您的回答。虽然这可以完成工作,但我希望有一个不同的解决方案。让我解释。当我从 Linux 存储库安装软件包时,该程序将有权运行通常需要 sudo 访问的操作。显然,我在安装时使用 sudo ;但在那之后,程序(例如守护程序)可以执行管理操作,而无需每次都需要密码。这是如何实现的?如何将我的 bash 脚本变成可以在 Linux 上“安装”的包,或者即使不打包也能复制这种效果?
    猜你喜欢
    • 1970-01-01
    • 2019-12-18
    • 2016-11-26
    • 2021-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多