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的更多相关文章

  1. Linux文件权限与属性详解 之 SUID、SGID & SBIT

    Linux文件权限与属性详解 之 一般权限 Linux文件权限与属性详解 之 ACL Linux文件权限与属性详解 之 SUID.SGID & SBIT Linux文件权限与属性详解 之 ch ...

  2. Linux文件权限与属性详解 之 一般权限

    目录 一般属性 1. iNode: 3152621 2. 文件类型 3.文件访问权限 4. 链接数目: 5. 文件所有者 6. 文件所属组 7. 文件大小 8. 修改时间 9. 文件名称 Linux文 ...

  3. Linux文件权限与属性详解 之 ACL

    Linux文件权限与属性详解 之 一般权限 Linux文件权限与属性详解 之 ACL Linux文件权限与属性详解 之 SUID.SGID & SBIT Linux文件权限与属性详解 之 ch ...

  4. Linux文件权限与属性详解 之 chattr & lsattr

    Linux文件权限与属性详解 之 一般权限 Linux文件权限与属性详解 之 ACL Linux文件权限与属性详解 之 SUID.SGID & SBIT Linux文件权限与属性详解 之 ch ...

  5. Linux文件权限与属性详解 之 SUID、SGID&SBIT

    一.SetUID 1.Linux普通用户可以修改自己的密码,这个是一个合情合理的设置; 修改密码其实修改的是/etc/shadow这个文件,这个文件的属性: ----------. 1 root ro ...

  6. 轻松学习Linux之Shell文件和目录属性详解

    轻松学习Linux之Shell文件和目录属性详解 轻松学习Linux之理解Sitcky 轻松学习Linux之理解umask 轻松学习Linux之理解SUID&SGUID 本系列多媒体教程已完成 ...

  7. Linux文件查找命令 find 详解

    关于find命令 由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下.即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只你具有相应的权 ...

  8. linux学习7 Linux文件系统功能和作用详解

    一.终端 1.用户界面 GUI: GNome KDE CLI: bash,zsh,sh,csh,tcsh,ksh 2.远程连接 a.ssh协议. 查看系统是否监听于tcp协议的22号端口: ss  - ...

  9. Linux文件处理命令 ls 详解

    Linux系统的应用场景最多的就是用作服务器的系统了,简洁,安全,高效,一般我们服务器端不会安装Linux的图形化界面,虽然现在一些Linux发行版的图形界面也很漂亮,但是,服务器最主要的是高效.所以 ...

随机推荐

  1. python csv读写

    https://blog.csdn.net/taotiezhengfeng/article/details/75577998

  2. springboot 不同环境切换不同的配置文件

    开发的流程是本地>测试>预发布>正式,所以不同的环境,肯定是不同的配置文件,所以我们需要针对不同的环境做不同的配置切换. 下面我们来说说 springboot 是怎么来切换的: 1. ...

  3. Hbase的常见shell操作

    1.带namespace的:https://blog.csdn.net/opensure/article/details/46470969 2.http://www.cnblogs.com/xing9 ...

  4. day17_雷神_数据库 小全

    # 数据库 1.mysql 介绍 一 数据库管理软件的由来 程序的所有组件不可能只在一个机子上,性能问题和单点故障, 程序分散了,还需要解决数据共享问题, 基于网络访问这台共享的机器,用socket. ...

  5. Python学习笔记-基础2

    1.列表list 列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现. 1.定义列表 names = ["Ronaldo","Messi" ...

  6. Redis-03.事务

    Redis事务: 在一个队列(queue)中依次执行一系列的命令. 事务的三个阶段: 1.开始事务(MULTI) 2.命令加入队列 (QUEUE) 3.执行事务 (EXEC) 示例1: MULTI & ...

  7. Appium + Java 测试 [百度地图] APP的一段简单脚本

    1. 流程 进入 app ,手动处理前段预处理,程序一直等候到达指定搜索地名页面,填入[南通大学],点击[搜索] 2. Java 脚本 // part 1: 引入需要的包 import io.appi ...

  8. 【.NET Core项目实战-统一认证平台】第一章 功能及架构分析

    [.NET Core项目实战-统一认证平台]开篇及目录索引 从本文开始,我们正式进入项目研发阶段,首先我们分析下统一认证平台应该具备哪些功能性需求和非功能性需求,在梳理完这些需求后,设计好系统采用的架 ...

  9. VSCode插件开发全攻略(六)开发调试技巧

    更多文章请戳VSCode插件开发全攻略系列目录导航. 前言 在介绍完一些比较简单的内容点之后,我觉得有必要先和大家介绍一些开发中遇到的一些细节问题以及技巧,特别是后面一章节将要介绍WebView的知识 ...

  10. 程序员跳槽有一份好的简历,offer让你拿到手软

    作者:果汁简历 工欲善其事必先利其器,这是自古以来的道理,所以如果想找到一份好的工作,一定要先整理一份好的简历. 模板 写简历首先要有一个好的模板,我们做技术的不同于 UX,UED,我们不需要那么花哨 ...