Linux sudoers文件的写法

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

文件的组成

      sudoers文件由三部分组成:

  • sudoers的默认配置,主要设置sudo的一些缺省值(本文不会对这些默认配置进行介绍,若有兴趣可以自己man 5 sudoers然后搜defaults)
  • alias(别名),可以看作是变量的定义啦,本文也会全面的说说别名的定义。
  • 规则定义,sudoers文件的重点啦,本文会着重说明规则的定义。

Alias(别名)

一共有四种类型的别名,这些类型可以看作它们是数据类型啦哈。

  • User_Alias
  • Runas_Alias
  • Host_Alias
  • Cmnd_Alias

那么要如何定义这些Alias呢?语法如下:

User_Alias NAME=User_ListRunas_Alias NAME=Runas_ListHost_Alias NAME=Host_ListCmnd_Alias NAME=Cmnd_List

 

这里的NAME就可以看作是变量名咯。注意,NAME必须是要以大写字母开头,而且只能包含有大写字母,数字,下划线呢。那么User_List,Runas_List,Host_List,Cmnd_List又是什么呢?其实就是以“,"分隔的一个数组啦,只不过这四个别名表示的数组内容都会不同啦。

 

现在分别看看User_List,Runas_List,Host_List,Cmnd_List的每个数组元素可以是些什么值吧!

User:[!][username |#uid |%groupname | +netgroup |%:nonunix_group | User_Alias]Runas:[!][username|#uid | %groupname | +netgroup |Runas_Alias]Host:[!][hostname | ip_addr | network(/netmask)? |  netgroup | Host_Alias]Cmnd:[!][commandname| directory| "sudoedit" | Cmnd_Alias]

 

看看上面的元素名就可以知道大概什么意思了吧?这里着重拿些可能有疑问的出来说说。

叹号'!'表示取反的意思啦。

每个元素都可以是之前定义过的别名变量啦,所以会有User_List,Runas_List,Host_List,Cmnd_List这些元素啦。

directory表示有可以进入该目录并执行命令的权限啦

"sudoedit"表示允许用户使用sudo -e选项。

 

如果还没搞懂的话,可以看下面的别名定义的例子:

User_Alias USER_TEST=tim,#501,%svn,+webgroup,%:nonunix,!nouserRunas_Alias RUNAS_TEST=tim,#501,%svn,!+webgroupHost_Alias HOST_TEST=!www.baidu.com,localhost,127.0.0.1Cmnd_Alias CMND_TEST=Cmnd_Alias CMDS=/bin/passwd,/bin/ls,/home/svn

User Specification(用户规则)

用户规则定义的语法如下:

User_List Host_List=(Runas_List1:Runas_List2) SELinux_Spec Tag_Spec Cmnd_List,...

下面对上面的语法进行说明一下:

User_List(必填项):指的是该规则是针对哪些用户的。

Host_List(必填项):指的是该规则针对来自哪些主机的用户。

Runas_List1(可选项):表示可以用sudo -u来切换的用户

Runas_List2(可选项):表示可以用sudo -g来切换的用户组

SELinux_Spec(可选项):表示SELinux相关的选项,可选值为ROLE=role 或 TYPE=type。本人对SELinux不太熟,以后再补充这里吧。

Tag_Spec(可选项):用于控制后面Cmnd_List的一些选项啦,可选值有下面这些,具体自己man一下吧,这里就不啰嗦了。

'NOPASSWD:' | 'PASSWD:' | 'NOEXEC:' | 'EXEC:' | 'SETENV:' | 'NOSETENV:' | 'LOG_INPUT:' | 'NOLOG_INPUT:' | 'LOG_OUTPUT:' | 'NOLOG_OUTPUT:'

...(可选项):表示可以有多个(Runas_List1:Runas_List2) SELinux_Spec Tag_Spec Cmnd_List段的意思了。

Notice:如果Runas_List1和Runas_List2都没填的话,默认是以root用户执行

如果不是很理解的话,可以对比着文章后面举的例子来看下,应该难不倒聪明的我们!

 

sudoers文件下的通配符

通配符只可以用在主机名、文件路径、命令行的参数列表中。下面是可用的通配符:

*:匹配任意数量的字符

?:匹配一个任意字符

[...]:匹配在范围内的一个字符

[!...]:匹配不在范围内的一个字符

\x:用于转义特殊字符

在使用通配符时有以下的注意点:

1.使用[:alpha:]等通配符时,要转义冒号':',如:[\:alpha\:]

2.当通配符用于文件路径时,不能跨'/'匹配,如:/usr/bin/*能匹配/usr/bin/who但不能匹配/usr/bin/X11/xterm

3.如果指令的参数列表是""时,匹配不包含任何参数的指令。

4.ALL这个关键字表示匹配所有情况。

 

man sudoers下的例子解析

       

 # 用户别名定义User_Alias     FULLTIMERS = millert, mikef, dowdyUser_Alias     PARTTIMERS = bostley, jwfox, crawlUser_Alias     WEBMASTERS = will, wendy, wim#用户切换别名定义Runas_Alias    OP = root, operatorRunas_Alias    DB = oracle, sybaseRunas_Alias    ADMINGRP = adm, oper#主机别名定义Host_Alias     SPARC = bigtime, eclipse, moet, anchor :\SGI = grolsch, dandelion, black :\ALPHA = widget, thalamus, foobar :\HPPA = boa, nag, PythonHost_Alias     CUNETS = 128.138.0.0/255.255.0.0Host_Alias     CSNETS = 128.138.243.0, 128.138.204.0/24, 128.138.242.0Host_Alias     SERVERS = master, mail, www, nsHost_Alias     CDROM = orion, perseus, hercules#指令别名定义Cmnd_Alias     DUMPS = /usr/bin/mt, /usr/sbin/dump, /usr/sbin/rdump,\/usr/sbin/restore, /usr/sbin/rrestoreCmnd_Alias     KILL = /usr/bin/killCmnd_Alias     PRINTING = /usr/sbin/lpc, /usr/bin/lprmCmnd_Alias     SHUTDOWN = /usr/sbin/shutdownCmnd_Alias     HALT = /usr/sbin/haltCmnd_Alias     REBOOT = /usr/sbin/rebootCmnd_Alias     SHELLS = /usr/bin/sh, /usr/bin/csh, /usr/bin/ksh, \/usr/local/bin/tcsh, /usr/bin/rsh, \/usr/local/bin/zshCmnd_Alias     SU = /usr/bin/suCmnd_Alias     PAGERS = /usr/bin/more, /usr/bin/pg, /usr/bin/less



#开始定义规则

#root用户及wheel用户组下的所有用户都可以从任何主机连接进来以任意身份执行任意命令

root           ALL = (ALL) ALL
%wheel         ALL = (ALL) ALL


#FULLTIMERS这个用户别名中定义的用户可以从任何主机连接进来以任意身份执行任意命令,而且在切换用户或用户组时不需要输入密码

 FULLTIMERS     ALL = NOPASSWD: ALL


#PARTTIMERS这个用户别名中定义的用户可以从任何主机连接进来以root身份执行任意命令。

PARTTIMERS     ALL = ALL


#The user jack may run any command on the machines in the CSNETS alias (the networks 128.138.243.0, 128.138.204.0, and 128.138.242.0).  Of those
       #networks, only 128.138.204.0 has an explicit netmask (in CIDR notation) indicating it is a class C network.  For the other networks in CSNETS,
      # the local machine’s netmask will be used during matching.
   

jack           CSNETS = ALL

#lisa这个用户可以从CUNETS中定义的主机连接进来以root身份执行任意指令。

 lisa           CUNETS = ALL


#oprator这个用户可以从任何主机连接进来以root身份执行DUMPS, KILL, SHUTDOWN, HALT, REBOOT, PRINTING,sudoedit /etc/printcap, /usr/oper/bin/定义的指令
       

 operator       ALL = DUMPS, KILL, SHUTDOWN, HALT, REBOOT, PRINTING,\sudoedit /etc/printcap, /usr/oper/bin/


#joe这个用户可以从任何主机连接进来,并且只能执行su operator指令

joe            ALL = /usr/bin/su operator

#pete这个用户可以从HPPA定义的主机中连接进来并以root身份执行passwd的所有命令,除了passwd root

pete           HPPA = /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root

       
#opers这个用户组下的所有用户可以从任何主机连接进来,并可以切换至ADMINGRP中定义的用户组进入/usr/sbin并执行命令

 %opers         ALL = (: ADMINGRP) /usr/sbin


#bob这个用户可以从SPARC和SGI中定义的主机连接进来,并可以OP定义的用户执行任意指令 

 bob            SPARC = (OP) ALL : SGI = (OP) ALL


#jim这个用户可以从biglab这个netgroup中连接进来,并执行任意指令

jim            +biglab = ALL


#secretaries这个netgroup下的所有用户可以从任意主机连接进来,并以root身份执行PRINTING,/usr/bin/adduser, /usr/bin/rmuser中定义的指令
       

 %secretaries   ALL = PRINTING, /usr/bin/adduser, /usr/bin/rmuser

#fred这个用户可以从任何主机连接进来并以DB别名定义的用户来执行所有指令,并且不需要输入密码

fred           ALL = (DB) NOPASSWD: ALL

#john这个用户可以从ALPHA定义的主机中连接进来,并可以以root身份执行su指令,但不能执行su root和使用任何su选项
   

john           ALPHA = /usr/bin/su [!-]*, !/usr/bin/su *root*

 #jen这个用户可以从任何主机(除了SERVERS中定义的主机)连接进来,并以root身份执行任意指令

#jill这个用户可以从SERVERS定义的主机连接进来,并以root身份进入/usr/bin/执行指令,但不能执行SU和SHELLS中定义的命令

jill           SERVERS = /usr/bin/, !SU, !SHELLS

#steve这个用户可以从CSNETS中定义的主机连接进来,并以operator这个用户可以进入/usr/local/op_commands/执行指令

 steve          CSNETS = (operator) /usr/local/op_commands/

       

 

转载于:https://my.oschina.net/ososchina/blog/867400

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/541698.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

设计模式(一)单例模式的七种写法

1. 饿汉模式 public class Singleton { private static Singleton instance new Singleton(); private Singleton (){}public static Singleton getInstance() { return instance; } } View Code这种方式在类加载时就完成了初始化,所以类加载较慢,…

智能关机软件 c语言,智能关机软件

智能关机软件是一款免费共享关机软件。智能关机软件不但具有定时关机、自动关机的功能,而且还可以进行定时提醒信息、打开文件、打开网页、重启计算机、注销用户、锁定计算机、计算机休眠、计算机待机、关闭显示器,并且可以进行多任务计划,可…

iOS开发之解决系统数字键盘无文字时delete键无法监听的技巧

最近在做用户登录获取验证码时添加图形验证码功能,就是只有正确输入图形验证码才能收到后台发送的短信验证码。效果如下: 看起来虽然是个小功能,但是实际操作起来,会发现苹果给我们留下的坑,当然更多的是自己给自己挖的…

连接fiddler后手机无法显示无网络

升级了fiddler到4.6版本,手机设置代理后提示无网络,试试以下解决方法: 1.fiddler升级后对应的.net framework也要升级,安装最新的.net framework 4.6,升级安装后,可以正确抓包啦 2.如果上述方法无效&#x…

android 图片叠加xml,Android实现图片叠加效果的两种方法

本文实例讲述了Android实现图片叠加效果的两种方法。,具体如下:效果图:第一种:第二种:第一种是通过canvas画出来的效果:public void first(View v) {// 防止出现Immutable bitmap passed to Canvas constructor错误Bit…

Win10系列:VC++ 定时器

计时器机制俗称"心跳",表示以特定的频率持续触发特定事件和执行特定程序的机制。在开发Windows应用商店应用的过程中,可以使用定义在Windows::UI::Xaml命名空间中的DispatcherTimer类来创建计时器。DispatcherTimer类包含了如下的成员&#xf…

dbms系统 rdbms_DBMS与传统文件系统之间的区别

dbms系统 rdbmsIntroduction 介绍 DBMS and Traditional file system have some advantages, disadvantages, applications, functions, features, components and uses. So, in this article, we will discuss these differences, advantages, disadvantages and many other …

android 百度地图api密钥,Android百度地图开发获取秘钥之SHA1

最近在做一个关于百度地图的开发。不过在正式开发之前还必须要在百度地图API官网里先申请秘钥,而在申请秘钥的过程中,就需要获取一个所谓的SHA1值。如上所示,但是由于不是正式开发,所以以上的发布版和开发版的SHA1可以先填写相同。…

华为荣耀七能升级鸿蒙系统吗,华为鸿蒙系统来了,你知道哪些华为手机荣耀手机可以升级吗?...

从鸿蒙系统第一次开始登场,到现在慢慢有许多鸿蒙系统设备出现,手机市场的格局似乎又要升级变化了。科技树儿了解到,在某数码博主经过和相关人员的沟通核实之后,目前暂定的是搭载华为麒麟710芯片以上的机型,无论华为或荣…

Tcl与Design Compiler (十二)——综合后处理

本文如果有错,欢迎留言更正;此外,转载请标明出处 http://www.cnblogs.com/IClearner/ ,作者:IC_learner 概述 前面也讲了一些综合后的需要进行的一些工作,这里就集中讲一下DC完成综合了,产生了…

四则运算网页版

一.设计思想: 1)写出一个菜单界面,有两个选项一个是分数,一个是整数。 2)而这两个标签后面则是转向其更详细的菜单,题目数量,有无括号,运算的项数等等详细功能,再点击这两…

分布式交换机配置备份和还原

1.备份和还原vSphere Distributed Switch配置 1.1导出 vSphere Distributed Switch 配置 可以将 vSphere Distributed Switch 和分布式端口组配置导出到某一文件。该文件保留有效的网络配置,使这些配置能够传输至其他环境。 步骤: 1) 在 vSphere Web Cli…

华为鸿蒙系统好在哪,华为鸿蒙2.0可以替代安卓吗,华为鸿蒙2.0优势在哪

在华为开发者大会上,华为消费业务CEO 余承东,正式发布鸿蒙OS2.0,并宣布华为鸿蒙OS将全面启用全场景生态,并将于2020年12月发布手机版。余承东还表示,明年,华为的智能手机将全面升级,以支持鸿蒙操…

html5画分形图形,2.5 绘制透明图形 - HTML5 Canvas 实战

对于需要图形分层的应用,经常需要处理透明度。本节,我们将学习如何使用全局透明度设置图形的透明度。图2-5 绘制透明图形绘制步骤按照以下步骤,在一个不透明的矩形之上,绘制一个透明的圆:1. 定义2D画布上下文&#xff…

html5录音功能代码,recorder.js 基于 HTML5 实现录音功能

recorder.js 基于 HTML5 实现录音功能2020-06-23 01:49:56recorder.jsmicrophone基于HTML5的录音功能,输出格式为mp3文件。前言完全依赖H5原生API所涉及的API:WebRTC、AudioContext、Worker、Video/Audio API、Blob、URL兼容性Chrome、FF、Edge、QQ、360…

html5页面引入jquery,如何在javascript中引入jQuery?

jquery是一个用来代替JavaScript来快捷书写前端脚本语言的库,jquery可以大大的简化复杂的js代码,使开发人员专注于实现页面的效果。jquery的导入方式有两种,一种是本地导入,一种是从超链接导入。方式一:本地导入我们可…

湖南省普通招生2021高考成绩查询,湖南省2021八省联考成绩可查,附查询入口及往年分数线...

原标题:湖南省2021八省联考成绩可查,附查询入口及往年分数线湖南省2021年八省联考新高考适应性考试成绩公布,这次大家考的如何呢?此次成绩排名对于考生择校及志愿填报有一定的参考意义,小盒一时间收集整理相关消息&…

Ubuntu抛弃了Untiy转向Gnome,美化之路怎么办?不用怕咱一步一步大变身!

跨平台系列汇总:http://www.cnblogs.com/dunitian/p/4822808.html#linux 常用软件安装系统软件卸载:http://www.cnblogs.com/dunitian/p/6670560.html 1.下载UnityGnome版本 https://wiki.ubuntu.com/UbuntuGNOME/GetUbuntuGNOME 2.打开终端 or CtrlAltT…

html木桶布局,CSS3如何实现图片木桶布局?(附代码)

本篇文章给大家通过代码示例介绍一下使用CSS3实现图片木桶布局的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。高度相同,而宽度不一样的布局,称之为木桶布局。它有几个鲜明的特点: 每行的图片…

万用表怎么测量电池容量_万用表检测光电耦合器的常用技巧

光电耦合器又称光耦合器或光耦,它属于较新型的电子产品,已经广泛应用在彩色电视机、彩色显示器、计算机、音视频等各种控制电路中。光电耦合器的构成和原理常见的光电耦合器有 4 脚直插和 6 脚两种,它们的典型实物外形和电路符号如图 3-4所示…