Linux学习笔记 | sudo命令的基本使用

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。
  • 授权命令(绝对路径):指定用户可以执行的具体命令。多个命令用逗号分隔。
bash 复制代码
 visudo

sudo 命令介绍

基本格式

sudo 的基本格式如下:

bash 复制代码
sudo [选项] [命令]

常见选项包括:

  • -u username:指定要以哪个用户的身份执行命令,默认为 root。
  • -l (小写 L):列出当前用户可用的 sudo 权限。
  • -v:验证 sudo 时间戳,更新时间戳但不执行命令。
  • -k:使 sudo 忘记时间戳,下次执行 sudo 需要重新输入密码。
  • -s 或 -i:启动一个 shell 会话,在其中拥有超级用户权限。
  • -H:设置 HOME 环境变量为目标用户的 home 目录。

使用示例

  • 以 root 身份运行命令:

    bash 复制代码
    sudo apt update
  • 以另一个用户身份运行命令:

bash 复制代码
[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 权限的用户登录
bash 复制代码
sudo visudo
  • 打开的编辑器中找到合适的位置(通常在文件末尾)添加以下行
bash 复制代码
huawei ALL=(ALL) /bin/ls, /usr/bin/touch
  • 切换到huawei用户
bash 复制代码
 su - huawei
  • 测试去用户权限
bash 复制代码
[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
bash 复制代码
[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 可以让你执行高权限的操作,所以在使用时要特别小心,确保你知道自己在做什么,以免对系统造成不必要的损害。

相关推荐
比奥利奥还傲.12 天前
哪吒监控面板实战:部署 Dashboard、接入 Agent、钉钉告警,再配置固定公网访问
网络·人工智能·分布式·1024程序员节
默 语14 天前
Java新手入门:从零开始安装JDK并配置环境变量
java·开发语言·python·mysql·group by·1024程序员节·数据去重
学传打活1 个月前
【边打字.边学昆仑正义文化】_进阶篇5 宇宙星系的运转(续3)
微信公众平台·1024程序员节·汉字·昆仑正义文化
学传打活1 个月前
【边打字.边学昆仑正义文化】_进阶篇5 宇宙星系的运转(续1)
微信公众平台·1024程序员节·汉字·昆仑正义文化
fangzhanpeng1681 个月前
快速掌握C#语言基础知识点(1.基础数据类型)
开发语言·c#·1024程序员节
无己心1 个月前
面向多平台 AI 搜索引擎的适配层架构设计
前端·人工智能·搜索引擎·ai·1024程序员节
u0103055272 个月前
AI驱动的安卓UI自动生成功能实现
人工智能·1024程序员节
u0103055272 个月前
长株潭智能体赋能腾讯元器链接共享
1024程序员节
云贝贝贝2 个月前
OceanBase认证体系介绍与备考指南
运维·服务器·oceanbase·1024程序员节
u0103055272 个月前
Java图像处理实战指南
人工智能·1024程序员节