问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

sudo 命令:掌握系统权限控制,实现安全高效管理

创作时间:
作者:
@小白创作中心

sudo 命令:掌握系统权限控制,实现安全高效管理

引用
CSDN
1.
https://blog.csdn.net/qq_38641599/article/details/142563914

sudo命令是Linux系统中用于权限管理的重要命令,它允许系统管理员授权普通用户执行特定命令,并以管理员身份运行这些命令。本文将详细介绍sudo命令的使用方法、参数说明以及sudoers配置文件的详细讲解,帮助读者掌握系统权限控制,实现安全高效的系统管理。

一、命令简介

sudo
命令允许系统管理员授权普通用户执行特定命令,并以管理员身份运行这些命令,通常需要输入用户自己的密码。

sudo 全称是"substitute user do",意为“替用户做”,也就是“以另一个用户的身份执行命令”。

  • 优点
    这种机制既提高了系统的安全性,又简化了权限管理。

  • 工作原理
    当用户执行 sudo 命令时,系统会检查/etc/sudoers 文件,该文件定义了哪些用户可以执行哪些命令。如果用户被授权,sudo 会要求他们输入自己的密码,然后执行指定的命令。

  • 配置文件
    sudo 的配置文件位于/etc/sudoers。你可以看到类似如下内容

Defaults        env_reset
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
Defaults        use_pty
root    ALL=(ALL:ALL) ALL
%admin ALL=(ALL) ALL
%sudo   ALL=(ALL:ALL) ALL
@includedir /etc/sudoers.d  

%sudo ALL=(ALL:ALL) ALL
表示:赋予
sudo
用户组执行任何命令的权限。

  • 编辑配置文件
    编辑这个文件需要使用
    visudo
    命令,它会进行语法检查,防止配置错误。
sudo visudo  

第四章会详细讲解如何配置 sudoers 文件。

二、命令参数

典型示例

sudo apt update  

选项:

  • -u, --user=用户
    : 指定以哪个用户的身份来执行命令。

  • -l, --list
    : 列出当前用户可以执行的命令。

  • -s, --set-home
    : 设置 HOME 环境变量为目标用户的家目录。

  • -i, --login
    : 以目标用户的环境变量登录。

  • -v, --validate
    : 验证用户的密码,更新时间戳文件。

  • -h, --help
    : 显示帮助信息。

三、命令示例

  1. 以 root 权限执行**
    apt update
    命令**:
sudo apt update  
  1. 以特定用户**
    john
    的身份执行****
    ls
    命令**:
sudo -u john ls  
  1. 更新**
    sudo
    时间戳**
sudo -v  

不仅限于
sudo -v
,只要执行了任意
sudo
命令并验证正确密码后,时间戳将更新:允许你在一段时间内继续执行
sudo
操作而无需再次输入密码。这是一种提高用户体验的机制。

四、sudoers 文件

sudoers
文件的配置规则用于定义哪些用户或用户组可以使用
sudo
命令以及他们能执行哪些命令。该文件有严格的语法要求,因此使用
visudo
编辑它以防止语法错误是非常重要的。

sudoers 文件的基本语法结构

  1. 基本格式
[用户] [主机]=[运行身份] [命令]  
  • [用户]
    :定义具有权限的用户或用户组。可以是单个用户名或
    %
    开头的用户组名称。

  • [主机]
    :表示从哪些主机可以使用 sudo 权限,通常设置为
    ALL
    ,表示从所有主机都可以执行。

  • [运行身份]
    :用户以哪个身份执行命令,通常是
    ALL
    ,也可以是
    root
    或其他用户。

  • [命令]
    :指定用户可以运行的命令,可以是
    ALL
    表示所有命令,也可以限制特定命令路径。

  1. 具体示例
  • 允许用户
    username
    在所有主机上以任何用户身份运行所有命令:
username ALL=(ALL:ALL) ALL  
  • 允许用户
    username

    root
    身份在所有主机上运行
    /bin/ls
    命令:
username ALL=(root) /bin/ls  
  • 允许用户
    admin
    在所有主机上以
    root
    身份运行所有命令,但不需要输入密码:
admin ALL=(ALL) NOPASSWD: ALL  
  • 允许用户组
    admins
    成员在所有主机上以
    root
    身份运行所有命令:
%admins ALL=(ALL:ALL) ALL  
  • 限制用户
    user1
    只能在
    server1
    主机上以
    root
    身份运行
    /usr/bin/vim
user1 server1=(root) /usr/bin/vim  
  1. 常用关键字
  • ALL:用于表示任意主机、任意用户或任意命令。

  • NOPASSWD:用于表示在执行命令时不需要输入密码。

  • Cmnd_Alias:命令别名,简化复杂的命令集。例如:

Cmnd_Alias WEBADMIN = /usr/bin/systemctl restart apache2, /usr/bin/systemctl status apache2  

然后,可以允许用户
webadmin
执行这些命令:

webadmin ALL=(ALL) WEBADMIN  
  1. 别名定义
    sudoers
    文件允许使用别名来管理权限,常见别名包括:
  • User_Alias:用户别名。

  • Runas_Alias:运行身份别名。

  • Host_Alias:主机别名。

  • Cmnd_Alias:命令别名。

示例:

User_Alias ADMINS = alice, bob
Host_Alias WEBSERVERS = web1, web2
Cmnd_Alias SERVICE = /bin/systemctl restart
ADMINS WEBSERVERS=(ALL) SERVICE  

重要配置示例

  • 允许普通用户使用 root 权限执行所有命令:
username ALL=(ALL:ALL) ALL  
  • 允许用户组执行命令:
%groupname ALL=(ALL:ALL) ALL  
  • 允许用户执行特定命令:
username ALL=(ALL) /usr/bin/ls, /usr/bin/cat  
  • 允许用户无需密码执行命令:
username ALL=(ALL) NOPASSWD: ALL  

注意事项

关于安全的建议:

  • 仅为信任的用户和用户组授予
    sudo
    权限,尤其是使用
    NOPASSWD
    时。

  • 始终使用
    visudo
    编辑
    sudoers
    文件以避免语法错误。

  • 避免滥用
    sudo
    权限,仅在需要时使用,以确保系统的安全性和稳定性。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号