Linux文件权限与属性详解 之 su & sudo
Linux文件权限与属性详解 之 一般权限
Linux文件权限与属性详解 之 ACL
Linux文件权限与属性详解 之 SUID、SGID & SBIT
Linux文件权限与属性详解 之 chattr & lsattr
Linux文件权限与属性详解 之 su & sudo
前言
当我们建立了一个项目组,项目组的普通用户对项目文件进行维护,时常会执行一些命令(如 chmod, chattr等),然而,普通用户被没有权限去执行这些命令,这个时候就需要求助root;但是,通常root用户为该项目的PM,PM往往有很多事情要处理,根本没有时间去时时刻刻响应用户的请求,这个时候就产生了矛盾!
怎么办呢?这个时候,两种解决办法:
- su :直接进入到
root角色(这个需要有root的密码) - sudo :将普通用户在执行某个命令时,暂时升级为
root,执行完成后回归本用户身份。
是否觉得 sudo 有点像SUID?然而
- SUID只能设置一个命令,sudo可以设置所有命令
- SUID是升级到文件所有者的身份,sudo是升级的root身份
1. su
全称,Switch User
作用:使用户可以在shell中以其它身份运行程序
PS: 除非该用户自己是超级用户,不然切换用户身份时都需要输入密码
有一点区别需要注意:
1). su - user1 :
切换到user1用户下,且使用user1的环境变量(具体的说就是 .bash_profile和.bash_rc),称之为全切换
[niesh@niesh ~]$ su Jimmy
密码:
[Jimmy@niesh niesh]$ pwd
/home/niesh
[Jimmy@niesh niesh]$ echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/home/niesh/Desktop
[Jimmy@niesh niesh]$ exit
exit
2). su user2 :
切换到user1用户下,但仍然使用前用户的环境变量,成为半切换
[niesh@niesh ~]$ su - Jimmy
密码:
上一次登录:一 7月 31 22:15:43 CST 2017pts/1 上
[Jimmy@niesh ~]$ pwd
/home/Jimmy
[Jimmy@niesh ~]$ echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/Jimmy/.local/bin:/home/Jimmy/bin
2. sudo
1). 特征:
- 对用户的执行命令权限进行限制
- 提供了日志记录,可详细记录每个用户具体的操作(http://blog.csdn.net/xyz846/article/details/26406955)
- 临时性的时间戳(一般为5min),在此期间使用sudo命令,不需要再输入密码
- 配置文件为
/etc/sudoers,可以使root对用户集中管理
2). 工作流程:
- 当用户执行sudo时,系统寻找/etc/sudoers文件,判断该用户是否具备执行sudo的权限
- 确认用户权限后,让用户输入自身的密码
- 若密码合法,则开始执行sudo后续的命令
- root执行sudo时不需要输入密码
- 自身切换自身也不需要输入密码
3). 命令
sudo (optional) (argument):
Optional:-b:在后台执行指令; -h:显示帮助
-H:将HOME环境变量设为新身份的HOME环境变量
-k:结束密码的有效期限,也就是下次再执行sudo时便需要输入密码
-l:列出目前用户可执行与无法执行的指令
-p:改变询问密码的提示符号
-s:执行指定的shell
-u<用户>:以指定的用户作为新的身份。若不加上此参数,则预设以root作为新的身份;
-v:延长密码有效期限5分钟;
-V :显示版本信息。
Argument:
需要运行的指令
4). 配置:
对sudo权限的配置其实就是修改 /etc/sudoers 文件,有两种方式实现:
- vim /etc/sudoers
- visudo : 推荐使用
打开/etc/sudoers文件,我们见会找到这样一段话:

- 用户名:即需要赋予sudo权限的用户账号
- Server-IP: 即用户被允许在这个Server-IP这个网段里执行命令(并不是允许某个IP的主机去执行sudo)
- 可切换的身份:即本用户使用sudo后,可以切换到哪个用户身份(不写的话默认为任何身份)
- 可执行的命令:即我使用sudo后,可以执行哪些命令

类似上面的图,只是 %之后变成了组,即整个组都可以执行sudo的命令。

上图中,NOPASSWD为当使用sudo时,不需要输入密码。
5). 例程:
增加sudo权限:
现在新增加一个用户Jimmy,没有sudo权限:
[Jimmy@niesh ~]$ ll
总用量 0
-rw-rw-r--. 1 root Jimmy 0 8月 1 21:33 aa
[Jimmy@niesh ~]$ sudo chattr +i aa
[sudo] password for Jimmy:
Jimmy 不在 sudoers 文件中。此事将被报告。
因为Jimmy不再sudoers里面,所以不能使用sudo命令(chattr命令只有root才可执行)!
增加Jimmy到sudoers里:
[Jimmy@niesh ~]$ su -
密码:
上一次登录:二 8月 1 21:32:59 CST 2017pts/1 上
[root@niesh ~]# visudo

重新执行 chattr命令:
[Jimmy@niesh ~]$ sudo chattr +i aa
[sudo] password for Jimmy:
[Jimmy@niesh ~]$ lsattr aa
----i----------- aa
OK,成功执行!
增加组的sudo权限,且不需要输入密码:
增加组niesh 为 NOPASSWD(无密码):

[root@niesh ~]# su - niesh
上一次登录:二 8月 1 21:47:06 CST 2017pts/1 上
[niesh@niesh ~]$
增加文件 dog 的 +i 权限(需要sudo):
[niesh@niesh Desktop]$ sudo chattr +i dog
[niesh@niesh Desktop]$ lsattr dog
----i----------- dog
看吧,不需要输入密码了是吧!
Linux文件权限与属性详解 之 su & sudo的更多相关文章
- Linux文件权限与属性详解 之 SUID、SGID & SBIT
Linux文件权限与属性详解 之 一般权限 Linux文件权限与属性详解 之 ACL Linux文件权限与属性详解 之 SUID.SGID & SBIT Linux文件权限与属性详解 之 ch ...
- Linux文件权限与属性详解 之 一般权限
目录 一般属性 1. iNode: 3152621 2. 文件类型 3.文件访问权限 4. 链接数目: 5. 文件所有者 6. 文件所属组 7. 文件大小 8. 修改时间 9. 文件名称 Linux文 ...
- Linux文件权限与属性详解 之 ACL
Linux文件权限与属性详解 之 一般权限 Linux文件权限与属性详解 之 ACL Linux文件权限与属性详解 之 SUID.SGID & SBIT Linux文件权限与属性详解 之 ch ...
- Linux文件权限与属性详解 之 chattr & lsattr
Linux文件权限与属性详解 之 一般权限 Linux文件权限与属性详解 之 ACL Linux文件权限与属性详解 之 SUID.SGID & SBIT Linux文件权限与属性详解 之 ch ...
- Linux文件权限与属性详解 之 SUID、SGID&SBIT
一.SetUID 1.Linux普通用户可以修改自己的密码,这个是一个合情合理的设置; 修改密码其实修改的是/etc/shadow这个文件,这个文件的属性: ----------. 1 root ro ...
- 轻松学习Linux之Shell文件和目录属性详解
轻松学习Linux之Shell文件和目录属性详解 轻松学习Linux之理解Sitcky 轻松学习Linux之理解umask 轻松学习Linux之理解SUID&SGUID 本系列多媒体教程已完成 ...
- Linux文件查找命令 find 详解
关于find命令 由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下.即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只你具有相应的权 ...
- linux学习7 Linux文件系统功能和作用详解
一.终端 1.用户界面 GUI: GNome KDE CLI: bash,zsh,sh,csh,tcsh,ksh 2.远程连接 a.ssh协议. 查看系统是否监听于tcp协议的22号端口: ss - ...
- Linux文件处理命令 ls 详解
Linux系统的应用场景最多的就是用作服务器的系统了,简洁,安全,高效,一般我们服务器端不会安装Linux的图形化界面,虽然现在一些Linux发行版的图形界面也很漂亮,但是,服务器最主要的是高效.所以 ...
随机推荐
- 2019年华南理工校赛(春季赛)--L--剪刀石头布(签到)
#include <iostream> using namespace std; int main(){ string a,b,c,d; a="Scissors"; b ...
- Note on Preliminary Introduction to Distributed System
今天读了几篇分布式相关的内容,记录一下.非经典论文,非系统化阅读,非严谨思考和总结.主要的着眼点在于分布式存储:好处是,跨越单台物理机器的计算和存储能力的限制,防止单点故障(single point ...
- JQuery 操作数组 each、map、grep、filter
Jquery中对数组的操作大致有一下几种形式:1.$.each( collection, callback(indexInArray, valueOfElement) )$.each()函数和$(se ...
- List、Set、数据结构、Collections
一.数据结构: 1.什么是数据结构: 一种数据的存储方式 2.常见的4+1种数据结构 堆栈结构: 它是只有一个开口的容器结构 特点: 先进后出(FILO) 例子:弹夹,桶装可比克 队列结构: 它是两端 ...
- 学习笔记----html的lang属性
lang属性的取值应该遵循 BCP 47 - Tags for Identifying Languages. 单一的 zh 和 zh-CN 均属于废弃用法. 问题主要在于,zh 现在不是语言code了 ...
- JS自定义鼠标右击菜单
自定义鼠标右击菜单要素: 禁止页面默认右击事件 设置右击菜单的样式以及菜单出现的位置(通过捕获鼠标点击位置来确定菜单的位置) 鼠标在指定控件(区域)上右击时显示菜单(默认菜单隐藏,点击鼠标右键时显示) ...
- jsp页面时间戳转换为时间格式
jstl中格式化时间戳 在jsp页面中使用jstl标签将long型的时间戳转换为格式化后的时间字符串 1.通过<jsp:useBean /> 导入java.util.Date类2.通过 ...
- 使用Kubeadm搭建Kubernetes(1.12.2)集群
Kubeadm是Kubernetes官方提供的用于快速安装Kubernetes集群的工具,伴随Kubernetes每个版本的发布都会同步更新,在2018年将进入GA状态,说明离生产环境中使用的距离越来 ...
- 我的书单(Book List)
code[class*="language-"], pre[class*="language-"] { background-color: #fdfdfd; - ...
- Hadoop Partition函数应用(归档)
一.实例描述 在这个实例里我们使用简单的数据集,里面包含多条数据,每条数据由姓名.年龄.性别和成绩组成.实例要求是按照如下规则归档用户. 1.找出年龄小于20岁中男生和女生的最大分数 2.找出20岁到 ...