su

su [-lm] [-c 指令 ] [username]
选项与参数 :
- : 单纯使用 - 如『 su - 』 以 login-shell 变量档案读取方式登入系统 ; 默认切换为 root
-l : 与 - 类似 login-shell
-m :-m 与 -p 一样 , 表示『使用目前的环境设定 , 而不读取新使用者的配置文件』
-c : 接指令

总结:

  1. su - username 或 su -l username 完整切换成新使用者的环境 用 env 查看环境变量 PATH/USER/MAIL
  2. su - -c " 指令 " 仅想要执行一次 root 的指令
  3. 使用 root 切换成为任何使用者时 , 不需要输入新用户密码
  4. 缺点:当主机多人管理时, su 切换成 root ,那每个人都需要知道 root 密码,不安全。

sudo

sudo [-u user name | #uid] [command]

sudo 执行流程

  1. 在 /etc/sudoers 档案中查看 user 是否有 sudo 执行权限
  2. 若有 sudo 执行权限 , 『输入用户的密码』
  3. 密码正确 , 开始执行 sudo 后续接的指令
  4. root 无需密码,自己切换自己也无需密码

添加用户 sudo 执行权限的方法

(如何让用户可以使用 sudo ?)

  1. visudo 可以让系统检验 /etc/sudoers 的语法是否正确
  2. 修改 /etc/sudoers 中的语法

1 )单一用户可使用 root 所有指令或某些指令

root 		ALL=(ALL) 	ALL <== 找到这一行 ,rh6 在 98 行
username 	ALL=(ALL) 	ALL <== 新增这一行
username 	ALL=(root) 	/bin/touch<== 新增这一行

语法解释:

使用者账号 登入者的来源主机名 =( 可切换的身份 ) 可下达的指令

root ALL=(ALL) ALL <== 这是默认值

  1. 使用者帐号:系统哪个帐号可以使用 sudo
  2. 登入者的来源主机名:信任用户 默认 root 可来自任何一部网络主机
  3. 可切换的身份:该账号可以切换成谁来下命令 , 末日 root 可以切换成任何人
  4. 可下达的指令:可用该身份下达什么指令。必需使用绝对路径 ( 可通过 which\whereis 查询 )
  5. ALL : 是特殊关键词 , 代表任何身份、任何主机、任何命令

2 )群组和免密码的功能处理

%wheel ALL=(ALL) ALL<== 找到这一行 ,rh6 在 105 行
%wheel ALL=(ALL) NOPASSWD: ALL<== 找到这一行 ,rh6 在 108 行

语法解释:

  1. % 接群组
  2. wheel 群组内的用户有使用 sudo 的权限,并可以切换成任何人,执行切换后身份的任何命令
  3. wheel 群组内的用户切换用户时不需要输入自己的密码

3)有限的权限操作

dabao ALL=(root) /usr/bin/passwd <== 有 bug , dabao 能修改 root 密码
dabao ALL=(root) !/usr/bin/passwd, /usr/bin/passwd [A-Za-z]*,!/usr/bin/passwd root<== 可以执
行『 passwd 任意字符』 , 但是『 passwd 』和『 passwd root 』这两个命令不可执行

4 )别名设置 visudo

User_Alias DABAO=dabao,jerry,tom,g1,g2,g3
Cmnd_Alias DABAOCOM = !/usr/bin/passwd,/usr/bin/passwd [A-Za-z]*,!/usr/bin/passwd root
DABAO ALL=(root) DABAOCOM
  1. sudo 搭配 su 使用
username ALL=(root) /bin/su -
sudo su - <==sudo -u root su -l root

可以直接切换成 root 用户,而且不需要输入 root 密码

6 ) 5 分钟内可以不用再输入密码。