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 print ? 在 CODE 上查看代码片 派生到我的代码片[mysql@ggg2 ~]$ su
密码:
[root@ggg2 mysql]# pwd
/home/mysql
[root@ggg2 mysql]# exit
exit
(2)su 命令加上一个 - 参数,不但可以切换成 root,还可以应用 root 的环境。可以看到提示符从变长了#。[plain] view plain copy print ? 在CODE上查看代码片 派生到我的代码片[mysql@ggg2 ~] su -
密码:
[root@ggg2 ~]# pwd
/root
[root@ggg2 ~]# exit
logout
(3)su 命令还可以加上具体的用户名作为参数。[plain] view plain copy print ? 在 CODE 上查看代码片 派生到我的代码片[root@ggg2 ~]# su - mysql
[mysql@ggg2 ~]$ pwd
/home/mysql
[mysql@ggg2 ~]$ exit
logout
二、sudo
用其他用户身份和权限执行命令,而并不是切换用户。
上面的 su 命令虽然方便,但是需要预先知道切换用户的密码,如果泄漏出去,系统安全会受到严峻的挑战。
语法:用户 MySQL 要修改用 user1 的密码:sudo passwd user1 。
原理是:运行命令时,系统检查/etc/sudoers 配置文件,看这个用户是否有执行 sudo 的权限,如果有权限,系统要求输入用户自己的密码,如果密码输入正确,系统会以 root 身份运行 passwd xx 命令。
/etc/sudoers 文件可以用 vi 修改(不建议),但是考虑到配置文件很重要,linux 提供了 visudo 命令来修改文件,并且在保存时会自动检测语法,防止配置错误导致没办法使用 sudo 命令。[sql] view plain copy print ? 在 CODE 上查看代码片 派生到我的代码片[root@wc1 Desktop]# visudo
.............省略..................
Allow root to run any commands anywhere
root ALL=(ALL) ALL
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 print ? 在 CODE 上查看代码片 派生到我的代码片[root@wc1 Desktop]# useradd user1
然后,mysql 用户用 sudo 来修改用户 user1 的密码,如果连续 3 次输入 mysql 用户的密码都不对,那么 sudo 命令就不会执行:
[plain] view plain copy print ? 在 CODE 上查看代码片 派生到我的代码片[mysql@wc1 ~]$ sudo passwd user1
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
[sudo] password for mysql:
Sorry, try again.
[sudo] password for mysql:
Sorry, try again.
[sudo] password for mysql:
Sorry, try again.
sudo:3 次错误密码尝试
[mysql@wc1 ~]$ sudo passwd user1
[sudo] password for mysql:
更改用户 user1 的密码 。
新的 密码:
无效的密码: 它基于字典单词
无效的密码: 过于简单
重新输入新的 密码:
passwd: 所有的身份验证令牌已经成功更新。
版权声明: 本文为 InfoQ 作者【flow】的原创文章。
原文链接:【http://xie.infoq.cn/article/766960b56dc49d3e6128d4b7c】。文章转载请联系作者。
评论