LOADING...

加载中请稍等...

loading

Linux每日一篇 - 28 - sudo

Linux权限管理神器!掌握sudo命令,安全执行特权操作,让系统管理更安全!

sudo命令是什么?

sudo(Superuser Do)是Linux中用于以其他用户身份(通常是root)执行命令的安全机制,比直接使用su更安全和灵活。

基本用法

# 以root身份执行命令
sudo command

# 以指定用户身份执行命令
sudo -u username command

# 切换到root用户的shell环境
sudo -i

# 切换到指定用户的shell环境
sudo -u username -i

# 保持当前环境变量执行命令
sudo -E command

# 指定配置文件执行命令
sudo -f /path/to/sudoers file command

# 输入密码后立即退出
sudo -v

# 清除sudo缓存的密码
sudo -k

实用技巧

# 临时获得root权限执行命令
sudo apt update

# 以其他用户身份创建文件
sudo -u www-data touch /var/www/file.txt

# 编辑系统配置文件
sudo nano /etc/hosts

# 重启服务
sudo systemctl restart nginx

# 查看sudo权限
sudo -l

# 在脚本中使用sudo(避免密码输入问题)
#!/bin/bash
echo "password" | sudo -S command

# 保持环境变量执行命令
sudo -E env

# 编辑sudoers文件(配置sudo权限)
sudo visudo

# 临时提升权限执行多个命令
sudo -s
# 执行多个命令
exit

配置sudoers文件

# 编辑sudoers文件(重要:使用visudo命令)
sudo visudo

# 常用配置示例:
# 允许用户组wheel执行所有命令
%wheel ALL=(ALL) ALL

# 允许用户john无需密码执行特定命令
john ALL=(ALL) NOPASSWD: /usr/bin/systemctl

# 允许用户执行特定目录下的所有命令
username ALL=(ALL) /usr/local/bin/*

# 允许用户以特定用户身份执行命令
username ALL=(target_user) /path/to/command

# 设置sudo环境变量
Defaults env_reset
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

常用场景

# 安装软件包
sudo apt install package_name

# 修改系统配置文件
sudo nano /etc/nginx/nginx.conf

# 重启系统服务
sudo systemctl restart apache2

# 查看受保护的日志文件
sudo cat /var/log/syslog

# 管理用户账户
sudo useradd newuser

# 挂载文件系统
sudo mount /dev/sdb1 /mnt/backup

# 清理系统缓存
sudo apt autoremove

# 启动/停止服务
sudo service nginx start
sudo service nginx stop

# 执行需要root权限的系统维护
sudo updatedb

安全注意事项

# 1. 最小权限原则:只给用户分配必要的权限
# 2. 避免使用 "ALL=(ALL) NOPASSWD: ALL" 
# 3. 定期审查sudoers配置
# 4. 监控sudo使用日志
# 5. 设置sudo超时时间
Defaults timestamp_timeout=15  # 15分钟后要求重新输入密码

关于我

全平台同名”汪多多是只猫”,专注分享实用技术教程,让你的IT学习之路更轻松!

关注我,每天一个Linux命令,轻松入门Linux系统!

头像
汪多多是只猫
失业的运维工程师
热爱开源与分享
微信公众号