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系统!