su和sudo

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


知识储备centos


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

2.su一般用来临时切换到某个用户身份,来执行一些指令;切换方式有彻底切换、不彻底切换;网络

3.sudo一般用来以某个用户身份来执行某些指令,执行完毕后登录身份仍是自身,即supper do!编辑器


Su命令精要ide


su切换方式:
3d

(1) su -l root  彻底切换:会从新读取新身份的私人配置文件,环境变量PATH等等;日志

(2) su root  不彻底切换:不会从新读取;blog

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


几个要点:

  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配置文件语法很简单,以下

wKioL1ZEGj2TzUZGAAApPysW0-s939.png

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

wKioL1ZEG8DzD5_pAABHOs0SKrQ922.png


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

wKioL1ZEIOzDGLYGAAGcMkM1z0Y910.png

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

wKioL1ZEIrOid0g5AAA7lUvwIA0989.png

几个要点:

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

  2. 别名之间能够相互嵌套,好比说User_Alias A = apache,B 这里的B是另一个User_Alias

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

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

wKiom1ZEI93DJhKYAAAP2ZA7B6Y047.png

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

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

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


练习:


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


受权前:

wKioL1ZEJojDz_wrAAArPHoyVPE305.png

修改sudo配置文件:

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

受权后:

wKiom1ZEK3qxXmRLAABHzKNmEMc465.png

wKioL1ZEK7DRmM52AABtFXnQoIw239.png


二、受权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

wKioL1ZEL-WTFbgoAAAvGYoGRCA170.png这里遇到的一些问题:

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

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

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

相关文章
相关标签/搜索