如果希望非 root 用户可以执行需要 root 权限的命令,可以将命令加入到 /etc/sudoers,然后通过 sudo cmd 执行
sudoers 内容的格式如下
授权用户/组 主机=[(切换到哪些用户或组)] [是否需要输入密码验证] 命令1, [(切换到哪些用户或组)] [是否需要输入密码验证] 命令2, ...
- 授权用户/组:以 % 开头表示要授权的组,比如 %admin 表示授权给 admin 组,不以 % 开头表示要授权的用户,比如 spark 表示授权给 spark 用户
- 主机:表示允许登陆的主机,ALL 表示所有主机
- [(切换到哪些用户或组)]:如果省略,相当于 (root:root),如果为 (ALL) 或者 (ALL:ALL),表示能够提权到(任意用户:任意用户组)
- [是否需要输入密码验证]:默认需要密码,如果要免密码,填 NOPASSWD:,注意 NOPASSWD 后面要带冒号
- 命令:允许 sudo 执行的命令,使用全路径,ALL 表示可以执行所有命令
例子
%admin ALL=(ALL) ALL
%admin mycomputer = (root:root) NOPASSWD: ALL
spark ALL = ALL
spark ALL = NOPASSWD: /etc/init.d/apache2
spark ALL = /etc/init.d/apache2, (root:root) NOPASSWD: /etc/init.d/docker