sudo和su的用法
两者的区别
- su命令可以临时切换用户身份,例如要想由root用户切换到普通用户test,可以执行
su test
,可以在不登出当前用户的前提下,登录为另外一个用户,但是我们切换成普通用户后,执行命令时便受权限限制 - 假如执行su切换到目标用户时,我们是需要输入目标用户的密码,才能成功切换
- 执行sudo命令时,可以允许用户提升运行单个命令的权限,但是需要输入当前用户的密码,且该用户在sudoers中,否则没有权限
- sudo要比su灵活很多,sudo可以限制sudo用户使用哪些命令
普通用户免密切换root
sudo配置
sudo的配置文件/etc/sudoers
1)别名规则
定义主机别名
`Host_Alias FILESERVERS = fs1, fs2```
用户别名,可以是用户,也可以是组,组时前面需加%
User_Alias ADMINS = jsmith, mikem
定义命令别名
Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool
注意:上面的ADMINS、NETWORKING就是我们说的别名了。当设置主机别名时,成员必须是与主机相关联,比如主机名,IP地址等;设置用户别名时,成员必须是系统用户;使用命令别名时,必须使用绝对路径,文件名可以用通配符。还需注意的是,别名规则每行算一个规则,如果一行不够用时,可以使用
来换行。
例如:
1 2 3 |
Host_Alias Hostname = xs_test01,192.168.111.25 User_Alias ADMIN = xs,test Cmnd_Alias CMD = /bin/cat,/bin/vim,/bin/sh,/sbin/ifconfig |
---|
2)授权规则
1 2 3 4 5 6 |
xs ALL=/bin/cat,/bin/vim 表示xs用户在切换到root用户下可以执行这两条命令。 xs ALL=(root) /bin/cat,/bin/vim 表示xs用户可以切换到root用户下,执行这两条命令,且可以切换到任何用户执行这两条命令。 xs ALL=(root) NOPASSWD:/bin/cat,/bin/vim 表示xs用户可以切换到root用户或任何用户下执行这两条命令,且不用输入自己的密码 |
---|
结合别名
1 2 3 |
Cmnd_Alias CMD = /bin/cat,/bin/vim,/bin/sh,/sbin/ifconfig xs ALL=(root) NOPASSWD:CMD 表示xs这个用户可以切换到root用户来执行CMD下的所有命令,且免密钥。 |
---|
验证
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
[xs@xs_test01 script]$ sudo rm 1.t 我们信任您已经从系统管理员那里了解了日常注意事项。 总结起来无外乎这三点: #1) 尊重别人的隐私。 #2) 输入前要先考虑(后果和风险)。 #3) 权力越大,责任越大。 [sudo] xs 的密码: [xs@xs_test01 script]$ sudo cat 1.t err 200 500 111111 404 11231412 |
---|
wheel组的使用
wheel组就是一个管理员的组,比如一个使用场景如下:
我们创建一个普通用户,想让这个普通用户不管是用su还是sudo都能免密切换root用户时,这个时候我们就可以利用wheel组了。
1)修改/etc/pam.d/su
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#%PAM-1.0 auth sufficient pam_rootok.so # Uncomment the following line to implicitly trust users in the "wheel" group. auth sufficient pam_wheel.so trust use_uid #将这一行的#去掉 # Uncomment the following line to require a user to be in the "wheel" group. #auth required pam_wheel.so use_uid auth substack system-auth auth include postlogin account sufficient pam_succeed_if.so uid = 0 use_uid quiet account include system-auth password include system-auth session include system-auth session include postlogin session optional pam_xauth.so |
---|
2)将用户添加到wheel组中
usermod -G wheel xs
这里有一个问题就是,我们使用su
是不用输密码的,但是sudo还不可以
sudo免密方法(都是修改/etc/sudoers文件):
xs ALL=(ALL) NOPASSWD: ALL
%wheel ALL=(ALL) NOPASSWD: ALL
第二种方式的好处就是,每添加一个用户只需加到wheel组里即可。
- Python标准库(1) — itertools模块
- Linux笔记:使用Vim编辑器
- 一步一步学lucene——(第二步:示例篇)
- 类属性的延迟计算
- 一步一步学lucene——(第三步:索引篇)
- 在Python应用中使用MongoDB
- Python检查xpath和csspath表达式是否合法
- 一步一步学lucene——(第四步:搜索篇)
- Python爬虫代理IP池
- SSDB图形界面管理工具:phpssdbadmin安装部署
- [Go 语言社区] 初始化内存数据--游戏列表数据
- SSDB安装配置记录
- Python标准库笔记(3) — datetime模块
- Django 1.10中文文档-第一个应用Part4-表单和通用视图
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 关于Spring定义的preDestroy修饰的方法不执行,有以下两种原因,总有一款适合你
- CSP201912-2-回收站选址题目解析-Java ,
- Spring boot框架快速入门
- SpringBoot 跨域问题:Access to XMLHttpRequest at ‘***‘ from origin ‘***‘ has been blocked by CORS policy
- 火车购票-CSP201609-2-Java
- 从后端开发人员的视角:最浅显的理解 Vue
- Sublime怎么默认显示文件路径
- Git 删除已提交的文件
- Sublime 怎么装SQL语法检测器
- Vue 设置环境变量和模式
- 你真的掌握了Python基本语法了吗?
- Mybatis-Generator 代码生成器的使用
- 提高数据分析工作效率-Sublime如何设置默认打开文件格式
- 使用 freemarker 制作代码生成器
- 假期闲的慌,不如做一点SQL基础练习吧