Linux系统之提权操作
- 来源:
- http://www.cnblogs.com/dplearning/p/6099426.html
- http://blog.csdn.net/xiaoputao0903/article/details/24230553
- http://www.jianshu.com/p/009e748db9e8
1、su
切换至XX用户,输入XX用户的密码。
用法:" su XX用户 "
【注】
1)su命令后不跟XX用户或只跟“ - ”,默认为root。
-
-
-
- 实际上单纯的" su “和” su - “是有区别的;
- ” su “切换用户至root,读取变量方式是 non-login shell,此时很多变量是不会变的,比如 当前路径(" pwd " )和PATH(" echo $PATH "),这会导致很多命令需要用绝对路径来执行,该方式只是切换到root身份。此时输入exit,显示exit。
- " su - "是login shell方式,即先以root身份登录然后再执行操作。此时输入exit,显示logout。
-
-
2)登录没有时间限制。
3)如果只是对一条命令执行root权限的,加" -c "即可。
4)多用户使用系统时,最好采用sudo提权,可以避免root密码泄露。
【选项】
1 -m,-p --presrve-environment 不重置环境变量 2 -g --group 指定主组 3 -G --supp-group 指定一个辅助组 4 5 -,-l --login 使 shell 成为登录 shell 6 -c --command 使用 -c 向 shell 传递一条命令 7 --session-command 使用 -c 向 shell 传递一条命令而不创建新会话 8 9 -f --fast 向 shell 传递 -f 选项(csh 或 tcsh) 10 -s --shell 若 /etc/shells 允许,则运行 shell 11 -h --help 显示此帮助并退出 12 -v --version 输出版本信息并退出
2、sudo
对命令执行root用户权限,输入当前用户密码。
用法:“ sudo XX命令 ”
【注】
1)sudo只是暂时提权,有时间限制。
2)使用sudo提权的用户必须在sudoers中才行,不然会提示" XX用户 is not in the sudoers file. This incident will be reported."。此时需要visudo命令修改/etc/sudoers文件。
3)sudo的执行流程:
① 当用户执行sudo时,系统于/etc/sudoers文件中查找该用户是否有执行sudo的权限;
② 若用户具有可执行sudo的权限,那么让用户输入用户自己的密码;(我觉得这里不太对,如果系统已经判断用户不是sudoers中的,那么应该是不会要用户输入密码才对,可是真实情况不是这样的,系统版本:CentOS Linux release 7.2.1511 (Core) )
1 [super@SuPer ~]$ sudo ls 2 [sudo] password for super: 3 super 不在 sudoers 文件中。此事将被报告。
③ 如果密码正确,开始执行命令。root执行sudo和切换身份和执行者用户身份相同时,都不要密码的。
【选项】
-b 在后台执行指令 -h 显示帮助 -H 将HOME环境变量设为新身份的HOME环境变量 -k 结束密码的有效期限,也就是下次再执行sudo时便需要输入密码 -l 列出目前用户可执行与无法执行的指令 -p 改变询问密码的提示符号 -s 执行指定的shell -u <用户> 以指定的用户作为新的身份。若不加上此参数,则预设以root作为新的身份 -v 延长密码有效期限5分钟 -V 显示版本信息。 来自: http://man.linuxde.net/sudo
3、visudo:edit the sudoers file
visudo其实就是打开/etc/sudoers文件,用的编辑器默认是vi,需要root权限。
【疑问】那么为什么不去直接打开该文件去编辑呢?
根据visudo的使用说明,如果你用visudo来编辑该文件,那么它会帮你自动做很多事情,比如语法检查、加锁防止别人同时修改该文件等等。
用法:root权限下输入" visudo "即可
【分析】
1)大约90+行处,出现 " root ALL=(ALL) ALL "或是" root ALL=(ALL:ALL) ALL "
① 意义1:"root"即为用户名,第一个"ALL"表示"From ALL hosts"(所有主机),指用户root从任何机器上登录,都可以应用后面的规则。(这里可以设置局域网网络或者指定网段)
② 意义2:第二个"ALL"表示" run as ALL user ",指用户root可以以任何用户的身份运行一些命令。可选,默认为root。
③ 意义3:第三个"ALL"表示" run as ALL groups ",指用户root可以以任何用户组的身份运行一些命令。可选,默认为root组。
④ 意义4:第四个"ALL"表示前面的规定适用于所有命令。
⑤ 总结:用户root可以从任何机器登录,以任何用户和用户组的身份来运行任何命令。
2)" %wheel ALL=(ALL) ALL "涉及到wheel组问题,类似于一个管理员的组,可以当成管理组的二当家。