一、su
如果以普通用户user1登陆系统后,要增加一个用户,但是普通有用又没有useradd的权限,那么可以有2个办法:
1、先用exit退出系统,然后在以root用户登陆,之后useradd增加用户。
2、使用su命令,su就是switch user切换用户。
(1)su命令在不加参数时,默认切换到root用户,只要输入root的密码,就可以切换到root身份,直到使用exit退出。
注意这里虽然切换到root,但实际上并没有自动切换家目录。
(2)su命令加上一个 - 参数,不但可以切换成root,还可以应用root的环境。
可以看到提示符从$变长了#。
二、sudo
用其他用户身份和权限执行命令,而并不是切换用户。
上面的su命令虽然方便,但是需要预先知道切换用户的密码,如果泄漏出去,系统安全会受到严峻的挑战。
语法:用户MySQL要修改用user1的密码:sudo passwd user1 。
原理是:运行命令时,系统检查/etc/sudoers 配置文件,看这个用户是否有执行sudo的权限,如果有权限,系统要求输入用户自己的密码,如果密码输入正确,系统会以root身份运行 passwd xx命令。
/etc/sudoers文件可以用vi修改(不建议),但是考虑到配置文件很重要,linux提供了visudo命令来修改文件,并且在保存时会自动检测语法,防止配置错误导致没办法使用sudo命令。
含义是:
(1)用户mysql(第1列),可以从任何地方登录后(第2列),执行任何人的(第3列),任何命令(第4列)。
(2)还可以这么写:%mysql ALL=(ALL) ALL,就是让属于mysql用户组的用户,从任何地方登录,执行任何人的任何命令。
(3)如果不想输入密码,可以这么配置:%mysql ALL=(ALL) NOPASSWD: ALL,不过这样不太安全。
(4)最好不要把最后一列设置为ALL,因为这样相当于有了root的所有权限,可以按照需求来设置,比如mysql用户需要关闭、重启服务器的权限:
%mysql ALL=(ALL) NOPASSWD:/sbin/shutdown, /usr/bin/reboot
首先,新建用户 user1:
然后,mysql用户用sudo来修改用户user1的密码,如果连续3次输入mysql用户的密码都不对,那么sudo命令就不会执行: