sudo命令与su命令解析
sudo命令
我们平时用低权限账号在使用一些高权限命令时,经常会提示Permission denied,一般人可能会切换到高权限账号后再使用高权限命令。实际上,我们可以在使用的命令前加上"sudo" 来提升权限使用命令。
sudo 表示 "superuser do"。 它允许已验证的用户以其他用户的身份来运行命令。其他用户可以是普通用户或者超级用户。然而,大部分时候我们用它来以提升的权限来运行命令
既然可以切换账号以使用高权限命令,为何还要使用sudo呢?我直接使用root账号登陆不就行。
首先root账号拥有最高权限,没有任何限制,可以删除整个系统的大部分文件,如果使用不当很容易造成系统损坏,或者文件损坏,所以不推荐直接使用root账号。
其次是为了安全,root账号的密码只有最高管理员才能知道,要是每个人都知道很不安全。
那么应该怎么办呢?sudo命令正是为了解决这个问题,虽然你不知道root账号的密码,但是当你需要root账号的权限来完成一些命令时,就可以使用sudo命令了。但是并不是说所有的低权限账号都可以使用高权限命令或者说所有的高权限命令,如果真是这样的话,那低权限账号和高权限账号也没有任何区别了。
sudo命令是只有在/etc/sudoers中的用户才有资格使用sudo命令来完成root账户才能使用的权限
#举个例子
#使用root创建文件
[root@zabbix-01 ~]# mkdir /test
[root@zabbix-01 ~]# touch /test/aaa
#使用liang用户尝试删除,提示没有权限
[liang@zabbix-01 ~]$ rm -rf /test/aaa
rm: cannot remove ‘/test/aaa’: Permission denied
#使用sudo命令,但是/etc/sudoers中没有这个用户,会提示错误
[liang@zabbix-01 ~]$ sudo rm -rf /test/aaa
[sudo] password for liang:
liang is not in the sudoers file. This incident will be reported.
下面举例将liang这个账号添加到/etc/sudoers中
#1,切换到root用户下:su – root
#2,给/etc/sudoers文件添加写权限 :chmod u+w /etc/sudoers
#3,编辑/etc/sudoers文件,给普通用户添加使用sudu的的权限:vim /etc/sudoers
#4,找到这行:root ALL=(ALL) ALL, 在这行下面添加 xxx ALL=(ALL) ALL (这里的xxx就是你的普通用户)
#这里解释一下,sudoers下面添加普通用户可以使用sudo命令的格式:
#wangpeng ALL=(ALL) ALL :普通用户wangpeng可以使用sudo命令,但是需要密码
#这里注意!如果想限制只能sudo指定命令时,命令所在的目录要正确
#wangpeng zabbix-01=(root) /bin/ls,/bin/netstat:表示wangpeng用户可以在zabbix-01主机以root的用户身份执行ls与netstat命令
#%java ALL=(ALL) ALL 用户组java的用户可以使用sudo命令,但是需要密码
#wangpeng ALL=(ALL) NOPASSWD:ALL 普通用户wangpeng可以使用sudo命令,不需要密码
#%java ALL=(ALL) NOPASSWD:ALL 用户组java的用户可以使用sudo命令,不需要密码
#wangpeng ALL=(ALL) NOPASSWD: /bin/ls,/bin/netstat 设置 sudo 指定命令时不需要输入密码
#添加完之后,保存退出
#去除root用户对sudoers文件的写权限:chmod u-w /etc/sudoers
添加好sudo后,再次尝试删除指定文件
[liang@zabbix-01 ~]$ rm -f /test/aaa
rm: cannot remove ‘/test/aaa’: Permission denied
[liang@zabbix-01 ~]$ sudo rm -f /test/aaa
[sudo] password for liang:
[liang@zabbix-01 ~]$ ls /test/
#提示删除成功
su命令
su命令比sudo少了一个do,但是意义是完全不一样的,su表示"swith user",命令用于变更为其他使用者的身份,除 root 外,需要键入该使用者的密码