一、sudo命令的作用

sudo命令的作用是临时提升当前用户的权限,以使用只有目标用户才能使用的命令,并在命令使用结束后恢复到当前用户权限。最常见的是用来临时使用root才能执行的命令。

su的作用是切换到另一个用户,sudo的作用是临时使用另一个用户的命令

二、用法

sudo -u <用户名> <命令>

使用时,如果不加-u参数,则sudo默认执行root命令。

三、sudoers文件详解

系统:Debian 3.16.0,DC-2靶机

/etc/sudoers是sudo的配置文件,可配置某个普通用户可以使用的sudo命令

1 . sudo -l :查看当前用户可使用的sudo命令

解释:
(ALL) ALL:意思是当前用户(jerry)可以sudo执行root所有命令,但是默认需要输入密码
(root) NOPASSWD: /usr/bin/git : 意思是当前用户可以不需要输入密码即可sudo执行root的/usr/bin/git命令

2 . 切换至root,cat /etc/sudoers查看sudoers文件

图中跟sudo直接相关的配置是这四个
jerry ALL=(ALL) ALL
root ALL=(ALL:ALL) ALL
%sudo ALL=(ALL:ALL) ALL
jerry ALL = (root) NOPASSWD: /usr/bin/git

它们其实都是一样的格式,
通过编辑sudoers文件,在其中增删类似格式的配置项,就可以增减用户可执行的sudo命令

3 . sudo配置项的完整格式为
用户/组1 主机 = ( [用户] : [用户组] ) [是否需要密码验证:]命令1,[是否需要密码验证:]:命令2……

用户/组1: 表示需要提升权限的用户/组,前面加%表示组,不加表示用户
主机: 表示用户在哪台主机登录时可以使用该条sudo,配置时参数为主机名,ALL表示任意主机
[用户]: 表示提升到该用户的权限,ALL表示任意用户
[用户组]: 表示提升到该用户组的权限,ALL表示任意用户组
( [用户] : [用户组] ) : 该项可以省略,省略时相当于(root:root)
[是否需要密码验证:] : 注意这个密码是当前用户密码。该项省略时表示需要密码,如无需验证,添加参数NOPASSWD
命令1: 表示需要sudo的命令,需要写全命令的绝对路。ALL表示所有命令

所以,跟jerry的sudo可执行命令相关的配置项为
jerry ALL=(ALL) ALL 对从任意设备登录系统的用户jerry,可sudo执行所有root命令
jerry ALL = (root) NOPASSWD: /usr/bin/git 对于从任意设备登录系统的用户jerry,无需输入密码,就可以sudo使用root命令git

4 .通配符以及取消命令
jerry ALL=/usr/bin/*,!/usr/bin/less
命令前面加上 ! 号表示取消该命令,后边加上 * 表示该路径下所有命令。该例子的意思: 对从任意设备登录系统的用户jerry,可sudo执行所有/usr/bin下的所有命令,但less除外

四、编辑sudoers文件

1 . 直接vi编辑sudoers文件

示例:删除用户jerry可以sudo 执行所有root命令的配置

根据之前所述,删除sudoers中的jerry ALL=(ALL) ALL 配置项即可

①查看sudoers文件权限

ls -l /etc/sudoers

可以看到sudoers默认为只读文件

要修改suders文件,可以通过chmod u+w /etc/sudoers增加写入权限,然后使用vi编辑,也可以直接vi编辑结束后,使用!w强制保存修改。

②给sudoers文件增加写入权限

chmod u+w /etc/sudoers

修改后root对该文件权限变为rw

③使用vi编辑sudoers

vi /etc/sudoers

删除jerry ALL=(ALL) ALL

④切换回用户jerry,查看sudo能执行的命令,发现已经没有了(ALL) ALL,输入sudo more测试,提示无法执行,修改成功

2. 使用visudo编辑
linux中,有一个专用的sudoers编辑命令visudo,专门用来编辑sudoers文件,还可以检查配置格式是否正确,推荐使用visudo进行修改

示例:给jerry增加sudo more命令
①使用which命令查看more命令绝对路径

which more

可以看到绝对路径为/bin/more

②visudo打开编辑,添加配置项jerry ALL =(ROOT) NOPASSWD: /bin/more

编辑好后,ctrl+O保存>回车>ctrl+X退出
③su jerry切回jerry用户,查看可执行的sudo中命令多了more,测试sudo more可用,修改成功

3. 编辑sudoers.d代替直接编辑suders文件
查看sudoers文件权限时我们知道,sudoers是个只读文件,说明该文件非常敏感,一旦修改错误默认配置会导致比较棘手的问题。官方推荐通过编辑/etc/sudoers.d目录下的文件来达到所需配置。

在sudoers文件最后,可看到图中一行代码,从includedir可以看出,该行的作用与PHP中文件包含类似,包含并使用/etc/sudoers.d中的配置文件。事实上,任何在/etc/sudoers.d/目录下,不以~号结尾的文件和不包含.号的文件,都会被当成/etc/sudoers的内容解析。因此,我们只需要到/etc/sudoers.d目录下写入一个配置文件即可。

示例:给jerry增加sudo less命令

①直接使用vi在/etc/sudoers.d目录下创建一个test文件

vi /etc/sudoers.d/test

写入jerry ALL =(root) NOPASSWD: /usr/bin/less,保存
PS:
a.使用which less可知less的绝对路径为/usr/bin/less
b.使用vi编辑文件时,若需要编辑的文件不存在,则会新建一个文件

②切换为jerry,测试sudo less命令,添加成功

参考链接:
linux详解sudoers

Linux sudo命令和sudoers文件相关推荐

  1. linux sudo命令

    Linux sudo命令 正在上传-重新上传取消​ Linux 命令大全 Linux sudo命令以系统管理者的身份执行指令,也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行. 使用 ...

  2. Linux sudo 命令提权

    Linux sudo 命令提权 当我们需要用root用户来进行一些操作的时候,每次又不想切换到root用户下,可以给普通用户提权达来达目的. 1,修改配置文件 vim /etc/sudoers,在ro ...

  3. linux服务器垃圾箱,如何将Linux rm命令删除的文件放入垃圾箱

    因为rm命令删除的文件是不会放入垃圾箱的,所以无法恢复.通过替换Linux rm命令的方法,从而将rm命令删除的文件放入垃圾箱,这样就能将误删的文件恢复,一起来学习下吧. 方法: 1. 在/home/ ...

  4. linux 垃圾箱位置,如何将Linux rm命令删除的文件放入垃圾箱

    因为rm命令删除的文件是不会放入垃圾箱的,所以无法恢复,下面小编就给大家介绍一种方法,通过替换Linux rm命令的方法,从而将rm命令删除的文件放入垃圾箱. 方法: 1. 在/home/userna ...

  5. Linux垃圾箱位置,将Linux rm命令删除的文件放入垃圾箱的方法

    有的朋友说Linux rm命令删除的文件不会放入垃圾箱,想要找回这个文件很麻烦!现在我来告诉你们如何将Linux rm命令删除的文件放入垃圾箱! 方法: 1. 在/home/username/ 目录下 ...

  6. 使用ls命令查看Linux的目录结构,linux ls命令查看目录文件详解

    首页 > Linux教程 > 常用命令 > ls 查看目录文件 linux ls命令查看目录文件详解 linux中ls命令用来查看目录中的所有文件和子目录,可选的参数比较多,本文筛选 ...

  7. linux添加目录命令权限,linux chmod命令设置目录/文件权限详解

    首页 > Linux教程 > 常用命令 > chmod 文件权限 linux chmod命令设置目录/文件权限详解 linux中chmod命令用于改变系统文件或目录的访问权限,用数字 ...

  8. Day07 红帽Linux —从命令行管理文件

    红帽Linux - 从命令行管理文件 文章目录 红帽Linux - 从命令行管理文件 一.目录文件夹内容及作用 练习题目 答案 二.路径定位和目录信息 路径定位 路径 切换目录 查看目录内容 ls指令 ...

  9. Linux sudo命令报错:用户不在sudoers文件中

    Linux普通用户如果需要使用sudo以暂时获取root权限,需要在/etc/sudoers文件中添加用户的权限配置,具体步骤如下(以CentOS 7.2示例): 例如:以test用户获取sudo权限 ...

最新文章

  1. 网络推广离不开关键词的精准挖掘
  2. Spring boot格式化器
  3. HDU 6029(思维)
  4. java list 取几个字段组装成map_24道Java各类常见问题整理
  5. 【案例分享】无线唤醒技术在灌溉系统上的应用案例
  6. Angular Material design设计
  7. 工作问题总结-----付款
  8. Linux系统安装完成后创建交换空间
  9. VXLAN配置实例(五)——云计算数据中心访问公司外部站点典型配置实例(超级超级难的网络配置!!!)
  10. DevOps:软件架构师行动指南DevOps:软件架构师行动指南2.3 独特的云特性对DevOps的影响...
  11. 模拟电路中晶体管阵列的性能感知公共质心布局和布线 ALIGN
  12. 往年计算机二级在线查询,2012年计算机二级查询
  13. 我用 Python 写了个基金涨跌通知助手
  14. 学习...笔记05:时间,空间,时空傅里叶变换的基本技巧、获取自旋波的频谱图和色散图
  15. 喝咖啡写脚本,顺便再加一点点CSS语法糖 1.选择环境
  16. 计算机笔记--【并发编程①】
  17. css 侧栏跟随_如何实现博客的侧栏跟随(滚动条)效果
  18. HDU 5811 (拓扑排序 LIS)
  19. 国内微博客前景黯淡的两个原因
  20. 矩阵特征分解(svd)介绍及雅克比(Jacobi)方法实现特征值和特征向量的求解(C++/OpenCV/Eigen)

热门文章

  1. 亲爱的,那些想说却没有说出口的话,我都写在了……月饼上
  2. 基于MATLAB的视频运动目标检测识别
  3. 看完能涨薪10k的python+pytest接口自动化(1)-接口测试基础
  4. 互链周报 | 上周区块链新项目披露17个,融资项目7个,扶持政策中国占大半
  5. Python数据分析与展示:pandas库统计分析函数-13
  6. 苹果计算机开机进入安全模式,Mac其实也有安全模式,那么怎么进入呢?
  7. 电脑死机原因、和预防电脑死机技巧!!
  8. 高通打赢反垄断官司,坐地收钱躺赢 5G 时代
  9. 谷歌注册大陆手机号不可用
  10. html在表中加入输入框,HTML表单和输入文本框