sudo命令

"不以%号开头的表示"将要授权的用户",比如root;以%号开头的表示"将要授权的组", 比如%wheel组 和 %sudo组

让普通用户能以root身份执行命令

echo 'passwd' | sudo -S cd /root/

限制用户只能使用指定命令

vi /etc/sudoers # 或者直接执行visudo命令编辑
root ALL=(ALL:ALL) ALL
username ALL=/usr/bin/ls

# 表示user1用户可以在本地以root的身份去执行kill命令,多条命令用逗号分隔
# 注意: 命令必须是完整的路径
user1 localhost=(root)  /bin/kill,/bin/id


# NOPASSWD后面带有冒号:。该配置表示执行sudo时可以不需要输入密码。
test ALL=(ALL) NOPASSWD: /bin/useradd

# 用户可以执行passwd程序,但是不能修改root密码,在命令前面加上叹号表示不能执行该程序。
user01 localhost=(root) NOPASSWD:/usr/bin/passwd,!/usr/bin/passwd root

# 允许user以sudo不输入密码的方式执行pqsswd,svn,但禁用使用sudo rm 删除任何文件
user ALL=(ALL) NOPASSWD:/usr/bin/passwd,/usr/bin/svn, !/usr/bin/rm *

# 用户可以在本机上无密码执行/usr/local/bin/python,有密码执行kill命令
user01  localhost=(root)  NOPASSWD:/bin/more PASSWD:/bin/less

test ALL=(ALL:ALL) NOPASSWD: /bin/useradd 在sudoers文件中,ALL=(ALL)指定了执行命令的权限范围和身份验证的类型。 第一个ALL表示允许用户在任何主机上执行命令。 (ALL)指定了用户可以使用sudo来切换到任何用户。第一个ALL表示可以切换到任何用户,第二个ALL表示可以切换到任何组。 因此,test ALL=(ALL)意味着用户test可以在任何主机上以任何用户身份执行sudo命令。

最后更新于