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         输出版本信息并退出
View Code

 

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 文件中。此事将被报告。
View Code

         ③ 如果密码正确,开始执行命令。root执行sudo和切换身份和执行者用户身份相同时,都不要密码的。

    【选项】       

-b                在后台执行指令
-h                显示帮助
-H                将HOME环境变量设为新身份的HOME环境变量

-k                结束密码的有效期限,也就是下次再执行sudo时便需要输入密码
-l                 列出目前用户可执行与无法执行的指令
-p                改变询问密码的提示符号 
-s                执行指定的shell

-u <用户>    以指定的用户作为新的身份。若不加上此参数,则预设以root作为新的身份
-v                延长密码有效期限5分钟
-V               显示版本信息。

来自: http://man.linuxde.net/sudo 
View Code

 

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组问题,类似于一个管理员的组,可以当成管理组的二当家。

 

posted @ 2017-10-02 11:21  Super芃QAQ  阅读(534)  评论(0编辑  收藏  举报