Linux切换用户

一、su

如果以普通用户user1登陆系统后,要增加一个用户,但是普通有用又没有useradd的权限,那么可以有2个办法:

1、先用exit退出系统,然后在以root用户登陆,之后useradd增加用户。

2、使用su命令,su就是switch user切换用户。

(1)su命令在不加参数时,默认切换到root用户,只要输入root的密码,就可以切换到root身份,直到使用exit退出。

注意这里虽然切换到root,但实际上并没有自动切换家目录。

[plain]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. [mysql@ggg2 ~]$ su  
  2. 密码:  
  3. [root@ggg2 mysql]# pwd  
  4. /home/mysql  
  5. [root@ggg2 mysql]# exit  
  6. exit  
(2)su命令加上一个 - 参数,不但可以切换成root,还可以应用root的环境。

可以看到提示符从$变长了#。

[plain]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. [mysql@ggg2 ~]$ su -  
  2. 密码:  
  3. [root@ggg2 ~]# pwd  
  4. /root  
  5. [root@ggg2 ~]# exit  
  6. logout  
(3)su命令还可以加上具体的用户名作为参数。

[plain]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. [root@ggg2 ~]# su - mysql  
  2. [mysql@ggg2 ~]$ pwd  
  3. /home/mysql  
  4. [mysql@ggg2 ~]$ exit  
  5. logout  

二、sudo

用其他用户身份和权限执行命令,而并不是切换用户。

上面的su命令虽然方便,但是需要预先知道切换用户的密码,如果泄漏出去,系统安全会受到严峻的挑战。

语法:用户MySQL要修改用user1的密码:sudo passwd user1 。

原理是:运行命令时,系统检查/etc/sudoers 配置文件,看这个用户是否有执行sudo的权限,如果有权限,系统要求输入用户自己的密码,如果密码输入正确,系统会以root身份运行 passwd xx命令。


/etc/sudoers文件可以用vi修改(不建议),但是考虑到配置文件很重要,linux提供了visudo命令来修改文件,并且在保存时会自动检测语法,防止配置错误导致没办法使用sudo命令。

[sql]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. [root@wc1 Desktop]# visudo  
  2. .............省略..................  
  3. ## Allow root to run any commands anywhere  
  4. root    ALL=(ALL)       ALL  
  5. mysql   ALL=(ALL)       ALL #把上面root的行复制粘贴,把root改成mysql  

含义是:

(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:

[plain]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. [root@wc1 Desktop]# useradd user1  

然后,mysql用户用sudo来修改用户user1的密码,如果连续3次输入mysql用户的密码都不对,那么sudo命令就不会执行:

[plain]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. [mysql@wc1 ~]$ sudo passwd user1  
  2.   
  3. We trust you have received the usual lecture from the local System  
  4. Administrator. It usually boils down to these three things:  
  5.   
  6.     #1) Respect the privacy of others.  
  7.     #2) Think before you type.  
  8.     #3) With great power comes great responsibility.  
  9.   
  10. [sudo] password for mysql:   
  11. Sorry, try again.  
  12. [sudo] password for mysql:   
  13. Sorry, try again.  
  14. [sudo] password for mysql:   
  15. Sorry, try again.  
  16. sudo:3 次错误密码尝试  
  17.   
  18. [mysql@wc1 ~]$ sudo passwd user1  
  19. [sudo] password for mysql:   
  20. 更改用户 user1 的密码 。  
  21. 新的 密码:  
  22. 无效的密码: 它基于字典单词  
  23. 无效的密码: 过于简单  
  24. 重新输入新的 密码:  
  25. passwd: 所有的身份验证令牌已经成功更新。  

猜你喜欢

转载自blog.csdn.net/xs1326962515/article/details/80280461