sudo命令
sudo
命令是 Unix 和 Linux 系统中用于执行需要超级用户权限(即 root 权限)操作的工具。它允许系统管理员授予某些用户(或用户组)以 root 或其他指定用户的权限来运行特定命令,而无需知道 root 用户的密码。这种机制提高了系统的安全性和灵活性。
sudo权限
sudo
的权限配置主要通过 /etc/sudoers
文件进行管理。这个文件定义了哪些用户可以在何种条件下执行什么命令。直接编辑这个文件是有风险的,因为错误的语法可能导致系统无法正常使用 sudo
功能。因此,推荐使用 visudo
命令来编辑该文件,因为它会在保存前检查语法错误。
在 /etc/sudoers
文件中,你可以设置不同的规则,比如:
用户名 | 被管理主机的地址 | 可使用的身份 | 授权命令(绝对路径) | 说明 |
---|---|---|---|---|
username | ALL | ALL | ALL | 允许用户 username 作为任何用户在任何地方执行任何命令。 |
username | ALL | ALL | /usr/sbin/reboot, /usr/sbin/shutdown | 允许用户 username 执行 /usr/sbin/reboot 和 /usr/sbin/shutdown 命令。 |
huawei | ALL | ALL | /bin/ls, /usr/bin/touch | 允许用户 huawei 执行 ls 和 touch 命令。 |
- 用户名:这是你希望赋予
sudo
权限的用户名。 - 被管理主机的地址:指定用户可以在哪些主机上使用
sudo
。ALL
表示所有主机。 - 可使用的身份:指定用户可以以哪个用户的身份执行命令。
ALL
表示任何用户,包括 root。 - 授权命令(绝对路径):指定用户可以执行的具体命令。多个命令用逗号分隔。
visudo
sudo
命令介绍
基本格式
sudo
的基本格式如下:
sudo [选项] [命令]
常见选项包括:
-u username
:指定要以哪个用户的身份执行命令,默认为 root。-l
(小写 L):列出当前用户可用的 sudo 权限。-v
:验证 sudo 时间戳,更新时间戳但不执行命令。-k
:使 sudo 忘记时间戳,下次执行 sudo 需要重新输入密码。-s
或-i
:启动一个 shell 会话,在其中拥有超级用户权限。-H
:设置 HOME 环境变量为目标用户的 home 目录。
使用示例
- 以 root 身份运行命令:
sudo apt update
- 以另一个用户身份运行命令:
[root@cloud ~]# sudo -u admin touch /home/admin//ab.txt
[root@cloud ~]# ll /home/admin/ab.txt
-rw-r--r-- 1 admin admin 0 Oct 24 22:34 /home/admin/ab.txt
设置普通用户权限
- 以 root 用户或具有 sudo 权限的用户登录
sudo visudo
- 打开的编辑器中找到合适的位置(通常在文件末尾)添加以下行
huawei ALL=(ALL) /bin/ls, /usr/bin/touch
- 切换到huawei用户
su - huawei
- 测试去用户权限
[huawei@cloud ~]$ sudo ls /etc/passwd
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.
[sudo] password for huawei:
/etc/passwd
[huawei@cloud ~]$ sudo touch /root/aa.txt
[huawei@cloud ~]$ sudo ls /root/aa.txt
/root/aa.txt
[huawei@cloud ~]$ sudo ls -l /root/aa.txt
-rw-r--r-- 1 root root 0 Oct 24 22:45 /root/aa.txt
提示和注意事项
-
密码提示:首次在一个终端会话中使用
sudo
时,系统会要求你输入当前用户的密码,而不是 root 密码。之后的一段时间内(默认是 15 分钟),你可以无需再次输入密码就使用sudo
。 -
权限配置:
sudo
的权限是由/etc/sudoers
文件控制的,通常不应该直接编辑此文件,而是应该使用visudo
命令,它会在保存时检查语法错误。 -
日志记录:
sudo
通常会记录所有使用它的尝试到日志文件中,这对于安全审计很有帮助。 -
谨慎使用:由于
sudo
可以让你执行高权限的操作,所以在使用时要特别小心,确保你知道自己在做什么,以免对系统造成不必要的损害。