Linux sudo详解
sudo:控制用户对系统命令的使用权限,root允许的操作。通过sudo可以提高普通用户的操作权限,不过这个权限是需要进行配置才可使用。
常用的命令展示
配置sudo的2种方式
1. visodu 编辑
visudo: 编辑sudo配置文件(相当于 vi /etc/sudoers,但是不建议用,注意检查语法)
visudo 编辑/etc/sudoers命令 ->98行
visudo -c 检查语法命令,有报错可能导致系统起不来,所以编辑之前需要备份,编辑后最好检查一下用法
ll /etc/sudoers 这个是一个权限很小的文件(440)
2. vi /etc/sudoers(98gg 可以快速跳转) 但是visudo功能更强大
Syntax: user MACHINE=COMMANDS # sudo 语法
root ALL=(ALL) ALL # (All)表示允许用户以哪个用户的权限做事情
omd ALL=(ALL) ALL # omd用户在任何机器上,可以只需任何用户的任何命令 == root用户
omd ALL=(ALL) NOPASSWD: ALL # 免密而且omd用户在任何机器上,可以只需任何用户的任何命令
ftl ALL=(ALL) /bin/cp,/bin/touch # 只允许ftl用户只需root用户的cp,touch命令

取消sudo必须需要tty才能执行的限制
编辑 /etc/sudoers ,找到 Defaults requiretty, 然后注释掉这行:

注: /etc/sudoers 这个是一个权限很小的文件(440)

sudo基本的操作
sudo omd ifconfig ==>omd用户只需root权限需要输入密码
[test@oldboy ~] $ sudo su - omd
# 通过test用户切换到omd,所以此时输入的是test用户的密码
test用户下:su - root -c "ifconfig" 需要输入密码常用的参数:
sudo常用参数:
-l : 登录用户下面,执行sudo -l 显示当前用户有哪些权限
-k :删除/var/db/sudo/下面对应的时间戳的信息,下次执行sudo需要输入当前用户的密码
--> 系统默认也是5分钟失效
--> 配置免密是另一种情况 NOPASSWD: ALL远程sudo(有条件限制的)
sudo的原创操作:
ssh –p lemFTL@HHH omd@10.105.163.162 sudo ls /root
sudo别名的应用
1.主机别名
# Host_Alias FILESERVERS = fs1, fs2 -->注意逗号,空格
# Host_Alias MAILSERVERS = smtp, smtp2 -->注意逗号,空格
2.用户别名
# User_Alias ADMINS = jsmith, mikem,%omd -->omd的用户组添加上去
3.命令别名
# Cmnd_Alias NETWORKING = /sbin/route, /sbin/iwconfig, /sbin/mii-tool
4.角色别名 -->运行时可以切换的角色
#Runas_Alias OP = root,omd
5.实例
user MACHINE COMMANDS
ADMINS FILESERVERS=(Runas_Alias) ALL
包含2个用户的ADMINS
可以再包含2个机器的FILESERVERS
切换到包含2个角色别名Runas_Alias的服务器上,
执行包含3个命令的Cmnd_Alias
另:不切换用户而直接执行命令:
sudo原理
普通用户运行sudo -> 检查/var/db/sudo/下是否有时间戳文件(执行成功后会创建,且免密5分钟),并检查是否已经过期
未过期 ->
检查/etc/sudoers里面是否配置了运行sudo和执行相应命令的权限
->有权限 ->执行命令并且返回结果 ->退出
->无权限
->退出
过期 -> 输入当前用户自己的口令
->检查/etc/sudoers里面是否配置了运行sudo和执行相应命令的权限
->有权限 ->执行命令并且返回结果 ->退出
->无权限
->退出
sudo配置的注意事项
1.命令别名下的成员必须是文件或者是目录的绝对路径
2.别名是包含大写字母,数字,下划线,如果是字母就必须全部大写
3.一个别名下有多个成员,成员与成员之间必须使用逗号分隔,且成员必须有效的存在
4.别名成员受Host_Alias,User_Alias,Cmnd_Alias,Runas_Alias别名类型制约,定义什么类型的别名,就要有什么类型的成员匹配
5.别名规则是每行算一个规则,如果一个别名规则一行容不下是,可以通过“\”来续行
6.指定切换的用户要用()括起来,如果省略括号,默认是root
7.如果不需要输入密码可以输入NOPASSWD:ALL
8.禁止的命令可以通过!来进行限制,根据测试,先执行后面的命令,
所以禁止的命令必须放在允许执行的命令的后面
9.用户组前面必须用%号
10.所有的授权ALL字符都必须是大写
11.允许执行的命令都是有顺序的,命令的顺序是从后向前生效
所以禁止的命令尽量向后放
sudo管理的2个文件
/var/db/sudo/
/etc/sudoers
man sudo
man
sudoers
sudo实例--企业生产环境用户权限集中管理方案实例
【更多参考】sudo实例--企业生产环境用户权限集中管理方案实例
visudo的参数
The options are as follows:
-c Enable check-only mode. The existing sudoers file will be checked for syntax errors, owner
and mode. A message will be printed to the standard output describing the status of
-c Enable check-only mode. The existing sudoers file will be checked for syntax errors, owner
and mode. A message will be printed to the standard output describing the status of
sudoers unless the -q option was specified. If the check completes successfully, visudo
will exit with a value of 0. If an error is encountered, visudo will exit with a value of
1.
-f sudoers Specify and alternate sudoers file location. With this option visudo will edit (or check)
the sudoers file of your choice, instead of the default, /etc/sudoers. The lock file used
is the specified sudoers file with “.tmp” appended to it. In check-only mode only, the
argument to -f may be ‘-’, indicating that sudoers will be read from the standard input.
-h The -h (help) option causes visudo to print a short help message to the standard output and
exit.
-q Enable quiet mode. In this mode details about syntax errors are not printed. This option
is only useful when combined with the -c option.
-s Enable strict checking of the sudoers file. If an alias is used before it is defined,
visudo will consider this a parse error. Note that it is not possible to differentiate
between an alias and a host name or user name that consists solely of uppercase letters,
digits, and the underscore (‘_’) character.
-V The -V (version) option causes visudo to print its version number and exit.
Linux sudo详解的更多相关文章
- Linux sudo 详解
简单的说,sudo 是一种权限管理机制,管理员可以授权于一些普通用户去执行一些 root 执行的操作,而不需要知道 root 的密码.严谨些说,sudo 允许一个已授权用户以超级用户或者其它用户的角色 ...
- Linux 系统结构详解
Linux 系统结构详解 Linux系统一般有4个主要部分: 内核.shell.文件系统和应用程序.内核.shell和文件系统一起形成了基本的操作系统结构,它们使得用户可以运行程序.管理文件并使用系统 ...
- Linux 目录详解 树状目录结构图
1.树状目录结构图 2./目录 目录 描述 / 第一层次结构的根.整个文件系统层次结构的根目录. /bin/ 需要在单用户模式可用的必要命令(可执行文件):面向所有用户,例如:cat.ls.cp,和/ ...
- Linux命令详解之—tail命令
tail命令也是一个非常常用的文件查看类的命令,今天就为大家介绍下Linux tail命令的用法. 更多Linux命令详情请看:Linux命令速查手册 Linux tail命令主要用来从指定点开始将文 ...
- Linux命令详解之—less命令
Linux下还有一个与more命令非常类似的命令--less命令,相比于more命令,less命令更加灵活强大一些,今天就给大家介绍下Linux下的less命令. 更多Linux命令详情请看:Linu ...
- Linux命令详解之—more命令
Linux more命令同cat命令一样,多用来查看文件内容,本文就为大家介绍下Linux more命令的用法. 更多Linux命令详情请看:Linux命令速查手册 Linux的more命令类似 ca ...
- 【转】linux命令详解:md5sum命令
[转]linux命令详解:md5sum命令 转自:http://blog.itpub.net/29320885/viewspace-1710218/ 前言 在网络传输.设备之间转存.复制大文件等时,可 ...
- Linux命令详解之—cat命令
cat命令的功能是连接文件或标准输入并打印,今天就为大家介绍下Linux中的cat命令. 更多Linux命令详情请看:Linux命令速查手册 Linux 的cat命令通常用来显示文件内容,也可以用来将 ...
- Linux命令详解之—pwd命令
Linux的pwd命令也是一个非常常用的命令,本文为大家介绍下Linux中pwd命令的用法. 更多Linux命令详情请看:Linux命令速查手册 Linux pwd命令用于显示工作目录. 执行pwd指 ...
随机推荐
- 9-lvs-lvs集群-及keepalived健康检查
注意: 配置前需要将上一篇的配置都清除掉 ifconfig eth1: down service ipvsadm restart nginx作为请求分发服务器时, 有健康检查机制, 挂了的服务器不会在 ...
- 《深入理解Java虚拟机》目录
第一部分 走进Java 第1章 走进Java 第二部分 自动内存管理机制 第2章 Java内存区域与内存溢出异常 2.2 运行时数据区域 2.3 HotSpot虚拟机对象探秘 第3章 垃圾收集器与 ...
- yum命令速查
1 yum的基本原理 CentOS可在yum服务器上下载官方网站给出的rpm给出的表头列表数据,该数据除了记载每个rpm软件的相依性之外,也说明了rpm所放置的容器(repository)所在.通过分 ...
- Java 获取汉字串首字母并大写和获取汉字的全拼,英文字符不变
在开发中我们难免会遇到需要提出汉字中的拼音的首字母.提出汉字的拼音,接着便介绍一个工具类 pinyin4j.jar,首先需要下载 jar 包. Pinyin4j是一个功能强悍的汉语拼音工具包,是sou ...
- 牛客网剑指offer java 全部题解
经过数月的努力,终于更完了牛客网的66道剑指offer,以下的顺序和大家在牛客网的顺序是一样的(排序也花了不少时间),希望对大家找工作/提高算法能力能起到些许帮助. 每天一道剑指offer-二维数组中 ...
- Qt Model View 框架
Model-View及Qt实现 Model-View-Controller架构最早出现在SmallTalk语言中,至今出现了很多变体. Model是负责维护数据(如管理数据库),View负责显示与用户 ...
- JavaScript 函数全局变量定义
在 JavaScript 中, 作用域 影响着变量的作用范围.在函数外定义的变量具有 全局 作用域.这意味着,具有全局作用域的变量可以在代码的任何地方被调用. 没有使用var关键字定义的变量,会被自动 ...
- Spring Boot + MyBatis + Druid + Redis + Thymeleaf 整合小结
Spring Boot + MyBatis + Druid + Redis + Thymeleaf 整合小结 这两天闲着没事想利用**Spring Boot**加上阿里的开源数据连接池**Druid* ...
- Invoke 和 BeginInvoke 的区别
在Invoke或者BeginInvoke的使用中无一例外地使用了委托Delegate 一.为什么Control类提供了Invoke和BeginInvoke机制? 关于这个问题的最主要的原因已经是dot ...
- Django HTML 转义
HTML转义 模板对上下文传递的字符串进行输出时,会对以下字符自动转义 小于号< 转换为< 大于号> 转换为> 单引号' 转换为' 双引号" 转换为 " 与 ...