sudo 可以让你以其他用户的身份执行命令,然而并非所有用户都能执行 sudo 仅有 /etc/sudoers 内的用户才能使用 sudo 。
而 sudo 的配置文件 /etc/sudoers 仅有 root用户 和 root用户组能查看该文件。
可以直接用vim编辑来修改配置,但不建议使用,因为vim不会检查语法错误, 而/etc/sudoers 是有语法的,如果设置错误可能会造成系统级别的问题,推荐用 visudo 命令来修改。
sudo 的选项
-l 列出当前用户可以使用的所有的 sudo 命令
-k 让认证信息失效
/var/log/secure 记录所有 sudo 相关操作的所有日志
如何使用sudo:
用普通用户 tom 执行查询 /etc/shadow 由于 tom 不是 root 没权限查询
尝试通过 sudo 命令来查询 由于 tom 不是 /etc/sudoers 内的用户所以无法通过 sudo 来执行该命令
切回 root 用户 用 visudo 命令 去修改 /etc/sudoers
找到 root ALL=(ALL) ALL 这行 并在这行下新添加或修改已有的配置
4个参数的意义
第一个 代表用户 who
第二个 登陆者的来源主机名(这个账号是由哪个主机连接到本主机) which_host
第三个 可切换的身份 runas
第四个 可执行的命令 (命令用绝对路径来写) command
ALL 代表任何 主机 身份 命令
语法格式: who which_host=(runas) command
注意:工作上不应该这么设置 普通用户拥有完全的 root 权限简直是恐怖
sudo 支持别名机制 (注意:别名的名字全部且只能使用大写字母)
如:
用户别名:可以包含用户的用户名,组名还可以包含其他已经定义好的用户别名(!可以取反 !tom 表示除 tom 用户以外)。
主机别名:可以包含主机名,IP地址,网络地址或者其他定义好的主机别名。
ruans 别名:用户名,组名,其它定义好的ruans别名
命令别名:命令要用绝对路径,此目录下的所有命令,或者其他定义好的命令别名
配置好 visudo 后再通过 sudo 命令执行查询 其中输入密码是输入当前用户的密码(也就是 tom 用户的密码)
也可以在命令前 添加 NOPASSWD: 修改配置 就可以不用输入密码了
sudo 的时间间隔
如果使用同一账号在短时间内重复操作 sudo 来运行命令,在第二次执行 sudo 时不需要输入自己的密码,两次使用 sudo 的间隔时间在5分钟内才可以,如超过则需重新输入密码。