问题:
reboot、shutdown、init、halt、user管理,在普通用户身份上都是操作不了,但是有些特殊的情况下又需要有执行权限。又不可能让root用户把自己的密码告诉普通用户,这个问题how to 解决?
答:
可以使用sudo命令(su do:切换用户操作)。
sudu可以让管理员root事先定义某些特殊命令,和谁可以执行。
默认sudo中是没有除root之外用户的规则,要想使用,需要先配置sudo
-
sudo配置文件路径: /etc/sudoers
a.配置sudo文件,请使用命令:#visudo , 打开之后使用方式和vim一样; b.配置普通用户的权限
字段含义:
root:表示用户名,如果是用户组,则写成:%组名,
举例:
All:表示允许登录的主机(地址白名单)
(All):表示以谁的身份执行,这里All表示root身份
All:表示当前用户可以执行的命令/权限,多个命令时可以使用“,”分割
PS:
2. 在写sudo规则的时候,不建议写直接形式的命令,而是写命令的完整路径!
路径可以使用which命令查看:
语法:#which 指令名称
查询结果:
3. 在添加好对应的规则之后,就可以切换到普通用户(test)了。此时再去执行,报错:
此时要想使用刚才的规则,则需要命令:
#sudo 需要执行的指令
PS:在输入sudo指令后,需要输入当前用户的密码,进行确认的操作,输入之后五分钟之内,可以免密。
-
特别注意:此时test可以修改root用户,这是由于配置权限时权限给予过大,需要修正为:
ps: 禁止修改root密码的配置: /usr/bin/passwd/ [A-Za-z]*,!/usr/bin/passwd root
-
补充:在普通用户下,怎么查看自己具有哪些权限?
语法:#sudo -l
-
最后:
sudo不是任何linux分支都有的命令,常见的centos和ubuntu都存在sudo命令。