Linux 用户和组管理 (下) Sudo 长篇幅详解

目录

                       修改用户属性 

                                   #       修改用户信息 

                                   #        删除用户账号

                                   #        为用户设置密码

                                          用户间切换  

                       控制用户对系统命令的使用权限      

修改用户属性  

    修改用户信息   :   Usermod                 

            命令格式  :  Usermod    [  选项  ]    username

            常用选项  :

                                  该命令的常用选项大多 与 上一节 useradd  的选项一样,例如 :-c,-d,-m,-g

                                   -G,-s,-u 等是与 useradd 中相同选项的用法一样的!! 

                                 ( 详细使用方法 ,可以参考前面  useadd  命令  ) 

                                 

                                   另外,还可以使用一下几个  选项  :     

选项含义 
- l  (  小 L ) 新用户名,更改账户的名称,必须在该用户未登录的情况下才可以使用!!!
- L ( 大 L )锁定(暂停) 用户账户,使其不能登录使用
-U 解锁用户账户 

           示例  :       

               -l  选项   : 

          

            :   上示 是原版 我们要以 testuser16 做对比,上示为原样。

                       我们主要看 执行完命令后  testuser16 的对比 !

        

                       执行命令 :  使用 - l 选项 将 testuser16  改为 testuser60 

         

          上示 即为 : 执行完 -l  选项后的效果 可以看到 只改了 用户名(原来是 testuser16 ,执行完

                                 命令后,变为 testuser60)

                                 但是,看整个前后文件对比,只有用户名变了,但是文件里的用户名并没有

                                 改变,用户家目录的用户名还是原来的用户名 --- tsetuser16 !!

          综上 : usermod 的 -l 选项我们并不建议使用,因为,倘若,要改的这个用户名,已经在系

                      统中存在了一段时间,并且有一些配置文件了,你现在再去修改这个用户名(关键

                      是它这个选项确实是只 TM 修改了用户名,那些文件里得用户名还是原来的用户名)

                      还是有影响的!!!

           -   L    -U  选项  : 

[root@bogon ~]# usermod -L testuser15

         先执行命令 对 testuser15 进行锁定 

[root@bogon ~]# passwd -S testuser15
testuser15 LK 2022-10-06 0 99999 7 -1 (Password locked.)

             passwd   -S   选项是查看 用户信息的  !!  

           #   可以看到在显示 用户信息的末尾是  Password  locked  说明 该用户已被锁定     

            

[root@bogon ~]# usermod -U testuser15
[root@bogon ~]# passwd -S testuser15
testuser15 PS 2022-10-16 0 99999 7 -1 (Password set, SHA512 crypt.)

           #       使用 -U  选项对 testuser15   进行解锁 

                 可以看到再次使用 Passwd -S  选项对 testuser 15 查看的时候 ,后面显示的是 密码

                    已设置,已经不是 Locked 了!!

           #       还需要注意一点的是,此例,  testuser15   用户我们已经提前设置过密码了,说这点

                    的意义是,倘若你要锁定的用户没有设置密码,那么,你是可以锁定用户,但你要是

                    使用   -U   选项来解锁用户,则不会成功执行,系统会提示(提示你先设置密码!)

  删除用户账号  :   userdel  

       

          命令格式  :   userdel   [  -r  ]   账户名 

                 示例  :   

[root@bogon ~]# userdel testuser15

                  #   这是我们要执行的命令 ( 删除  testuser15)    

                

               

               

               #   我们查看下 当删除完用户后 那三个文件有什么变化没 !!

                    显然我们在这三个文件里 看不到 testuser15 的身影 

                    我们再查看下  /etc/home 下的变化,看看 会不会和上面 三个文件的内容一样!

                   

                  #  可以看到当我们使用 userdel 删除 用户,在 那三个文件是没有了 testuser15 

                       的身影,但是,在 /etc/home 家目录里 还存在着 !!

                       

                        那么我们怎样就能把 家目录里 也删掉呢??

                        =====> > >     这就需要用到  -r  选项!!!

                        示例 : 

[root@bogon home]# userdel -r testuser9

                        执行 -r  选项 命令!!!

                        结果示下 :

                          

                      已经找不到 关于 testuser9 的内容了!!!

 为用户设置密码  : Passwd 

          命令格式    :    Passwd      [  选项  ]      用户名 

          示例           :     

                   下示命令即为 testuser3 设置命令 ( 没有添加 选项 )

[root@bogon ~]# passwd testuser3

                             

                 可以看到当执行完命令后,你在输入密码的时候,终端并没有直接显示密码

                 看上去似乎更像是 你没有输入 密码!!

                 当两次输入密码完成后 出现 successfully  时即 为用户设置密码成功!!!

       常用选项  :

-d
清空指定用户的口令。这与未设置口令的账户不同 , 未设置口令的账户无法登录系统 , 而口令为空的账户可以。
-e
强迫用户下次登录时必须修改口令。
-i
口令过期后多少天停用账户。
-l
锁定 ( 停用 ) 用户账户
-n
最小生存时间 
-S(大写)
显示账户口令的简短状态信息 ( 是否被锁定 )
-u
解锁用户账户

        示例 :    选项下示 

             -d  选项  :  

                      

                   我们当时创建了 那么多用户 ,都没有设置密码,只给这两个用户 rhcsa 和

                      testuser3   设置了密码,因此,在登录界面就看到了这幅景象!! 只显示了 设置密

                      码的用户( rhcsa    testuser3 )

                  #  这就是说,-d 选项中解释的那样,未设置口令的是不能登录用户的!!

                 

                   接下来,我们使用 -d 选项 对 testuser4 执行一下 (testuser4  没有设置密码 )  

                                      - d选项执行成功 !! 

                  再看下 登录界面 :

                  

                  在界面显示了  testuser4  ,说明该用户可登录     

                  点击  testuser4 ,发现不用输入密码 直接登录!!

             - e  选项  : 

          

           现在对 testuser8 进行 -e 操作 ( testuser8 已经设置密码 )

           打开登录界面 登录 testuser8 :

          

          点击登录 testuser8  

        

           

           输入登录密码  

           

            当上一步 输入完登录密码后,进来显示的就是上图!!

            current  : 再次输入当前密码 

       

         

         上图即是  -e  选项的作用,让你重新设置密码 !!

         有趣的是 : 新密码的设置不太顺利,因为 系统会让你 设置的密码很复杂,才会设置成功! 

           

            再次输入 新设置的密码 (输入完成后便登陆成功)

               

        -  i  选项  : 

[root@bogon ~]# passwd -i 3  testuser4

                       对 testuser3 执行命令  -i     

        

                     可以看到在 /etc/shadow 文件里  testuser4 的倒数第三个字段 显示 3 

                     即 密码过期 3 天后 禁用账户 !!

         - l   选项  :

           

            这是没有执行 -l 选项的 登录界面!(我们做以待会儿 执行完命令的对比!)

[root@bogon ~]# passwd -l testuser8

           执行命令 !! 

          

          当执行完命令后,发现登录界面已经没有了 testuser8 账户,即说明 -l 选项执行成功,

          testuser8 被锁定!!

        - S   选项  :

[root@bogon ~]# passwd -S testuser8

              查看 testuser8 的简短信息 

              可以看到 显示的是 testuser8 密码已被锁定!!

              (这是我们刚才执行 -l 选项造成的!!) 

       

          -  u  选项  :

[root@bogon ~]# passwd -u testuser8

                        刚才使用 -l 选项对 testuser8 进行了 封锁,现在再使用 -u 选项解锁!!

                               

                               可以看到,testuser8 又重新 出现在了 登录界面!!

                        

                   也可以看到 使用 -S 选项显示的内容, 并不是 Password locked ,说明没有锁定!

         

用户间切换  : su           

 从 root 用户 切换到其它任何用户 不需要密码验证,而从普通用户切换到 root 用户 或者切换到

     其它普通用户 是都需要目标用户的密码的!!

#   有两种方式 :

                             su        用户名 

                             su   -    用户名 

        区别在于 :

                 su  用户名 只是切换了 root 身份,但 SHELL 环境仍然是 普通用户的 SHELL 。

                 su  用户名  是会连着 用户环境一起切了过来 !!  

控制用户对系统命令的使用权限 (  sudo  )

  sudo命令

         官方意义 :   控制用户对系统命令的使用权限    

                               系统命令 : 其实就是指的 root 允许的权限 !! 

         通俗意义 :   通过 sudo 提高普通用户的 操作权限

                             (该权限是需要进行配置才可以使用)

         配置 sudo 的两种方式  :

                             visudo  ( 建议使用,它可以进行 语法检查 )

                             vi /etc/sudoer  (  不具备校验语法)  

                             #   这两种方式其实本质上都是使用了 vi 编辑,只不过一个具备 语法检查,一个

                                  不具备。  当语法不正确会报错!!

                                一定是  root  用户 来进行 配置文件 ,因为只有 root 用户才可以给 普通用户

                                   分配权限

        查看 sudo 配置文件 :  

               查看命令  :            

vim  /etc/sudoers

               展示主要内容 :

                 当你使用命令查看 配置文件时,发现文件里的内容蛮多,并且,倘若你是第一次进来

                    查看文件,脑子里的反应肯定是 晕的,不知道这文件到底该怎么看!!

              #    配置文件其实可以分为两部分:

                   1.   别名规则 :

                   2.   授权规则 :

              #   下面我分别对这两部分做以基本介绍,这也是,你要了解掌握 sudo 命令背后秘密的必

                   须掌握的内容!!

    别名规则

## Host Aliases             主机别名 
## Groups of machines. You may prefer to use hostnames (perhaps using 
## wildcards for entire domains) or IP addresses instead.
# Host_Alias     FILESERVERS = fs1, fs2
# Host_Alias     MAILSERVERS = smtp, smtp2


## User Aliases              用户别名
## These aren't often necessary, as you can use regular groups
## (ie, from files, LDAP, NIS, etc) in this file - just use %groupname 
## rather than USERALIAS
# User_Alias ADMINS = jsmith, mikem


## Command Aliases           命令别名
## These are groups of related commands...


## Networking
# Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool

## Installation and management of software
# Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date, /usr/bin/yum

## Services
# Cmnd_Alias SERVICES = /sbin/service, /sbin/chkconfig, /usr/bin/systemctl start, /usr/bin/systemctl stop, /usr/bin/systemctl reload, /usr/bin/systemctl restart, /usr/bin/systemctl status, /usr/bin/systemctl enable, /usr/bin/systemctl disable

## Updating the locate database
# Cmnd_Alias LOCATE = /usr/bin/updatedb

## Storage
# Cmnd_Alias STORAGE = /sbin/fdisk, /sbin/sfdisk, /sbin/parted, /sbin/partprobe, /bin/mount, /bin/umount

## Delegating permissions
# Cmnd_Alias DELEGATING = /usr/sbin/visudo, /bin/chown, /bin/chmod, /bin/chgrp 

## Processes
# Cmnd_Alias PROCESSES = /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall

## Drivers
# Cmnd_Alias DRIVERS = /sbin/modprobe

        #         上示内容 : 展示了三大别名设置 :   主机别名   用户别名   命令别名 

                                       其中,可以看到的是命令别名内容较多分的种类比较多!!

                                       但是,目前来讲,基础阶段,配置的时候,基本就在 命令别名的下面进行

                                       配置就行(暂时还不需要到 命令别名下面那么多种类 去配置!)

        

       #    别名规则的定义格式  : 

             格式  :   Alias_Type NAME = item1, item2, ...

             解释  : 

                            Alias_Type  指的就是 别名类型!

                            如前面介绍的那样 别名类型有四大类 : 

                            Host_Alias  :     主机别名 

                            User_Alias  :     用户别名 

                            Cmnd_Alias :  命令别名

                            还有一个类是前面没介绍的  :

                            Runas_Alias :    他指的你想要给 哪个用户 赋予 怎样的权限 (是怎样的权限所

                                                      对应的那个用户)

                                                      说白了,就是我们所讲的 root 用户,因为 root 用户有一切权限

                                                      而我们所讲的  怎样的权限 所对应的 那个用户 在大多数情况下

                                                      就是 root 用户 !!

                                        

                                                  为了更好的 理解 Runas _ Alias ,我们举个例子 来更好体会下:   

                                                     现在让   用户lebron  具备 修改 用户harry 密码 的权限! 

                                                         那么,你看完上示,会有什么想法 ??

                                                         我们用目前知识来判断,首先可以肯定的是 : lebron 肯定是

                                                         不能独立的就可以修改 harry 密码,因为他不具备权限,那

                                                          么,现在, lebron 想要修改怎么办?? 

                                                          即 : 让 lebron 获得 修改 harry 的密码 权限 

                                                         怎么获得呢 ??

                                                         通过 sudo命令 及 配置文件 赋予权限 

                                                         即 : lebron 需要 获得 root 用户 赋予权限!!

                                                         至此 :  这里的 root 用户 就是 Runas_Alias  

                          NAME  :  解释如下

                                            NAME的命名是包含大写字母、下划线以及数字,但必须以一个大写字

                                            母开头,比如ADMIN、SYS1和NETWORKING都是合法的,而sYS

                                             6ADMIN是非法的!!

                     Host_Alias  :  主机别名解释如下 

                                              示例一

                                              Host_Alias HT1    =   localhost,ztg,192.168.0.0/24

                                              主机别名 : HT1 

                                               =  右边为 成员 !

                                               成员 : 有三个成员 ( localhost,      ztg,   192.168.0.0/24 )

                                               #  代表什么意思呢?

                                                    就是  localhost,ztg,192.168.0.0/24  这三个主机(它们之间当然没

                                                    有任何关系)这三个主机 现在被 赋予了别名 HT1 

                                              示例二

                                          Host_Alias HT1= localhost,ztguang,192.168.10.0/24 : HT2=ztg2,ztg3

                                            : 这是一次性定义了 两个主机别名  HT1 、 HT2 中间用  隔开 

                             

                    User_Alias  : 用户别名解释如下 

                                            : 别名成员可以是  用户,用户组(前面要加%号)

                                                     用户组 在下面内容 会提到   %wheel  在授权规则示例!

                                            示例

                                            User_Alias   ADMIN   =    ztg,ztguang

                                             用户别名 : ADMIN 

                                             =  右边为成员 

                                              成员  :   ztg,   ztguang  (  成员 必须在系统中确实存在!!)

                   Cmnd_Alias  :  命令别名 解释如下 :

                                              注 : 定义命令的别名,这些命令必须是系统存在的文件,要用绝对

                                                       路径,文件名可以用通配符表示。

                                              示例  :

                                              Cmnd_Alias SERVICES = /sbin/service, /sbin/chkconfig

                                               命令别名  :  SERVICES 

                                                =  右边为 具体命令 

                                               具体命令是 :   /sbin/service (  命令一  )

                                                                        /sbin/chkconfig ( 命令二 )

                     Runas_Alias    解释如下 :

                                                :  用来定义runas别名,这个别名是指sudo允许切换到的用户

                                                          绝大多数情况 此别名的成员都是  仅 root 一个!!

                                                           一般不定义 该别名 

                                                示例

                                                 Runas_Alias RUN_AS = root

                                                 定义runas别名RUN_AS,有一个成员root

                                                                

                                                

                                                                                 

授权规则

## Allow root to run any commands anywhere    授权规则
root    ALL=(ALL)       ALL

          上示 便是  :  当你把 别名的三个设置,设置完的时候 ( 主机,用户,命令)别名。

                                     然后就要进行 授权!!

                                      说白就是要把它们三个组合在一起 !!来给用户赋予权限 !

          解释 上面的配置 :

                        root                            ALL=(ALL)                     ALL

                        用户             主机 = (切换到所有用户)            所有命令   

                        ALL : 即表示 所有的意思  在本配置中,那三个 ALL 就代表的 所有的主机,所有

                                    的用户,所有的命令 的意思

           授权规则 :

              格式 :  

                            *    授权用户   主机  = 命令动作  ( 相对来讲 比较常用的方式! )

                            *   授权用户 主机=[(切换到哪些用户或用户组)] [是否需要密码验证] 命令1,[(切换

                                 到哪些用户或用户组)] [是否需要密码验证] [命令2],[(切换到哪些用户或用户

                                 组)] [是否需要密码验证] [命令3] …

                                 第二种格式 看着比较复杂,只不过是 后面可以跟多条命令,是重复的!

## Allows people in group wheel to run all commands
%wheel  ALL=(ALL)       ALL

            前面的配置是针对用户的 授权规则,  本配置指代的是 组 的授权规则 !!

            也能看出来 和 用户 授权规则 没啥两样!!

          %wheel                                     ALL=(ALL)                               ALL        

           wheel 组      这个wheel组里所有的主机 = 组里所有的用户      所有命令

            
              : %  后 跟的是 组名!!
   示例 : 
               
               当你想要进行 sudo 的实际操作时,必须得掌握 sudo 的两个核心知识点!
                1.   别名的设置 
                
                2.   授权规则
                        
                         让  用户natash   具备修改  用户harry  密码的权限 
               #  由题目可知 :  显然是要 给  用户natash  赋予 root 权限 
                                               
                                            因此,得在 配置文件中 进行配置,才可以具备 root 用户权限
               #  文件配置  :
                        
                 

                 

                 摘取 配置代码 :

Host_Alias     FIRSTSERVERS = bogon   # 主机别名

User_Alias FIRSTU = natash            # 用户别名 

Cmnd_Alias CHPASS = /usr/bin/passwd   # 命令别名


FIRSTU  FIRSTSERVERS=(root) CHPASS    # 授权规则
              当上示命令准确配置后,用户 natash 便具备了 修改 用户harry 的权限!!
      接下来,当给 natash 在文件配置后,便执行题目要求 :
     

     

        #      可以看到, 在使用命令时 需要加上 sudo 去执行!!!!

                (并且已经显示 成功!!)

        #      可以看到,执行 sudo 的时候,系统问我们索要了 natash 的密码(第二行!)

                  (这是因为我们在 配置文件中的授权规则的时,没有配置 不需要密码 的命令!)

                倘若 配置不需要密码 其命令是这样 :

                           在授权规则中配置 :

FIRSTU  FIRSTSERVERS=(root)  NOPASSWD: CHPASS

                           这般配置后,当 natash 使用 sudo 执行的时候,就不会再索要 natash 密码了!

                           如下图所示 :    

                          

                            可以看到不在索要 natash 的密码!!!  

 总结 

                    当你想让某个用户执行某个命令或操作,但由于该用户不具备权限而无法执行的时

                       候需要 考虑 sudo 的作用意义!!

                #     使用 sudo 需要注意 :

                                *     一定要在 /etc/sudoers 文件中进行配置 !配置后才能执行!

                                   注意  四大别名的配置 以及  授权规则!

                                      四大别名一般在配制的时候(大多数只配 三大别名!)

                                      主机   用户    命令!!

                                *     命令别名 中的 实际要操作的命令 需要使用 绝对路径!!

                                   (你得提前使用 whereis 命令查看 要操作的命令的 路径文件)  

        

                 #     其实,当你把 整个 sudo 学习搞懂后,你可能仍会有个小疑问!!

                        为什么要用 别名 来操作呢???   别名的意义究竟是什么呢??

                        其实 :  别名并不是必须的!!  ! 

                                     它存在的意义仅仅就是 可以用一个 简单的别名 就代替了 好多内容

                                      因为这些别名的 = 右边 可以写 多个成员,也就是说,别名只不过就是

                                      替代了多个内容而已!!!!

                  #    本篇文章可以看到,我们关于 sudo 举的例子 几乎都是 普通用户 被赋予 root 用户

                        的权限,当然也可以 进行 普通用户 被赋予 另一个 普通用户的 权限,道理都是一

                        样的!!! (只不过,就成了 四大别名的 配置 !!因为,要赋予的权限的用户,

                                               也得表示出来!!  —— Runas_Alias

        

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很高兴听到您的问题,以下是关于Linux用户管理实训报告: 1. 用户管理Linux系统中,用户管理是非常重要的。Linux系统中每个用户都有一个唯一的用户ID(UID)。在用户创建时,系统会自动分配一个UID。用户可以使用用户名和密码进行登录系统。 创建用户 要创建用户,可以使用以下命令: ``` sudo adduser username ``` 其中,username是要创建的用户名。执行命令后,系统会提示输入密码以及其他信息,如姓名、电话号码等。 删除用户 要删除用户,可以使用以下命令: ``` sudo userdel username ``` 其中,username是要删除的用户名。执行命令后,系统会提示是否要删除用户的家目录以及邮箱。 修改用户信息 要修改用户信息,可以使用以下命令: ``` sudo usermod -c "new comment" username ``` 其中,new comment是要修改的用户备注信息,username是要修改的用户名。 2. 管理Linux系统中,管理也是非常重要的。用户可以加入多个,每个都有一个唯一的ID(GID)。可以用于文件和目录的访问控制。 创建 要创建,可以使用以下命令: ``` sudo groupadd groupname ``` 其中,groupname是要创建的名。 删除 要删除,可以使用以下命令: ``` sudo groupdel groupname ``` 其中,groupname是要删除的名。 添加用户 要将用户添加到中,可以使用以下命令: ``` sudo usermod -a -G groupname username ``` 其中,groupname是要添加用户到的名,username是要添加到中的用户名。 从中删除用户 要将用户中删除,可以使用以下命令: ``` sudo gpasswd -d username groupname ``` 其中,username是要删除的用户名,groupname是要删除用户名。 总结: Linux用户管理是非常重要的,通过使用上述命令,可以方便地创建、删除和修改用户,以及将用户添加到中或从中删除。在实际应用中,需要根据具体情况进行管理,以保证系统的安全性和稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值