6 个超实用的 Sudo 命令使用技巧

前言

什么是sudo命令

sudo 表示 “superuser do”,它允许已验证的用户以其他用户的身份来运行命令。其他用户可以是普通用户或者超级用户。然而,大部分时候我们用它来提权运行命令,以替代直接使用 root 用户的操作。sudo 命令与安全策略配合使用,安全策略可以通过文件 /etc/sudoers 来配置。其安全策略具有高度可拓展性,支持插件扩展。默认情况下 /etc/sudoers 是不能被任何人直接编辑的,因为它的权限是 440,虽然也可以对其赋予写权限后再编辑,但推荐使用 visudo 命令编辑该文件。

一、工作模式理解

1.1理解sudo命令的工作流程

  • sudo 会读取和解析 /etc/sudoers 文件,查找调用命令的用户及其权限。
  • 然后提示调用该命令的用户输入密码,或者也可以通过 NOPASSWD 标志来跳过密码验证。
  • 之后,sudo 创建一个子进程,调用 setuid() 来切换到目标用户。
  • 最好,它会在上述子进程中执行参数给定的 shell 或命令。

1.2理解 sudo 命令授权配置

  • USER/GROUP HOST=(USER[:GROUP]) [NOPASSWD:] COMMANDS
  • USER/GROUP: 表示需要被授权的用户或者组;如果是组则需要以 % 开头
  • HOST: 表示允许从哪些主机登录的用户运行 sudo 命令;ALL 表示允许从任何终端、机器访问
  • (USER[:GROUP]): 表示使用 sudo 可切换的用户或者组,组可以不指定;ALL 表示可以切换到系统的所有用户
  • NOPASSWD: 如果指定,则该用户或组使用 sudo 时不必输入密码
  • COMMANDS: 表示运行指定的命令;ALL 表示允许执行所有命令
# 允许 sudo 组执行所有命令
%sudo ALL=(ALL:ALL) ALL

# 允许用户执行所有命令,且无需输入密码
escape ALL =(ALL) NOPASSWD: ALL

# 仅允许用户执行 echo, ls 命令
escape ALL =(ALL) NOPASSWD: /bin/echo /bin/ls

# 运行本机的用户执行关机命令
escape localhost=/sbin/shutdown -h now

# 允许 users 用户组中的用户像 root 用户一样使用 mount、unmount、chrom 命令
%users ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom

1.3配置Defaults选项

# 指定用户尝试输入密码的次数,默认值为3
Defaults passwd_tries=5

# 设置密码超时时间,默认为 5 分钟
Defaults passwd_timeout=2

默认 sudo 询问用户自己的密码,添加 targetpw 或 rootpw 配置可以让 sudo 询问 root 密码
Defaults targetpw

# 指定自定义日志文件
Defaults logfile="/var/log/sudo.log"

# 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值