Linux切换用户

本文介绍了在Linux系统中如何切换用户,特别是从普通用户切换到root用户的两种方法:su命令和sudo命令。su命令允许用户切换到root并执行管理员操作,而sudo则可以在不需要知道root密码的情况下,根据/etc/sudoers配置文件授权执行特定命令。文章详细解析了sudoers文件的配置,强调了安全性和权限控制的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、su

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

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

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

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

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

[mysql@ggg2 ~]$ su
密码:
[root@ggg2 mysql]# pwd
/home/mysql
[root@ggg2 mysql]# exit
exit
(2)su命令加上一个 - 参数,不但可以切换成root,还可以应用root的环境。

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

[mysql@ggg2 ~]$ su -
密码:
[root@ggg2 ~]# pwd
/root
[root@ggg2 ~]# exit
logout
(3)su命令还可以加上具体的用户名作为参数。

[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命令。

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

[root@wc1 Desktop]# useradd user1

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值