sudo:super user do:“超级用户才能干的事”,其功能是授权某个普通用户执行管理员命令。
使用sudo服务可以授权某个指定的用户执行某些指定的命令。通过在满足工作需求的前提下尽可能少放权,可保证服务器的安全。配置sudo服务时,可以直接编辑配置文件/etc/sudoers,亦可以执行visudo命令进行设置,一切妥当后普通用户便能够使用sudo命令进行操作了。
sudo的主要特性:
- sudo 限制用户只在某台主机上运行某些命令。
- sudo 提供了丰富的日志,详细地记录了每个用户干了什么。它能够将日志传到中心主机或者日志服务器。
- sudo 使用时间戳文件日志来执行类似的“检票”系统。当用户调用sudo并且输入他的密码时,用户获得了一张存活期为5分钟的票(这个值可以在/etc/sudoers设置)
- sudo 的配置文件是/etc/sudoers,属性必须为0440,它允许系统管理员集中地管理用户的使用权限和使用主机。
sudo对很多人来说,是一个超级复杂的命令,其实不是因为命令有多难,而是因为命令本身还需要配置文件。
修改配置文件:
visudo
第一列 | 第二列 | 第三列 |
root | ALL=(ALL) | ALL |
用户名 | ALL:主机:允许从任何终端、机器访问 sudo; (ALL):身份:sudo 命令被允许以谁的身份执行; | ALL:允许的命令:所有命令都可以作为 root 执行 |
在101行处添加:
tom ALL=(ALL) NOPASSWD: ALL
放开其他权限:
root ALL=(ALL) ALL
tom ALL=(ALL) NOPASSWD:ALL
# tom用户可以在任何主机上以任何用户和组的身份执行任何命令,而不需要输入密码
jake ALL=(ALL) /usr/bin/mkdir, /usr/bin/rm, /usr/bin/touch
# jake用户可以在任何主机上以任何用户和组的身份执行mkdir、rm、touch命令,需要输入密码
alan ALL=(ALL) NOPASSWD:/usr/bin/mkdir, /usr/bin/rm, /usr/bin/touch
# alan用户可以在任何主机上以任何用户和组的身份执行mkdir、rm、touch命令,而不需要输入密码
语法:
sudo 参数 命令
参数:
-A :使用图形化界面读取用户密码值
-p :设置需要密码验证时的提示语
-b :将要执行的命令放在后台执行
-r :设置新的SELinux映射角色
-E :保留用户原本的环境变量信息
-s :设置默认调用的Shell终端
-t :设置新的SELinux安全上下文类型
-H :将用户的家目录环境变量设置为/root
-u :设置使用哪位用户的身份执行
-i :模拟用户的初始登录过程
-l :列出;列出用户权限或检查某个特定命令
-v :设置需要验证当前用户的密码
-k :下次强制验证当前用户的密码
-v :更新用户的缓存信息,让密码有效期延长5分钟
-K :删除用户的缓存信息,让密码有效期立即结束
示例:
1.查看当前用户有哪些被sudo服务授权的命令
sudo -l