我写了一个shell脚本(这个)来启动一个新的网站项目。它必须由一个用户执行(他是否获得 root 权限并不重要,因为这个用户就是我)。
如您所见,用户必须能够:
- 编辑
/etc/hosts
; - 添加新文件到
/etc/apache2/sites-available/
; /var/www/
在;中创建一个新目录(带有 ln)- 执行
a2ensite
命令; - 执行
service apache2 reload
命令;
所有这些操作都需要以 root 身份执行。但是是否可以向普通用户授予执行此操作的权限?为此,我是否需要更改该文件的所有者或用户组或两者,我该如何执行此操作?
答案1
这通常是使用 完成的sudo
。在现代系统上,您可以添加文件来/etc/sudoers.d
添加新权限。
# Rules for running am apache script.
User_Alias APACHE = yourUser
Cmnd_Alias APACHE = /usr/local/sbin/your_script
APACHE ALL = NOPASSWD: APACHE
鉴于您是用户,您可能希望将您的帐户添加到/etc/sudoers
为管理员定义的组中。在 Debian 或 Ubuntu 系统上,这是admin
.其他发行版使用不同的值。这是 Ubuntu 对管理员组的定义。
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
sudo
附带详细的手册页。您可能需要查看sudo
、sudoers
和的手册页visudo
。如果您已对手册页建立索引,则可以使用命令获取 sudo 相关手册页的列表man -k sudo
。