SUDO

最后更新于:2022-04-01 22:43:29

Sudo 可以给用户一些超级用户的权限而不需要 root 密码。Sudo 对于一个服务器和工作站混合的多用户环境来说非常有用。使用 sudo 运行命令: # sudo /etc/init.d/dhcpd restart            # 用 root 权限运行 rc 脚本 # sudo -u sysadmin whoami                   # 使用其他用户运行命令 ## 配置 Sudo 的配置在 `/etc/sudoers` 中,并且只能用 `visudo` 编辑。其基本语法是(列表是以逗号分隔的): user hosts = (runas) commands          # 在 /etc/sudoers 中 - `users` 一个或多个用户或是%用户组(像 %wheel) 来获得权限 - `hosts` 主机列表(或 ALL) - `runas` 列出用户以何种身份(或 ALL)来执行命令,放在 ( ) 内! - `commands` 列出可被 users 以 runas 或 root 权限运行的命令(或 ALL) 另外一些关键字可以定义别名,他们是 User_Alias, Host_Alias, Runas_Alias 和 Cmnd_Alias。这对于一些较大的设置比较有用。下面是 sudoers 例子: # cat /etc/sudoers # 主机别名 Host_Alias   DMZ     = 212.118.81.40/28 Host_Alias   DESKTOP = work1, work2 # 用户别名 和 runas 别名 User_Alias   ADMINS  = colin, luca, admin User_Alias   DEVEL   = joe, jack, julia Runas_Alias  DBA     = oracle,pgsql # 命令别名,其值为全路径命令 Cmnd_Alias   SYSTEM  = /sbin/reboot,/usr/bin/kill,/sbin/halt,/sbin/shutdown,/etc/init.d/ Cmnd_Alias   PW      = /usr/bin/passwd [A-z]*, !/usr/bin/passwd root # Not root pwd! Cmnd_Alias   DEBUG   = /usr/sbin/tcpdump,/usr/bin/wireshark,/usr/bin/nmap # 一个真实的规则 root,ADMINS  ALL     = (ALL) NOPASSWD: ALL    # ADMINS 别名中的用户可做任何事情不需要密码 DEVEL        DESKTOP = (ALL) NOPASSWD: ALL    # 开发人员可在 DESKTOP 别名的主机上做任何事情 DEVEL        DMZ     = (ALL) NOPASSWD: DEBUG  # 开发人员可以在 DMZ 别名的主机上使用 DEBUG 别名中的命令 # 用户 sysadmin 可以在 DMZ 服务器上执行一些命令 sysadmin     DMZ     = (ALL) NOPASSWD: SYSTEM,PW,DEBUG sysadmin     ALL,!DMZ = (ALL) NOPASSWD: ALL   # 可以在非 DMZ 主机上做任何事情 %dba         ALL     = (DBA) ALL              # 用户组 dba 可以运行 DBA 别名中用户权限的所有命令 # 所有用户可以在 DESKTOP 别名的主机上 挂载/卸载 CD-ROM ALL          DESKTOP = NOPASSWD: /sbin/mount /cdrom,/sbin/umount /cdrom
';