su
1.【su - username】 或者 【su -l username】,完整的切换到新用户的环境,连同PATH、USER、MALL等变量都换成新用户的环境。su -直接将用户身份变成root
2.【su - -c "命令串"】,仅执行一次root的命令。
3.使用root切换成任何用户时,并不需要输新用户的密码
虽然使用su很方便,不过缺点是,使用su来切换成root的身份,需要知道root的密码,这样root的密码会流出去,不安全。
sudo
sudo可以让你以其他用户身份的执行命令,但是并非所有人都能执行sudo,而是仅有规范到/etc/sudoers内的用户才能执行sudo这个命令。一开始系统默认仅有root可以执行sudo。
所以,其他非root用户能否使用sudo必须要看/etc/sudoers的设置值,而可使用sudo者是通过输入用户自己的密码来执行后续的命令串。
因为/etc/sudoers是设置过语法的,如果设置错误会导致sudo命令失效。修改需要用【visudo】命令,并且在退出修改界面时,操作系统会检查该文件的语法是否正确。其实visudo只是将该文件调出来进行修改而已。
需要配置的大致如下
使用者账号 登陆者来源主机=(可切换的身份) 可执行的命令 root ALL=(ALL) ALL %wheel ALL=(ALL) NOPASWD:ALL -- %wheel表示用户组,NOPASSWD表示不需要密码就可以使用sudo命令 myuser ALL=(root) !/usr/bin/passwd,/usr/bin/passwd [a-zA-Z]*,!/usr/bin/passwd root --可执行的命令必须使用绝对路径才可以 |
此外,在/etc/sudoers文件中,也可以为多个用户、多个命令创建别名来简化设置方式
User_Alias ADMPW=user1,user2
Cmnd_Alias ADMPWCOM=/usr/bin/passwd,/usr/bin/useradd
使用sudo命令很简单,【sudo 命令串】
例子:使用sudo搭配su,一口气将身份转为root,而且还用自己的密码变成root
User_Alias ADMINS = user1,user2
ADMIN ALL=(root) /bin/su -