在这个特定的Linux服务器上,我们有一个目录,人们可以在其中添加某些文件,我们希望这些文件由特定的用户所有,由特定的组编辑,并且不对公众可见。现在,我要做的是偶尔从命令行运行sudo chown this_user:that_group /foo/bar/*.ext; sudo chmod 750 /foo/bar/*.ext
。我更希望我能把它变成一个其他用户可以调用的命令行程序,包括那些没有sudo
访问权限的用户。想象一个名为/usr/bin/fixpermissions
的程序,它将运行上面的chown
和chmod
命令并返回成功消息。
我应该如何编写这个脚本,这样它就不会要求sudo部分的密码?我如何让其他用户可以使用它(将它放在/usr/bin/
中是否足够或合适(?
这与其说是一个"如何编写脚本";,而是";如何通过sudo
使其可用";。
脚本的规范位置是/usr/local/bin
。。。
为了实现";作为sudo w/o密码执行";我会创建一个单独的sudoers文件:
sudo visudo -f /etc/sudoers.d/fixpermissions
具有以下内容:
%group ALL = NOPASSWD: /usr/local/bin/fixpermissions
很明显,可以调整文件和组的名称,以匹配您的个人偏好和现有设置。
小心创建上面的sudoers文件,使用visudo以外的其他方法-如果保存了一个有语法错误的文件,你可能会把自己锁在盒子外(visudo会在退出时检查它的有效性,并提示你修复它(。