码迷,mamicode.com
首页 > 其他好文 > 详细

su和sudo

时间:2015-11-12 16:11:42      阅读:291      评论:0      收藏:0      [点我收藏+]

标签:sudo   su   

旨在阐述CentOS中 su和sudo命令的基本用法和区别


知识储备


1.Linux中通常不建议以root身份直接登陆,太危险了!然而以普通用户身份登陆,在某些时候又受到权限压制,su和sudo就是良好的解决方案;

2.su通常用来临时切换到某个用户身份,来执行一些指令;切换方式有完全切换、不完全切换;

3.sudo通常用来以某个用户身份来执行某些指令,执行完毕后登陆身份还是自身,即supper do!


Su命令精要


su切换方式:

(1) su -l root  完全切换:会重新读取新身份的私人配置文件,环境变量PATH等等;

(2) su root  不完全切换:不会重新读取;

正常情况下,切换到新身份后,会一直保持该身份运行着,除非使用exit命令退出新身份;


几个要点:

  1. 可以使用 su -c command root切换到root身份运行完指令command后自动退出root身份,这点和sudo有点类似哦,详情man su;

  2. 普通用户切换到任何用户都需要输入密码,只有root切换到普通用户无需密码;

  3. su -,su -l,su --login 都表示完全切换,会读取私人的小配置!


sudo命令精要


sudo的功能大致有:

(1)授权指定用户在指定主机上运行指定的命令『who、where、do what』

(2)详细记录用户基于sudo执行命令的相关日志信息

(3)sudo具有时效性认证:即用户第一次执行sudo会要求输入密码验证身份,这个凭据会保存一段时间,默认是5分钟,5分钟内不需要再次输入密码,“检票系统”


sudo命令:

 被授权用户应该以sudo命令来运行被授权运行的命令:

 su -  不加 默认是su到管理员,需要root密码

 sudo [OPTIONS] COMMAND

 sudo su -  无需管理员密码 哈哈,理解一下 挺有意思

   -l: 查看当前用户可执行的sudo命令;

   -k: 清除此前记忆下的“令牌”;

   -u USERNAME COMMAND:以指定用户运行COMMAND命令;


sudo的配置文件:/etc/sudoers

前面所说,sudo可以定义哪些用户,在哪些主机上,做哪些指令。这些定义其实保存在配置文件/etc/sudoers上,建议使用专用的编辑器编辑,即visudo命令『有语法检查等功能』


sudo配置文件语法


sudoers配置文件语法很简单,如下

技术分享

例如,指定普通用户centos,允许在任何主机上以root身份执行fdisk命令

技术分享


但是,如果要为多个用户、不同组用户指定授权,一条条添加是否显得太过麻烦呢?尤其是当一个用户可以通过sudo执行多条command命令的时候。其实可以使用 别名的方式 来授权,具体用法如下:

技术分享

例如,指定允许用户centos,用户组apache,允许在任何主机上以root身份执行fdisk,useradd系统管理命令,和wget,ifconfig等网络管理命令。那么该如何定义呢?

技术分享

几个要点:

  1. 别名的名字,必须而且一定是大写字符串 

  2. 别名之间可以相互嵌套,比如说User_Alias A = apache,B 这里的B是另外一个User_Alias

  3. 合理规划好别名,合理嵌套好别名!

  4. 前面提到sudo有“检票系统”,那么一个授权的命令究竟是否需要检票,是根据该命令的标签来决定的,比如下面

技术分享

这意味着centos这个用户通过sudo 可以在任何主机上以root身份运行fdisk命令(需要检票,出示一次票据后默认可以维持5分钟哦),而运行wget是无需出示票据的

5. 请注意,授权的CMD1 CMD2 这些可sudo执行的命令,建议使用绝对路径!

6. 使用visudo修改后配置文件后,立即生效


练习:


1、授权centos用户可以运行fdisk命令完成磁盘管理,以及使用mkfs或mke2fs实现文件系统管理;


授权前:

技术分享

修改sudo配置文件:

#visudo
centos  ALL=(root) /sbin/fdisk, /sbin/mkfs.ext4

授权后:

技术分享

技术分享


2、授权gentoo用户可以运行逻辑卷管理的相关命令;

和逻辑卷相关的命令有

显示相关pvs、vgs、lvs

扫描相关pvscan、vgscan、lvscan

创建相关pvcreate、vgcreate、lvcreate


编辑sudo配置文件:

#visudo
Cmnd_Alias VGCMDS= /sbin/pvs, /sbin/vgs, /sbin/lvs, /sbin/pvscan, /sbin/vgscan, /sbin/lvscan, /sbin/pvcreate, /sbin/vgcreate, /sbin/lvcreate
centos ALL=(root) VGCMDS

技术分享这里遇到的一些问题:

  1. 在定义Cmnd_Alias时,我尝试了/sbin/{vgs,lvs}的写法,发现不能识别,失败!

  2. 在验证的时候,总是不成功,最后发现没有清空凭据,sudo -k

  3. 调查发现vgs、lvcreate等等VG相关命令,其实本质都是指向/sbin/lvm的软链接,但是无需授权/sbin/lvm 也是可以执行这些VG指令的

本文出自 “蓝色仓库” 博客,请务必保留此出处http://bluebox.blog.51cto.com/8852456/1712126

su和sudo

标签:sudo   su   

原文地址:http://bluebox.blog.51cto.com/8852456/1712126

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!