扩展:

sudo与su比较 http://www.apelearn.com/bbs/thread-7467-1-1.html

sudo配置文件样例  www.opensource.apple.com/source/sudo/sudo-16/sudo/sample.sudoers

sudo不错的教程 http://www.jianshu.com/p/51338e41abb7

sudo -i 也可以登录到root吗? http://www.apelearn.com/bbs/thread-6899-1-1.html

3.7 su命令

1. 切换普通用户:su - 普通用户

[root@hao-01 ~]# su - haojiabin

2. 查看当前登录用户

[haojiabin@hao-01 ~]$ whoami

3. 创建普通用户,但不创建用户夹目录:useradd -M 普通用户名

[root@hao-01 ~]# useradd -M hao

4. 查看home目录下(home目录下是 存放普通用户夹目录):

[root@hao-01 hao]# ls /home

普通用户在home下没有对应的夹目录,不能正常用su - 切换到普通用户下

5. 切换没有夹目录的普通用户下:

[root@hao-01 hao]# su - hao

有夹目录,夹目录没有配置文件也不能正常访问!

6. home目录下,创建普通用户夹目录 :

[root@hao-01 hao]# mkdir /home/hao

7. 拷贝.bash开头的配置文件到用户夹目录下:

      命令使用:   cp /etc/skel/.bash* 普通用户夹目录

[root@hao-01 ~]# cp /etc/skel/.bash* /home/hao

8. 指定:用户夹目录所有者所属组

     命令使用:   chown -R 所有者:所属组  夹目录

[root@hao-01 ~]# chown -R hao:hao /home/hao/

9. 切换普通用户命令: su - 普通用户名

[root@hao-01 ~]# su - hao

3.8 sudo命令

1. 给普通用户添加root权限命令visudo

[root@hao1 ~]# visudo

root用户下,用visudo给普通用户添加root的权限命令,格式如下图

内容行数显示:一般模式下输入 :set nu

写入格式:此目的是:给普通用户授权root用户才可以使用的一些相应命令

普通用户    ALL=(root)    ALLroot下命令的绝对路径

3.7 su命令;3.8 sudo命令;3.9 限制root远程登录_限制root远程登录_03

2. 切换至普通用户下:

[root@hao-01 ~]# su - hao

3. 在普通用户下,运行 ls 查看/root/目录,是没有权限的!!!

[hao@hao-01 ~]$ ls /root/

3.7 su命令;3.8 sudo命令;3.9 限制root远程登录_限制root远程登录_05

4. 在普通用户下,运行:

sudo命令执行ls绝对路径命令文件,查看/root/目录:

提示:执行的ls命令,可以绝对路径,也可不用绝对路径!!!

[hao@hao-01 ~]$ sudo /usr/bin/ls /root/

3.7 su命令;3.8 sudo命令;3.9 限制root远程登录_限制root远程登录_07

5. 在普通用户下,运行:

sudo命令执行cat绝对路径命令文件,查看/root/下文件内容

提示:执行的cat命令,可以绝对路径,也可不用绝对路径!!!

[hao@hao-01 ~]$ sudo /usr/bin/cat  /root/1.txt

3.7 su命令;3.8 sudo命令;3.9 限制root远程登录_限制root远程登录_09

运行sudo命令,免输入普通用户密码:

1. 给普通用户添加root权限命令,同时设定不用输入普通用户密码,即可运行sudo命令:

[root@hao1 ~]# visudo

写入格式:此目的是:普通用户运行sudo命令,不用输入普通用户密码ALL=root全部

普通用户   ALL=(root)      NOPASSWD:  ALL

3.7 su命令;3.8 sudo命令;3.9 限制root远程登录_限制root远程登录_11

2. 切换至普通用户下:

[root@hao-01 ~]# su - hao1

3. 在普通用户下,运行:sudo命令执行ls命令,查看/root/目录:

[hao@hao-01 ~]$ sudo ls /root/

3.7 su命令;3.8 sudo命令;3.9 限制root远程登录_限制root远程登录_13

1. 设定别名命令可包含多个root权限才可执行的命令:

[root@hao1 ~]# visudo

写入格式:此目的是:设定,别名命令,可包含多个root权限命令

Cmnd_Alias HAO_CMD = /usr/bin/ls,  /usr/bin/mv, /usr/bin/cat

3.7 su命令;3.8 sudo命令;3.9 限制root远程登录_限制root远程登录_15

2. 给普通用户添加root权限命令,同时设定不用输入普通用户密码,即可运行sudo命令:

[root@hao1 ~]# visudo

写入格式:此目的是:给普通用户授权别名命令中,包含的所有命令

普通用户   ALL=(root)      NOPASSWD: HAO_CMD

3.7 su命令;3.8 sudo命令;3.9 限制root远程登录_限制root远程登录_17

3. 切换至普通用户下:

[root@hao-01 ~]# su - hao1

4. 因别名命令(HAO_CMD)包含:ls,mv,cat 命令,

设定的普通用户下,可以用sudo 执行这些(ls,mv,cat)命令!

[root@hao-01 ~]# sudo ls   /root/

[root@hao-01 ~]# sudo mv  /root/1.txt  2.txt

[root@hao-01 ~]# sudo cat /root/2.txt

3.9 限制root远程登录

多个普通用户设定为一个Alias,相当于用户组的作用:

1. 设定普通用户的Alias(别名,可包含多个用户)

[root@hao-01 ~]# visudo

写入格式: User_Alias 定义别名S = 普通用户,普通用户1,普通用户2

                  User_Alias HAOS = hao,hao1,hao2

3.7 su命令;3.8 sudo命令;3.9 限制root远程登录_限制root远程登录_19

2. 给包含普通用户的别名,设定root用户才可执行的超级管理权限命令:

[root@hao-01 ~]# visudo

写入格式: 包含多个用户的别名S   ALL=(root)      NOPASSWD: HAO_CMD

                   HAOS   ALL=(root)      NOPASSWD: HAO_CMD

作用:用户别名包含多个普通用户,所设置的root命令使用权限是统一 一样的!

3.7 su命令;3.8 sudo命令;3.9 限制root远程登录_限制root远程登录_21

3. 切换至普通用户(hao hao1 hao2):

[root@hao-01 ~]# su - hao

[root@hao-01 ~]# su - hao1

[root@hao-01 ~]# su - hao2

4. 用户别名:包含的普通用户,设置定的权限是一样的!

限制root远程登录

1. 修改sshd.service配置文件,设定限制root远程登录

[root@hao-01 ~]# vi /etc/ssh/sshd_config

#PermitRootLogin yes 改成: PermitRootLogin no

3.7 su命令;3.8 sudo命令;3.9 限制root远程登录_限制root远程登录_23

2. 重启sshd.service服务:

[root@hao-01 ~]# systemctl restart sshd.service

3. 再用远程软件,登录root用户,已经不许登录了!!!

3.7 su命令;3.8 sudo命令;3.9 限制root远程登录_限制root远程登录_25