Linux文件权限与属性详解 之 su & sudo

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文件,我们见会找到这样一段话:
mark

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

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

mark
上图中,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

mark
重新执行 chattr命令:

[Jimmy@niesh ~]$ sudo chattr +i aa
[sudo] password for Jimmy:

[Jimmy@niesh ~]$ lsattr aa
----i----------- aa

OK,成功执行!

增加组的sudo权限,且不需要输入密码:

增加组niesh 为 NOPASSWD(无密码):
mark

[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

看吧,不需要输入密码了是吧!

转载于:https://www.cnblogs.com/Jimmy1988/p/7270881.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/108278.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 提供一个免费的CSDN下载账号

    提供一个免费的CSDN下载账号

    2021年11月15日
  • 最近使用百度分享的api,引发 了一下问题,微博分享的页面跳转不成功

    最近使用百度分享的api,引发 了一下问题,微博分享的页面跳转不成功1、导致问题的原因有可能是百度分享的服务器有时候无法跳转到微博(个人分析)2、最后我的解决方式,点击事件,让浏览器直接跳转到微博分享的页面window.location.href="http://v.t.sina.com.cn/share/share.php?title=“自定义标题”&pic=“自定义分享图片地址”&searchPic=false"searchP…

  • 布隆过滤器原理及应用场景分析_布隆过滤器 数据更新怎么办

    布隆过滤器原理及应用场景分析_布隆过滤器 数据更新怎么办https://www.cnblogs.com/qdhxhz/p/11237246.html开发一个电商项目,因为数据量一直在增加(已达亿级),所以需要重构之前开发好的秒杀功能,为了更好的支持高并发,在验证用户是否重复购买的环节,就考虑用布隆过滤器。也顺便更加深入的去了解下布隆过滤器的原理,感觉还是蛮有意思的,这一连串的公式不静下心来思考,很容易被绕晕。一、概述1、什么是布隆过滤器本质上布隆过滤器是一种数据结构,比较巧妙的概率型数据结构,特点是高效地插入和查询。根据查询结果可以用来告

  • 易语言跳出循环 c,易语言教程循环控制(到循环尾和跳出循环)[通俗易懂]

    易语言跳出循环 c,易语言教程循环控制(到循环尾和跳出循环)[通俗易懂]到循环尾()和跳出循环()是易语言对循环的两种控制方式,教程分别了举例师范讲解。一、官方源码到循环尾调用格式:〈无返回值〉到循环尾()-系统核心支持库->流程控制英文名称:continue本命令转移当前程序执行位置到当前所处循环体的循环尾语句处。本命令为初级命令。操作系统需求:Windows、Linux、Unix跳出循环调用格式:〈无返回值〉跳出循环()-系统核心支持库…

  • linux 海思hi3798m_海思Hi3798模块芯片,Hi3798处理器参数介绍[通俗易懂]

    linux 海思hi3798m_海思Hi3798模块芯片,Hi3798处理器参数介绍[通俗易懂]Hi3798CV200是用于DVB和IPTV机顶盒市场的支持4KP60解码的超高清高性能SOC芯片,集成4核64位高性能CortexA53处理器、内置NEON加速引擎,强大的CPU处理能力可以满足各种差异化的业务需求。在码流兼容性、在线视频播放的流畅性、图像质量以及整机性能方面保持业界最好的用户体验。Hi3798支持4Kx2K@P6010bit超高清视频解码,支持H.265/HEVC、H.2…

  • AD18 net class设置「建议收藏」

    AD18 net class设置「建议收藏」今天使用AD18画原理图,想把天线相关网络归属为一类以便方便进行PCB规则设置。在原理图中设置NetClass,可省去在PCB阶段再重新分配NetClass。点击设置→指示→参数设置,调取参数设置符合。将参数设置符合放在要设定的网络上,查看参数设置符合的属性在label中可以重新命名原理图上显示的名称,在Class中点击add,即可新增NetClass,并需要对其进行命名。再将符合复…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号