Linux权限管理(4)sudo权限

简介: 学习 sudo 权限前,先了解一下当用户第一次使用sudo权限时CentOS的系统提示我们信任您已经从系统管理员那里了解了日常注意事项。总结起来无外乎这三点:#1) 尊重别人的隐私。#2) 输入前要先考虑(后果和风险)。#3) 权力越大,责任越大。


一、sudo权限的配置



1. 编辑 sudo权限 命令

visudo
visudo 命令实际修改的是 /etc/sudoers 文件


2. /etc/sudoers 配置文件

[root/etc]# cat /etc/sudoers
... 省略部分内容 ...
## Allow root to run any commands anywhere
## 允许root在任何地方运行任何命令
root    ALL=(ALL)       ALL
## Allows members of the 'sys' group to run networking, software, service management apps and more.
## 允许“sys”用户组的成员运行 网络、软件、服务管理应用等命令。
# %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS
## Allows people in group wheel to run all commands
## 允许“wheel”用户组的成员运行所有命令
%wheel  ALL=(ALL)       ALL
## Allows people in group wheel to run all commands without a password
## 允许“wheel”用户组的成员运行所有命令,且运行时不需要输入密码
# %wheel        ALL=(ALL)       NOPASSWD: ALL
## Allows members of the users group to mount and unmount the cdrom as root
## 允许“users”组的成员运行 挂载、卸载光盘的命令
# %users  ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom
## Allows members of the users group to shutdown this system
## 允许“users”组的成员在本机运行 /sbin/shutdown -h now 命令
# %users  localhost=/sbin/shutdown -h now
## Read drop-in files from /etc/sudoers.d (the # here does not mean a comment)
## 读取 /etc/sudoers.d 目录下所有文件的内容作为配嵌入到此配置文件
## 注意,下面的 # 后面并不是注释
#includedir /etc/sudoers.d


为用户配置sudo权限

[用户名]    [被管理主机的IP]=([可以使用的身份])   [NOPASSWD: ][授权的命令]

[被管理主机的IP][可以使用的身份][授权的命令] 都可以使用 ALL 来表示不限制。添加 [NOPASSWD: ] 选项可以使用户在使用sudo权限时不需要输入密码。 [授权的命令]要使用绝对路径,多条命令之间可用逗号( ,)分隔。
  • 例:
## Allow root to run any commands anywhere
## 允许root在任何地方运行任何命令
root    ALL=(ALL)       ALL


为用户组配置sudo权限

%[组名]    [被管理主机的IP]=([可以使用的身份])   [NOPASSWD: ][授权的命令]


[被管理主机的IP][可以使用的身份][授权的命令] 都可以使用 ALL 来表示不限制。添加 [NOPASSWD: ] 选项可以使用户在使用sudo权限时不需要输入密码。用户组 与 用户 的唯一区别是用户组前有个 %
  • 例:
## 允许“wheel”用户组的成员运行所有命令,且运行时不需要输入密码
%wheel        ALL=(ALL)       NOPASSWD: ALL


3. 注意事项

1) 赋予用户sudo权限时一定要谨慎,够用即可,不要赋予过高的权限

2) [授权的命令] 设置得越具体,用户获得的权限越小。

3) 严禁赋予普通用户 /usr/bin/passwd/usr/bin/vi/usr/bin/su/usr/bin/bash 命令的权限,拥此权限的用户可以修改root用户密码,然后为所欲为。

4) 权力越大,责任越大。


二、sudo 命令介绍



1. sudo [命令]:以 root 身份来执行命令

用户必须有相应命令的sudo权限

例子

  • 普通用户使用 less 命令查看 root 用户的历史命令
[vagrant~]$ sudo less /root/.bash_history
cat report.md | grep -v ID | awk '$4 >= 99 {print $2}'
cat report.md | grep -v ID | awk '$4 <= 99 {print $2}'
cat report.md | grep -v ID | awk '$4 == 100 {print $2}'
sed -n '2p' report.md
sed -n '2,4p' report.md
sed '2,4d' report.md
cat -n report.md
sed '1a Begin' report.md
sed '1i Begin' report.md
sed '1a Begin' report.md
sed '1a End' report.md
sed '1c Hello World' report.md
sed '5c Hello World' report.md
... 省略 ...


2. sudo su:切换到root用户

用户必须有 /usr/bin/su命令的sudo权限一旦切换成功,用户可以以root身份执行任何命令

例子

  • 普通用户使用 sudo su 命令切换到 root 用户,然后修改root用户的密码
[vagrant/tmp]$ sudo su
[root/tmp]# passwd
更改用户 root 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。


3. sudo -s <shell>:切换到root用户的shell

可以不加 <shell>,会使用默认 shell用户必须有相应shell命令的sudo权限,例如 /usr/bin/bash一旦切换成功,用户可以以root身份执行任何命令

例子

  • 普通用户使用 sudo -s /usr/bin/bash 命令切换到 root 的shell,然后修改root用户的密码
[vagrant/tmp]$ sudo -s /usr/bin/bash
[root/tmp]# passwd
更改用户 root 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
  • 可以不加 <shell>,会使用默认 shell
[vagrant/tmp]$ sudo -s
[root/tmp]# exit


4. sudo -l:列出目前用户可用的sudo权限的指令

例子

[vagrant~]$ sudo -l
...省略部分内容...
用户 vagrant 可以在本机上运行以下命令:
    (ALL) /usr/bin/bash, /usr/bin/su, /usr/bin/less


三、sudo权限的应用



1. 授权普通用户可以重启服务器

  • 执行 visudo,然后添加如下内容
user1    ALL=(ALL)       /sbin/shutdown -r now
  • 切换到user1账号,查看user1可用的sudo权限的指令
[user1@10 ~]$ sudo -l
...省略部分内容...
用户 user1 可以在 10 上运行以下命令:
    (ALL) /sbin/shutdown -r now


2. 授权普通用户可以添加其他用户

功能分析

要想添加其他用户,必须拥有添加用户和设置密码的权限,即 /usr/sbin/useradd/usr/bin/passwd 两个命令的sudo权限

若用户完全拥有 /usr/bin/passwd 的sudo权限,则可以通过 sudo passwd 命令或者 sudo passwd root 命令修改 root 密码,这样就会变得非常不安全。

因此,需要严格限制用户对 /usr/bin/passwd 的权限:

user ALL=(ALL)    /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd "", !/usr/bin/passwd root

/usr/bin/passwd [A-Za-z]* 表示 passwd 命令后附加的第一个字符只能是大小写字母。

!/usr/bin/passwd "" 表示 passwd 命令后不能什么都不加。

!/usr/bin/passwd root 表示 passwd 命令后不能加 root。

三条语句的缺一不可,且顺序不能颠倒。


实例

  • 执行 visudo,然后添加如下内容
user1   ALL=(ALL)    /usr/sbin/useradd
user1   ALL=(ALL)    /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd "", !/usr/bin/passwd root
  • 切换到user1账号,查看user1可用的sudo权限的指令
[user1@10 ~]$ sudo -l
...省略部分内容...
用户 user1 可以在 10 上运行以下命令:
    (ALL) /usr/sbin/useradd
    (ALL) /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd \"\", !/usr/bin/passwd root
  • 添加用户user2,并为其设置密码
[user1@10 ~]$ sudo useradd user2
[user1@10 ~]$ sudo passwd user2
更改用户 user2 的密码 。
新的 密码:
无效的密码: 密码是一个回文
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[user1@10 ~]$ grep user2 /etc/passwd
user2:x:1006:1007::/home/user2:/bin/bash
  • 尝试以 passwdpasswd root 两种方式修改 root 用户的密码,全部失败
[user1@10 ~]$ sudo passwd
对不起,用户 user1 无权以 root 的身份在 10.0.2.15 上执行 /bin/passwd。
[user1@10 ~]$ sudo passwd root
对不起,用户 user1 无权以 root 的身份在 10.0.2.15 上执行 /bin/passwd root。
  • 添加用户2_user,尝试为其设置密码,失败。因为 /usr/bin/passwd [A-Za-z]* 决定 passwd 命令后附加的第一个字符只能是大小写字母。
[user1@10 ~]$ sudo useradd 2_user
[user1@10 ~]$ sudo passwd 2_user
对不起,用户 user1 无权以 root 的身份在 10.0.2.15 上执行 /bin/passwd 2_user。
相关文章
|
1月前
|
Linux Shell
Linux系统文件默认权限
Linux系统文件默认权限
|
7天前
|
Linux 数据安全/隐私保护
linux特殊权限!!
本文介绍了Linux系统中的特殊权限,包括suid、sgid和sbit。suid使普通用户在执行特定命令时获得root权限;sgid使用户在创建文件时继承目录的用户组权限;sbit确保用户只能删除自己在共享目录中创建的文件。此外,文章还讲解了chattr和lsattr命令,用于更改和查看文件的扩展属性,以及umask的概念和计算方法,帮助理解文件和目录的默认权限。
22 1
linux特殊权限!!
|
7天前
|
Linux 数据安全/隐私保护
linux权限管理
本文介绍了Linux系统中的权限管理,包括权限的概念、用户和用户组与权限的关系、文件权限位的说明以及rwx权限的具体含义。同时,详细讲解了如何使用`chmod`和`chown`命令更改文件和目录的权限,并通过多个实验演示了不同权限组合对文件和目录的实际影响。最后,总结了文件和目录权限的一些重要知识点,帮助读者更好地理解和应用Linux权限管理。
25 1
linux权限管理
|
1月前
|
Linux 数据安全/隐私保护
探索Linux操作系统下的权限管理
【8月更文挑战第66天】在数字世界中,操作系统的权限管理就如同现实世界中的钥匙和锁,保护着我们的数据安全。本文将带你深入理解Linux系统中的权限设置,通过实际代码示例,让你掌握文件和目录权限的分配与管理技巧。准备好了吗?让我们开始这场关于权限管理的探险之旅吧!
82 14
|
1月前
|
Linux 应用服务中间件 nginx
Linux下权限设置之suid、sgid、sticky
Linux下权限设置之suid、sgid、sticky
|
1月前
|
Linux 数据安全/隐私保护 Windows
Linux_权限理解(详细PLUS
Linux_权限理解(详细PLUS
|
1月前
|
网络协议 Linux 网络安全
【Linux】用户和权限及实用操作------迅速了解用户和权限及其实用操作
【Linux】用户和权限及实用操作------迅速了解用户和权限及其实用操作
|
1月前
|
Linux Go 数据安全/隐私保护
Linux入门2——初识Linux权限
Linux入门2——初识Linux权限
26 0
|
6月前
|
Linux Windows
Linux权限命令详解(二)
Linux权限命令详解(二)
|
6月前
|
安全 Linux 开发工具
Linux权限命令详解(一)
Linux权限命令详解(一)