标签:sudo
sudo详解
sudo执行一个root才能执行的命令,但需要输入用户自己的密码。
用su可以切换用户身份,而且每个普通用户都能切换到root身份。如果某个用户不小心泄露了root的密码,那岂不是系统非常的不安全?没有错,为了改进这个问题,Linux系统工程师设计了sudo这个命令。使用sudo执行一个root才能执行的命令是可以办到的,但是需要输入用户自己的密码。这个密码并不是root的密码而是用户自己的密码。
默认只有root用户能使用sudo命令,普通用户想要使用sudo,是需要root预先设定的。
我们可以使用visudo命令去编辑相关的配置文件/etc/sudoers。如果没有visudo这个命令,请使用命令yum install -y sudo安装。
默认root能够sudo,是因为这个文件中有一行“root ALL=(ALL) ALL”。在该行下面加入“test ALL=(ALL) ALL"就可以让test用户拥有了sudo的权利。这一行可以说是核心配置,该配置分为三部分左边的ALL其实是一个用户名,即,test用户可以切换到哪个用户的身份,如果是ALL就表示所有用户。小括号里面指定主机名或者主机IP,即,test用户从哪个IP登录来的,ALL就是所有。最后面的那个ALL,用来指定test用户可以使用的命令都有哪些,ALL就是全部命令都可以。如果是多个命令,用英文逗号隔开。使用“visudo”命令编辑/etc/sudoers配置文件,其实它的操作方法和前面介绍的“vi”命令使用方法是一样的,按 i 进入编辑模式,编辑完成后,按“ESC”,在输入:wq完成保存。该配置文件
##Allow root to run any commands anywhere
root ALL=(ALL) ALL
test ALL=(ALL) ALL
此时可以验证一下test账户的权限了。
[root@qiangzi ~]# su test
[test@qiangzi root]$ ls
ls:无法打开目录。:权限不够
[root@qiangzi ~]# sudo ls
We tyust you have received the usual lecture the local System
Administrator. It usually boils down to these three things:
#1) Respect the privacy of others
#2)Think before you type.
#3)With great power comes great responsibility.
[sudo]passwd for test:
123 456 789 anaconda-ks.cfg dira dirb install.log install.log.syslog
由于切换到test账户后的当前目录依旧在/root下,test账户没有任何权限,所以 ls的时候提示说权限不够。然而使用sudo ls 输入test账户自身的密码后就有权限了。初次使用sudo时会有上面的一大段提示,而后再次使用sudo命令则不再提示。
如果每增加一个用户就设置一行,这样太麻烦了。所以我们可以这样设置。把“#%wheel ALL=(ALL)ALL”前面的#去掉,让这一行生效。他的意思是,wheel这个组的所有用户都拥有了sudo的权利。接下来需要把想让有sudo权利的所有用户加入到wheel这个组中即可。
##Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
配置文件/etc/sudoers包含了诸多配置项,可以使用命令man sudoers来获得帮助信息。
下面介绍一个很实用的案例,我们的需求是吧Linux服务器设置成这个样子:
只允许使用普通账户登录,而普通账户登录后,可以不输入密码就能sudo切换到root账户。下面是具体的配置:
[root@qiangzi ~]# visudo
然后在文件的最后面加入三行:
User_Alias USER_SU = test,tset1,qiangge
Cmnd_Alias SU =/bin/su
USER_SU ALL=(ALL) NOPASSWD:SU
保存配置文件后,使用test、test1、qiangge三个账户登录Linux。执行命令“sudo su -”切换到root账户,获取root账户的所有权利。
[root@qiangzi ~]# su - test
[test@qiangzi ~]$ sudo su -
[root@qiangzi ~]# whoami
root
不让root直接登录,这个问题如何做呢?其实很简单,设置一个非常复杂连自己都记不住的密码。不过这样也有一个问题,就是普通用户可以su到root,然后他在自己修改简单的密码就能直接root登录了不是吗?的确有这个问题,其实还有一个更好的办法。
不允许root远程登录Linux
注意:这个方法只适用于通过ssh远程登录Linux的时候,修改配置文件/etc/sshd/sshd_config,在文件中查找“#permitRootLogin yes”这句话,修改为“permitRootLogin no”。它表示不允许root用户远程登录。
/etc/sshd/sshd_config为sshd服务器的配置文件,默认允许root账户通过ssh远程登录Linux。要想不让root登录,修改为no就可以了。保存配置文件后,需要重启sshd服务:
[root@qiangzi ~]# service sshd restart
本文出自 “12350027” 博客,谢绝转载!
标签:sudo
原文地址:http://12360027.blog.51cto.com/12350027/1934528