【Linux】用户身份切换

本文详细介绍了Linux中切换用户身份的两种方法:su和sudo。su命令用于在用户之间切换,特别是切换到root用户,而sudo则允许指定用户以root权限执行特定命令。内容包括su命令的选项、login-shell与non-login shell的区别,以及sudo的使用方法、权限配置和执行流程。通过示例展示了如何使用sudo和编辑/etc/sudoers文件来管理用户权限。

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

1、su  [-lm]  [-c 命令]  [username]

      ① - :单纯使用-如“su -”,代表使用login-shell的变量文件读取方式来登陆系统;若用户名没有写,则代表切换为root用户(若没有写-,只有su 用户名:用户切换过来了但是环境变量家目录等没有改变)

      ②选项说明:

        (1)-l:与-类似,但后面需要加欲切换的用户账号,也是login-shell的方式

        (2)-m:-m与-p是一样的,表示使用目前的环境变量设置,而不读取新用户的配置文件

        (3)-c:仅进行一次命令,所以-c后面可以加上命令(如 su -c passwd root  表示借用root用户身份只执行一次passwd命令修改密码,执行完就结束)

           

     ③使用su切换成为root的身份为non-login shell,这种方式下很多原本的变量不会改变。

     ④login-shell 与 nologin-shell区别:

       (1)login-shell:取得bash时需要完整的登录流程。login-shell读取配置文件的顺序是:/etc/profile、~/.bash_profile、~/.bashrc、/etc/bashrc。(login-shell可以exit或logout退出)

       (2) non-login shell:取得bash接口的方法不需要重复登录。non-login shell会读取的配置文件为:~/.bashrc、/etc/bashrc。(nologin-shell 可以exit不可以logout退出)

 

2、sudo:是一种以限制配置文件中的命令为基础,在有限时间内给用户使用,并且记录到日志中的命令。sudo命令的配置在/etc/sudoers中,sudo是系统管理员用来允许某些用户以root身份运行部分/全部系统命令的程序

        ① 查看当前是哪个用户登录的shell:whoami

            

       ② sudo [-u 新用户账号]

             -u:后面可以接欲切换的用户,若无此项则代表切换身份为root

      ③使用(举例):

            

            说明:sudo借用sshd用户的身份使用touch命令创建文件。

   

    ④sudo的执行流程如下(默认只有root用户能使用):

         (1)当用户执行sudo时,便会让用户输入自己的密码来确认(root执行sudo时不需要输入密码);

         (2)若欲切换的身份与执行者身份相同,那也不需要输入密码。

         (3)若密码输入成功,系统会去/etc/sudoers文件中查找该用户是否有执行sudo的权限;

         (4)若用户具有执行sudo的权限,便开始sudo后续接的命令;

 

      ⑤ vim /etc/sudoers或者visudo root 给用户添加权限。

                  root    ALL=(ALL)    ALL

        说明:给root用户添加权限,可以从任何一台主机登陆使用任何人的身份去使用任何命令

               参数代表含义:

              (1)用户账号:系统哪个账号可以使用sudo这个命令。(默认为root用户)

              (2)登录者的来源主机名:这个账号由哪台主机连接到本地Linux主机。从哪个终端登录上来的使用sudo。(默认值root可来自任何一台网络主机)

              (3)可切换的身份:这个账号可以切换成什么身份来执行后续的命令。(默认root可以切换成任何人)

              (4)执行的命令:这个命令最好使用绝对路径编写。默认root可以切换任何身份且进行任何命令。

                    ALL是关键字,代表任何身份、主机或命令。

 

         ⑥例题:对用户root,redhat设置权限

                   [root@localhost ~]# vim /etc/sudoers

               root    ALL=(ALL)       ALL

               redhat  ALL=(ALL)       ALL 添加该内容

            测试:

                 [redhat@localhost ~]$ grep root /etc/shadow

                  grep: /etc/shadow: Permission denied

                 [redhat@localhost ~]$ sudo grep root             

    /etc/shadow root:$6$aiujdLezRBJygsQ.$Il8bel.t.i.SCAEqWihGb2rxTkPw/CgpZbaVQh8m13FzRDqMiFl2ZcEQdFBXzSQ9ix/5KHgg6.SwjaYbz9RPD0::0:99999:7:::     

 

      ⑦如果想要以组(基本组或附加组)的方式给组用户成员赋予权限,则应该添加如下内容:

         (1)vim修改组名为test权限。

            

            

    (在最左边加上%,代表后面接的是一个用户组)

         (2)创建一个组为test,创建用户hong以test为基本组,创建用户ming以test为附加组。

           

        (3)查看用户信息。

           

        (4)修改用户密码。

           

        (5)切换至 hong用户。

           

        (6)此时用户hong可借助root用户权限过滤查看hong的密码信息。

           

        (7)切换至ming用户。

           

        (8)此时用户ming可借助root用户权限过滤查看ming的密码信息。

           

         说明:无论以一个组为基本组还是附加组,给这个组以组的方式添加权限,组里的所有成员都可使用权限。

 

    ⑧如果不要密码,参照下面实例修改即可

               [root@localhost ~]# vim /etc/sudoers

                103 ## Same thing without a password

                104 # %wheel        ALL=(ALL)       NOPASSWD: ALL

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值