<五>Linux文件权限与属性详解--su & sudo
来源:互联网 发布:手游代充平台 知乎 编辑:程序博客网 时间:2024/06/05 03:00
<五>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]$ exitexit
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-权限管理-su与sudo详解
- linux权限su与sudo区别
- linux权限管理之su与 sudo详解___username is not in the sudoers file
- linux权限管理之su与 sudo详解___username is not in the sudoers file
- su与sudo使用详解
- Linux中的 su 与 sudo
- 【Linux】权限问题:su和sudo
- <一>Linux文件权限与属性详解--一般权限
- su与sudo的区别详解
- linux中su与sudo与su-的理解
- linux su 与sudo命令学习
- Linux中su命令与sudo命令
- linux 下su与sudo的理解
- Linux su与sudo的区别
- linux上su与sudo su的区别
- linux su命令,su-,sudo
- su、sudo详解
- layer ui 导入文件之前传入数据
- Tomcat SSL/HTTPS 单向认证
- Docker使用(搭建2048游戏、搭建nginx服务)
- turtle——童年的记忆
- 线程池初探(二)
- <五>Linux文件权限与属性详解--su & sudo
- Java day9
- 基于OpenCV 2.4.93.1的汉字显示(FreeType 2.6.2)
- 正则验证固话和手机号
- AndroidStudio JNI开发:生成可调用jar
- sudo adduser XXX sudo XXX 用户不在 sudoers 文件中
- css input[type=file] input[type=radio] input[type=checkbox]样式美化,input上传按钮美化
- jeesite框架学习——对查询结果为Map的集合进行分页显示
- react-native 生命周期