su
su [-lm] [-c 指令 ] [username]
选项与参数 :
- : 单纯使用 - 如『 su - 』 以 login-shell 变量档案读取方式登入系统 ; 默认切换为 root
-l : 与 - 类似 login-shell
-m :-m 与 -p 一样 , 表示『使用目前的环境设定 , 而不读取新使用者的配置文件』
-c : 接指令
总结:
- su - username 或 su -l username 完整切换成新使用者的环境 用 env 查看环境变量 PATH/USER/MAIL
- su - -c " 指令 " 仅想要执行一次 root 的指令
- 使用 root 切换成为任何使用者时 , 不需要输入新用户密码
- 缺点:当主机多人管理时, su 切换成 root ,那每个人都需要知道 root 密码,不安全。
sudo
sudo [-u user name | #uid] [command]
sudo 执行流程
- 在 /etc/sudoers 档案中查看 user 是否有 sudo 执行权限
- 若有 sudo 执行权限 , 『输入用户的密码』
- 密码正确 , 开始执行 sudo 后续接的指令
- root 无需密码,自己切换自己也无需密码
添加用户 sudo 执行权限的方法
(如何让用户可以使用 sudo ?)
- visudo 可以让系统检验 /etc/sudoers 的语法是否正确
- 修改 /etc/sudoers 中的语法
1 )单一用户可使用 root 所有指令或某些指令
root ALL=(ALL) ALL <== 找到这一行 ,rh6 在 98 行
username ALL=(ALL) ALL <== 新增这一行
username ALL=(root) /bin/touch<== 新增这一行
语法解释:
使用者账号 登入者的来源主机名 =( 可切换的身份 ) 可下达的指令
root ALL=(ALL) ALL <== 这是默认值
- 使用者帐号:系统哪个帐号可以使用 sudo
- 登入者的来源主机名:信任用户 默认 root 可来自任何一部网络主机
- 可切换的身份:该账号可以切换成谁来下命令 , 末日 root 可以切换成任何人
- 可下达的指令:可用该身份下达什么指令。必需使用绝对路径 ( 可通过 which\whereis 查询 )
- ALL : 是特殊关键词 , 代表任何身份、任何主机、任何命令
2 )群组和免密码的功能处理
%wheel ALL=(ALL) ALL<== 找到这一行 ,rh6 在 105 行
%wheel ALL=(ALL) NOPASSWD: ALL<== 找到这一行 ,rh6 在 108 行
语法解释:
- % 接群组
- wheel 群组内的用户有使用 sudo 的权限,并可以切换成任何人,执行切换后身份的任何命令
- 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
- sudo 搭配 su 使用
username ALL=(root) /bin/su -
sudo su - <==sudo -u root su -l root
可以直接切换成 root 用户,而且不需要输入 root 密码
6 ) 5 分钟内可以不用再输入密码。