Looyao's Blog

记录一些点滴

Sudo配置

| Comments

1、什么是sudo?

sudo可以让普通用户获得root权限来执行操作,而不需要知道root密码。sudo时需要键入的密码是执行的用户密码。

root权限来执行操作,相对还是比较危险的(当然作为管理员还是要认真、细心,清楚的知道每个命令执行的后果如何),一般的操作,并不需要root权限,当需要root权限时,sudo即可。

当然我认为比较有用的是,ssh禁止root登陆来加固系统安全,管理员以普通用户登陆时,可以用sudo来提升权限,su也可以,但是su不好的地方在于需要知道root密码。

2、配置

下边以CentOS为例。

1)、首先以root登陆,增加一个普通用户。

如:

1
2
[root@vm ~]# useradd testuser
[root@vm ~]# passwd testuser

2)、配置sudo,执行visudo命令,找到%wheel ALL=(ALL) ALL,去掉前边注释。

1
2
## Allows people in group wheel to run all commands
%wheel    ALL=(ALL)   ALL

3)、将testuser加入到wheel组

1
[root@vm ~]# usermod -aG wheel testuser

4)、测试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@vm ~]# su testuser
[testuser@vm root]$ groups
testuser wheel
[testuser@vm root]$ sudo whoami

We trust you have received the usual lecture from 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] password for testuser:
root

这样,testuser就拥有sudo权限了。

sudo可以配置每个用户可以执行的命令,但是,拥有sudo权限后,这种限制只是君子协定,通过sudo依然可以修改配置,给予普通用户sudo权限,那么他就是管理员了,所以第一次输入sudo时,那些信息提示就是说的大概这个意思。

5)、sudo执行的PATH可能不全,需要自定义的话,可以加入一行到~/.bashrc文件中,如要继承当前用户的PATH环境变量:

1
echo "alias sudo='sudo env PATH=\$PATH'" >> ~/.bashrc

6)、sudo后保持ssh agent,执行visudo,找到Defaults env_keep配置段,下边加入一行

1
Defaults    env_keep += "SSH_AUTH_SOCK"

参考:

1、https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux_OpenStack_Platform/2/html/Getting_Started_Guide/ch02s03.html

Comments