sudo简介:sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等。这样不仅减少了root用户的登录 和管理时间,同样也提高了安全性。sudo不是对shell的一个代替,它是面向每个命令的

基本操作

[root@localhost /]# useradd Daniel #创建一个用户
[root@localhost /]# passwd Daniel #设置密码
[root@localhost /]# su Daniel #切换用户到Daniel
bash-4.1$ #切换成功 #给权限
#Linux sudo命令以系统管理者的身份执行指令,也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行。
#使用权限:在 /etc/sudoers 中有出现的使用者。这里可以直接修改sudoers,也可以额使用visudo,推荐使用visudo,可以判断你的语法是否正确 root@localhost /]# visudo
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
Daniel ALL=(ALL) ALL #这是我们新添加的一行,意思是Daniel这个用户,可以使用所有的命令,使用单个命令(比如useradd),可以将ALL改成/user/sbin/add #测试
-bash-4.1$ ls /root/
ls: 无法打开目录/root/: 权限不够
-bash-4.1$ sudo ls /root/
[sudo] password for Daniel: #sudo后输入Daniel的密码即可
anaconda-ks.cfg install.log install.log.syslog #现在让我们来看一下那三个ALL到底是什么意思。第一个ALL是指网络中的主机,可以将它改成localhost=,它指明foobar可以在此主机上执行后面的命令。第二个括号里的ALL是指目标用户,也就是以谁的身份去执行命令。最后一个ALL当然就是指命令名了。例如,我们想让Danielr用户在linux主机上以jimmy或rene的身份执行kill命令,这样编写配置文件:
Daniel linux=(jimmy,rene) /bin/kill
#但这还有个问题,Daniel到底以jimmy还是rene的身份执行?这时我们应该想到了sudo -u了,它正是用在这种时候。 Daniel可以使用sudo -u jimmy kill PID或者sudo -u rene kill PID,但这样挺麻烦,其实我们可以不必每次加-u,把rene或jimmy设为默认的目标用户即可。再在上面加一行:
Defaults:foobar runas_default=rene
Defaults后面如果有冒号,是对后面用户的默认,如果没有,则是对所有用户的默认。就像配置文件中自带的一行:
Defaults env_reset

  

别名

#别名类型
1)Host_Alis定义主机别名
Host_Alias WEBSERVERS = web1, web2 #WEBSERVERS是主机组,web1,web2是主机 #每个主机使用逗号分隔逗号后面有空格,=号两边也有空格,主机组就是别名,可以用这个别名来限制,主机就是在第一个ALL位置,可以定义很多这样的别名,每个别名可以当做一个主机组,平常很少用到
#正在生产场景中,一般情况不需要设置主机别名,在定义授权规则时可以通过ALL来匹配所有的主机 2)User_Alias定义用户别名
#别名成员可以是用户,用户组(用户组前面要加%号)
User_Alias ADMINS = Daniel, qwer, %groupname
#假如说用户Daniel,qwer和用户组%groupname都有一样的权限,那么直接就可以使用别名ADMINS限制了,后期如果要增加一个同样权限的用户或组,直接在后面加上即可
#引用位置Daniel ALL=(ALL) ALL ALL #Daniel就是用户别名的引用位置 3)Runas_Alias定义runas别名
#这个别名指定的是“用户身份”,即sudo允许切换到的用户
#Runas-Alias定义的是某个系统用户可以执行sudo切换身份到Runas_Alias下包含的成员身份
#语法
Runas_Alias OP = root
#引用位置:括号里的那个ALL。表示使用sudo的时候是使用的OP身份来使用的(也就是root) 4)Cmnd_Alias定义命令别名
#命令别名就是定义一个可以把汗一对命令的名字
Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /usr/bin/net, /sbin/iptables
#引用位置:最后一个ALL。定义完成后,可以放在最后一个ALL位置,授权后,该用户或组就可以通过sudo来使用这些命令了 #完整定义
#User_Alias by Daniel
User_Alias ADMINS = admin, Daniel, %admins
User_Alias NETADMINS = netadmin, %netadmins
User_Alias USERADMINS = useradmin #Cmnd_Alias by Daniel
Cmnd_Alias USERCMD = /usr/sbin/useradd, /usr/sbin/userdel, /user/bin/passwd [A-Za-z]*, /bin/chown, /bin/chmod
Cmnd_Alias DISKCMD = /sbin/fdisk, /sbin/parted
Cmnd_Alias NETCMD = /sbin/ifconfig, /etc/init.d/network
Cmnd_Alias CTRLCMD = /usr/sbin/reboot, /usr/sbin/halt Runnas_Alias OP = root, Daniel ##
ADMINS ALL=(ALL) USERCMD, NETCMD, CTRLCMD
NETADMINS ALL=(OP) NOPASSWD: NETCMD
USERADMINS ALL=(OP) NOPASSWD: USERCMD #NOPASSWD,表示输入完一次后不需要在输入密码了,默认是输入完毕后,五分钟内不需要在输入

  


  

Linux--sudo权限讲解的更多相关文章

  1. Linux sudo权限绕过(CVE-2019-14287)

    2019年10月14日,Sudo官方发布了Sudo 1.8.28版本,其中包含sudo root权限绕过漏洞的补丁修复. 此漏洞编号是CVE-2019-14287,当sudo配置为允许用户以任意方式运 ...

  2. Linux sudo权限提升漏洞整改方法

    一.漏洞概述 1月26日,Sudo发布安全通告,修复了一个类Unix操作系统在命令参数中转义反斜杠时存在基于堆的缓冲区溢出漏洞.当sudo通过-s或-i命令行选项在shell模式下运行命令时,它将在命 ...

  3. Linux sudo权限提升漏洞CVE-2021-3156 POC及复现过程

    漏洞简介 2021年1月26日,国外研究团队披露了sudo 中存在的堆溢出漏洞(CVE-2021-3156).利用该漏洞,非特权账户可以使用默认的sudo配置主机上获取root权限,该漏洞影响1.8. ...

  4. Linux给用户添加sudo权限

    一.linux给用户添加sudo权限: 有时候,linux下面运行sudo命令,会提示类似: xxxis not in the sudoers file.  This incident will be ...

  5. Linux用户配置sudo权限

    Linux用户配置sudo权限 创建sudo权限用户 #useradd supope #passwd supope #visudo #supope         ALL=(ALL)       AL ...

  6. Linux文件权限;ACL;Setuid、Setgid、Stick bit特殊权限;sudo提权

    相关学习资料 http://blog.sina.com.cn/s/blog_4e2e6d6a0100g47o.html http://blog.csdn.net/aegoose/article/det ...

  7. Linux给用户增加sudo权限

    有时候我们在Linux下执行sudo的时候,出现 xxx is not int the sudoers file 告诉我们当前用户不是sudoer,所以我们要把当前用户添加进去,步骤如下: 1.进入超 ...

  8. Linux系统下给非root用户添加sudo权限

    Linux系统下给非root用户添加sudo权限 有时,在linux系统中非root用户运行sudo命令,会提示类似信息:  xxx is not in the sudoers file. This ...

  9. Linux系统下为普通用户加sudo权限

    Linux下为普通账号加sudo权限 1. 错误提示:当我们使用sudo命令切换用户的时候可能会遇到提示以下错误:xxx is not in the sudoers file. This incide ...

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

    Linux文件权限与属性详解 之 一般权限 Linux文件权限与属性详解 之 ACL Linux文件权限与属性详解 之 SUID.SGID & SBIT Linux文件权限与属性详解 之 ch ...

随机推荐

  1. Python与C相互调用、编译

    因为最近学习Boost::python的缘故,想尝试下不同语言之间的相互编译. 参考资料:http://blog.csdn.net/joliny/article/details/2457197. 很吃 ...

  2. COALESCE操作符

    一.应用场景 1.购买的零件和本地生产的零件都是零件,尽管多重的实体类型在数据存储上略有不同,但是它们有太多的相同之处,因此通常使用一个表格而不是两个. 所以这是如果我们需要计算零件的实际话费的话,那 ...

  3. CoreJava笔记之JavaBean、静态方法static和final

    记住两句话: 1.属性是静态绑定到变量类型: 2.方法是动态绑定,由最终对象的方法决定 =============================== 关于JavaBean: 1.不是语法规则,是习惯 ...

  4. loadView 与 viewDidLoad 和 didReceiveMemoryWarning与viewDidUnload 详解

    首先试验下:viewController初始化 分两个支路:initWithNibName加载初始化 及 init 直接初始化: <1>调用initWithNibName加载一个xib界面 ...

  5. ODBC, OLEDB, ADO, ADO.NET

    在SSIS中,选择Connction Manager时,有很多的类型.其中会发现如下4个连接类型ODBC, OLEDB, ADO, ADO.NET.这4个东东到底是什么,他们有什么关联,什么区别,如何 ...

  6. A space or line break was encountered after the "@" character. Only valid identifiers, keywords, comments, "(" and "{" are valid at the start of a code block and they must occur immediately following

    mvc 控制器调用分布视图出错,("A space or line break was encountered after the "@" character. Only ...

  7. ASP.Net Core MVC 网站在Windows服务器跑不起来

    1.vs远程发布到服务器,浏览器访问,报错502 2.打开错误提示提供的网址参考 3.安装runtime,sdk,Hosting Bundle Installer,其他操作 .....发现并没有什么用 ...

  8. ASP.NET MVC4 新手入门教程之九 ---9.查询详情和删除方法

    在本教程的这一部分,您会检查自动生成的Details和Delete方法. 检查详细信息和删除方法 打开Movie控制器并检查的Details的方法. public ActionResult Detai ...

  9. Centos7 linux下 安装 Redis 5.0

    网上找了很多文章,发现不全而且有些问题,安装很多次之后,总结一篇可以使用的,记录之. 环境:Centos7+Redis 5.0,如果环境不符合,本篇仅供参考. 1.准备工作 作者习惯软件安装包放在单独 ...

  10. Java温故而知新(7)Object类及其方法讲解

    一.java.lang.Object java.lang包在使用的时候无需显示导入,编译时由编译器自动导入. Object类是类层次结构的根,Java中所有的类从根本上都继承自这个类. Object类 ...