学习sudo权限的设置

使用visudo 命令配置默认配置/etc/sudoers文件

文章目录

  • 学习sudo权限的设置
  • 使用visudo 命令配置默认配置/etc/sudoers文件
  • 概述
  • 基本授权操作
    • 1、授权sun⽤户完成 /usr/bin/cat /etc/shadow
    • 2、授权某个⽤户组的⽤户具有特定权限
    • 2、授权时间限制,默认5分钟内不⽤再次输⼊密码
    • 3、sudoers配置⽂件中的其他配置⽅式
    • 4、使⽤sudo时取消输⼊密码过程,在command前加上NOPASSWD
    • 5、配置⽂件中定义别名
    • 6、默认⽤户,使⽤sudo是可以使⽤-u 选项制定runas⽤户,不加-u是使⽤默认⽤户
    • 7、在配置⽂件中使⽤通配符,使⽤时需要注意,有可能有漏洞
    • 8、使⽤sudo -l 或者 -ll 查看当前⽤户具有的sudo可执⾏情况
    • 9、不执⾏任何命令,将⽤户的免密码时间更新⼀下:sodu -v
    • 10、sudo -k
    • 11、sudo -i -u user有切换⽤户功能,root有此功能, 授权sun⽤户切换到root⽤户
    • 12、给⽤户授权编辑sudoers⽂件的权限 使⽤sudoedit 即可

概述

centos7系统;在CentOS7上是 sudo.x86_64,使用yum install sudo命令即可安装。
sudo 的配置文件为/etc/sudoers、/etc/sudoers.d、/etc/sudoers 为总配置文件,也可以
在/etc/sudoers.d/文件夹下单独创建配置文件,实现配置分别管理。
可通过/usr/sbin/visudo 对配置文件进行编辑。
sudo程序的可执行文件为/usr/bin/sudo 有特殊权限位。

基本授权操作

sun  172.20.121.11=(root)    /bin/cat    /etc/shadow
被授权用户 登录主机地址=(授权成的用户) 授权的具体命令
被授权用户 user: 命令的发起用户
登录主机 host: 被授权用户所在的主机地址,可以写成ALL
授权成的用户 (runas): 想用哪个用户身份去运行命令
授权命令 command: 想被授权的命令 ,可以写成ALL 即所有命-a type       使用指定的 BSD 认证类型-b            在后台运行命令-C fd         关闭所有 >= fd 的文件描述符-E            在执行命令时保留用户环境-e            编辑文件而非执行命令-g group      以指定的用户组执行命令-H            将 HOME 变量设为目标用户的主目录。-h            显示帮助消息并退出-i [command]  以目标用户身份运行一个登录 shell-K            完全移除时间戳文件-k            无效的时间戳文件-l[l] command 列出用户能执行的命令-n            非交互模式,将不提示用户-P            保留组向量,而非设置为目标的组向量-p prompt     使用指定的密码提示-S            从标准输入读取密码-s [command]  以目标用户身份运行 shell-U user       在列表时,列出指定用户的权限-u user       以指定用户身份运行命令(或编辑文件)-V            显示版本信息并退出-v            更新用户的时间戳而不执行命令--            停止处理命令行参数

1、授权sun⽤户完成 /usr/bin/cat /etc/shadow

编辑/etc/sudoers ⽂件

root    ALL=(ALL)       ALL
sun     192.168.26.6=(root)     /bin/cat /etc/shadow
----------------------------------------------------
使用sun用户直接cat /etc/shadow 提示权限不够;
使用sudo cat /etc/shadow 提示输入sun用户密码,让后执行授权操
----------------------------------------------------
cat /etc/shadow 不能访问
sudo cat /etc/shadow 输入密码后可访问

2、授权某个⽤户组的⽤户具有特定权限

visudo 编辑 配置⽂件/etc/sudoers 配置如下

%wheel  ALL=(ALL)   ALL
%tom    ALL=(ALL)  ALL

tom组的⽤户具有所有⽤户的所有命令的权限

su -l tom
sudo cat /etc/shadow
输入密码即可

在/etc/sudoers.d ⽬录下创建授权配置⽂件 tom,并授权成root权限,可执⾏所有命令

cd /etc/sudoers.d/
vim tom
tom     ALL=(root)     ALL
-------------------------
su -l tom
cat /etc/shadow   #拒绝
sudo /etc/shadow   #输入密码即可

对于/etc/sudoers.d 下的授权管理配置⽂件也可以⽤visudo编辑,使⽤-f选项即可

visudo -f /etc/sudoers.d/tom

visudo 可以加上-c选项进⾏内容格式检查

visudo -c -f /etc/sudoers.d/tom

2、授权时间限制,默认5分钟内不⽤再次输⼊密码

使⽤sudo -V 可以查看⼀下sudo的详细信息

sudo -V
---------------------------------------
...
Authentication timestamp timeout: 5.0 minutes
Password prompt timeout: 5.0 minutes
Number of tries to enter a password: 3
Umask to use or 0777 to use user's: 022
Path to mail program: /usr/sbin/sendmail
Flags for mail program: -t
Address to send mail to: root
Subject line for mail messages: *** SECURITY information for %h ***
Incorrect password message: Sorry, try again.
Path to authentication timestamp dir: /var/db/sudo   #时间戳文件路径
...
---------------------------------------------------

查看⼀下对应⽤户的时间戳⽂件,⽂件内容不可直接查看

[root@centos6 ~]# cd /var/db/sudo   #时间戳文件路径
[root@centos6 sudo]# ll
total 4
drwx------ 2 root sun 4096 Nov 10 18:07 sun
[root@centos6 sudo]# cat sun
cat: sun: Is a directory
[root@centos6 sudo]# cd sun/
[root@centos6 sun]# ll
total 4
-rw------- 1 root sun 48 Nov 10 18:11 1
[root@centos6 sun]# cat 1ᆝQ®

3、sudoers配置⽂件中的其他配置⽅式

user host=(runas) command
其中user除了使⽤⽤户名外,还可以使⽤#uid代替user还可以使⽤⽤户组名
为了和⽤户名作区分,需要使⽤%groupname,同样使⽤%#gid代替也可以。

使⽤wang⽤户的uid进⾏授权操作,使⽤tom组id进⾏授权操作

#编辑授权配置⽂件[root@centos6 sun]# cat /etc/passwd | grep sun
sun:x:500:500:sunxiaobo:/home/sun:/bin/bash
------------------------------------------------
[root@centos6 sun]# visudo -f /etc/sudoers.d/test
[root@centos6 sun]# cat /etc/sudoers.d/test
%#1000  ALL=(ALL)  ALL

4、使⽤sudo时取消输⼊密码过程,在command前加上NOPASSWD

[root@centos6 sun]# visudo -f /etc/sudoers.d/test
[root@centos6 sun]# cat /etc/sudoers.d/test
sun ALL=(ALL)  NOPASSWD:AL
[root@centos6 sun]# su -l sun
[sun@centos6 ~]$ cat /etc/shadow | grep root
cat: /etc/shadow: Permission denied   #权限拒绝
[sun@centos6 ~]$ sudo cat /etc/shadow | grep root
root:$6$.L/ggVlq$D2qqIHGALvmeBjauATdeiF/Cc1A3Au.q.vtK...
[sun@centos6 ~]$ exit

5、配置⽂件中定义别名

配置⽂件中的4个部分都可以使⽤别名替换,别名只能使⽤⼤写字⺟和数字构成,以字⺟开头
每种⽂件都有特定的定义⽅法

cat /etc/sudoers.d/test
User_Alias SYSUSER=sun
HostAlias SYSHOST=192.168.26.6
Runas_Alias SYSRUNAS=root
Cmnd_Alias SYSCMD=/bin/cat /etc/shadow
SYSUSER SYSHOST=(SYSRUNAS) SYSCMD
su -l sun
cat /etc/shadow   #权限拒绝
sudo cat /etc/shadow | grep root   #可以查看

授权时禁⽌直⾏特定的命令,需要再命令前加上!

visudo -f /etc/sudoers.d/test
cat /etc/sudoers.d/test
sun ALL=(root) /bin/cat /etc/sudoers.d/test
su -l sun
cat /etc/shadow   #权限拒绝
cat /etc/gshadow   #权限拒绝
sudo cat /etc/shadow | grep sun
sudo cat /etc/gshadow | grep sun
exit

6、默认⽤户,使⽤sudo是可以使⽤-u 选项制定runas⽤户,不加-u是使⽤默认⽤户

设置tom为默认⽤户

cat /etc/sudoers.d/test
Defaults:sun runas_default=tom
sun ALL=(tom,root) ALL
su -l sun
cat /etc/shadow | grep root   #权限拒绝
sudo cat /etc/shadow | grep root   #权限拒绝
sudo -u root cat /etc/shadow | grep root
exit

将tom换成root

visudo -f /etc/sudoers.d/test
cat /etc/sudoers.d/test
Defaults:sun runas_default=root
sun ALL=(tom,root) ALL
su -l sun
cat /etc/shadow | grep root   #权限拒绝
sudo -u tom cat /etc/shadow | grep root   #权限拒绝
sudo cat /etc/shadow | grep root
exit

7、在配置⽂件中使⽤通配符,使⽤时需要注意,有可能有漏洞

在命令后⾯加上*号,会出现如下漏洞,未授权查看/etc/shadow,但是却可以查看shadow⽂件

cat /etc/sudoers.d/test
sun ALL=(root) /bin/head -1 /var/log/message*
su -l sun
head -1 /var/log/messages
权限拒绝;
sudo head -1 /var/log/messages
sudo head -1 /var/log/messages /etc/shadow

8、使⽤sudo -l 或者 -ll 查看当前⽤户具有的sudo可执⾏情况

visudo -f /etc/sudoers.d/test
cat /etc/sudoers.d/test
sun ALL=(root) /bin/head -1 /var/log/messages
su -l sun
sudo head -1 /var/log/messages
sudo -l
sudo -ll
exit

9、不执⾏任何命令,将⽤户的免密码时间更新⼀下:sodu -v

cd /var/run/sudo/ts/
date
su -l sun
sudo -v
exit
date

10、sudo -k

sudo -k 可以重置密码时间为1970年01⽉01⽇
由于当前时间肯定⼤于这个时间,因此下次执⾏sudo时,需要输⼊密码
sudo -K 可以删除时间戳⽂件,因此下次执⾏sudo时需要输⼊密码

ll
su -l sun
sudo -K
exit
su -l sun
sudo head -1 /var/log/messages
exit
ll

11、sudo -i -u user有切换⽤户功能,root有此功能, 授权sun⽤户切换到root⽤户

sudo -i -u sun
sudo -i -u root
输入密码;
exit
visodu -f /etc/sudoers.d/test
cat /etc/sudoers.d/test
tom ALL=(root) ALL
su -l sun
sudo -i -u root
输入密码;
exit
exit

12、给⽤户授权编辑sudoers⽂件的权限 使⽤sudoedit 即可

visodu -f /etc/sudoers.d/test
cat /etc/sudoers.d/test
sun  ALL=(root) /bin/cat /etc/shadow
su -l sun
sudoedit /etc/sudoers
权限拒绝;
exit
visudo -f /etc/sudoers.d/test
cat /etc/sudoers.d/test
tom ALL=(root) /bin/cat /etc/shadow, sudoedit
su -l sun
sudoedit /etc/sudoers
exit

linux进阶-sudo命令的理解相关推荐

  1. linux中sudo命令_Linux中的Sudo命令

    linux中sudo命令 Sudo is one of the most widely used commands by Linux administrators and beginners alik ...

  2. Linux系统Sudo命令的使用说明

    Linux系统Sudo命令的使用说明 2011-11-16 11:03:06|  分类:rhel5_033 |字号 订阅 一. sudo的特点 sudo扮演的角色注定了它要在安全方面格外谨慎,否则就会 ...

  3. sudu在linux的命令,Linux的sudo命令

    sudo命令允许您以另一个用户身份运行程序,默认情况下是root用户.如果你在命令行的权限上花了很多时间,sudo就是你经常使用的命令之一 使用sudo而不是以root身份登录会更安全,因为您可以在不 ...

  4. linux中sudo命令概述

    SUDO 使用背景 Sudo 的全称为:super user do. 顾名思义:干超级用户才能干的事!所以Sudo最常用的功能就是提升一个命名的执行权限. Linux是以用户和组来管理权限的,如果你使 ...

  5. Linux操作命令 sudo 命令使用

    概览 sudo 表示 "superuser do". 它允许已验证的用户以其他用户的身份来运行命令.其他用户可以是普通用户或者超级用户.然而,大部分时候我们用它来以提升的权限来运行 ...

  6. 【Linux中sudo命令】

    sudo: 允许普通用户使用一下root用户才可以执行的命令 sudo命令在执行时需要验证用户口令,所以使用该命令的用户必须有密码 1.限制用户在某台主机上执行 2.提供了非常详尽的日志, 3.提供了 ...

  7. Hadoop之——Linux下sudo命令报错:hadoop is not in the sudoers file. This incident will be reported.

    转载请注明出处:https://blog.csdn.net/l1028386804/article/details/93380235 当在终端执行sudo命令时,系统提示"cuser is ...

  8. linux下sudo命令[转]

    一.sudo简介:    1.概念: sudo是linux下常用的允许普通用户使用超级用户权限的工具,允许系统管理员让普通用户执行一些或者全部的root命令,如halt,reboot,su等等.这样不 ...

  9. Linux中sudo命令设置,Linux下sudo命令的配置与使用方法

    sudo的字面意思是代表super user do!对Linux系统管理员或高级用户而言,它是必不可少的最重要的命令之一. 你可曾有过这样的经历:在终端中试着运行某个命令,结果却遇到"拒绝访 ...

最新文章

  1. 用python解析word文件(段落篇(paragraph) 表格篇(table) 样式篇(style))
  2. Print out Android kernel log
  3. 华硕服务器显示模块,华硕远程管理模块 ASMB4-iKVM 华硕服务器主板专用 现货 IPMI...
  4. 7步让你get首个数据科学实习
  5. Entity Framework Core 2.1带来更好的SQL语句生成方案
  6. Unity AssetBundles and Resources指引 (三) AssetBundle基础
  7. iOS 实现启动屏动画(Swift实现,包含图片适配)
  8. (进阶)LeetCode(206)——反转链表(JavaScript)
  9. Windows Mobile如何得到资源文件中的文件
  10. 联机交易场景持续拓展,巨杉数据库中标吉林省农信
  11. PDF虚拟打印机的功能详解和使用方法
  12. Altium Designer PCB等长线设计终极技巧(单端和差分线)
  13. Brain Predicted Age (二)
  14. [uwsgi-body-read] Error reading 65536 bytes. Content-Length: 560903 consumed: 0 left: 560903 message
  15. vimdiff 命令使用技巧
  16. USB 协议 (五) 枚举
  17. 玉柴spn码故障对照表_玉柴ECI故障码表
  18. Android使用的MQTT客户端
  19. python去掉字典重复项_从字典列表中删除重复项python
  20. radis安装和使用

热门文章

  1. 团队经理负责什么工作
  2. java unsafe 类_Java Unsafe类的使用
  3. Splash的使用入门
  4. mac版 seoclient_Scrutiny 9 for Mac(网站SEO优化工具)
  5. 作为管理者,如何理解数据与业务?
  6. Android 开发 ADT 24.0.2 下载
  7. AD域服务器搭建指南
  8. 基础日语-星期、数字
  9. 弱连通和强连通_判断强连通图、单向连通图、弱连通图
  10. 如何查看Linux操作系统版本