sudo详解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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账户的权限了。

[[email protected] ~]# su test

[[email protected] root]$ ls

ls:无法打开目录。:权限不够

[[email protected] ~]# 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账户。下面是具体的配置:

[[email protected] ~]# 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账户的所有权利。

[[email protected] ~]# su - test

[[email protected] ~]$ sudo su -

[[email protected] ~]# 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服务:

[[email protected] ~]# service sshd restart


本文出自 “12350027” 博客,谢绝转载!

以上是关于sudo详解的主要内容,如果未能解决你的问题,请参考以下文章

sudo详解

sudo详解

sudo详解

sudo命令详解

sudo命令详解

sudo 详解