写点什么

Linux 进阶切换用户

作者:flow
  • 2022 年 8 月 09 日
    江西
  • 本文字数:1599 字

    阅读完需:约 5 分钟

一、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:


#1) Respect the privacy of others.  #2) Think before you type.  #3) With great power comes great responsibility.  
复制代码


[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: 所有的身份验证令牌已经成功更新。

发布于: 刚刚阅读数: 4
用户头像

flow

关注

还未添加个人签名 2022.07.13 加入

还未添加个人简介

评论

发布
暂无评论
Linux进阶切换用户_8月月更_flow_InfoQ写作社区