su命令即(switch user)切换到其它身份用户
su - #默认是root,如下相同
su - root #切换到root用户,并至root目录,不带-只切换用户
su -c ls root #变更帐号为root并在执行ls指令后退出变回原使用者
sudo命令即(super user do)是一种权限管理机制,依赖于/etc/sudoers.它允许授权用户以超级用户或是其他用户身份执行命令而无需知晓超级用户密码。虽然su也可以在不切换用户身份的情况下,临时以其他用户执行命令,但是需要root密码,造成了安全隐患.
sudo命令参数:
sudo [-bhHpV][-s ][-u <用户>][指令]
或
sudo [-klv]
参数
-b 在后台执行指令。
-h 显示帮助。
-H 将HOME环境变量设为新身份的HOME环境变量。
-k 结束密码的有效期限,也就是下次再执行sudo时便需要输入密码。
-l 列出目前用户可执行与无法执行的指令。
-p 改变询问密码的提示符号。
-s 执行指定的shell。
-u <用户> 以指定的用户作为新的身份。若不加上此参数,则预设以root作为新的身份。
-v 延长密码有效期限5分钟。
-V 显示版本信息。
-S 从标准输入流替代终端来获取密码
sudo命令配置(/etc/sudoers)
默认配置如下:
## root 用户可以在任意主机上以任意用户、组的权限执行任意命令,说明root用户具有最高级的权限。
root ALL=(ALL:ALL) ALL
## admin组的用户都拥有最高级权限。
%admin ALL=(ALL) ALL
## sudo 组用户和root用户权限一样
%sudo ALL=(ALL:ALL) ALL
更多配置:
#让用户运行命令的时候不输入密码
username ALL= NOPASSWD:/usr/sbin/useradd
#指定多个用户,或者组
username1,username2 ALL=/usr/sbin/useradd
#指定多个主机
username mail,apache=/usr/sbin/useradd
#指定多个被代替的用户
username ALL=(root,database) /usr/sbin/useradd
#指定多个命令
username ALL= /usr/sbin/useradd,/usr/sbin/usemod
#指定某个目录下的所有命令
username ALL= /usr/sbin/*
#指定排除的命令,不允许的命令前面都要加上叹号
username ALL= (root) /usr/sbin/* !/usr/sbin/usermod,!/sbin/useradd