17.权限管理☞用户和用户组

1|0一.用户概述

1|11.什么是用户

  • 用户是操作系统提供的一种安全机制
  • 用户是权限的化身
  • 要使用操作系统必须事先输入正确的用户名与密码

1|22.为什么要创建用户, 有什么用

  • 划分权限, 增强安全性

  • 系统上的每一个进程(运行的程序),都需要一个特定的用户运行

1|33.如何查看一个用户及用户的权限

🐼#查看当前用户
      [root@shawn ~]# id
             uid=0(root) gid=0(root) 组=0(root)
 
🐼#查看 "shawn" 用户
    [root@shawn ~]# id shawn
             uid=1000(shawn) gid=1000(shawn) 组=1000(shawn)
 
🐼#查看当前用户名字
    [root@shawn ~]# whoami
              root
 
🐼#查看所有用户
  [root@shawn ~]# who
              root    tty1     2020-10-26   13:58
               root   pts/0   2020-10-27    21:11   (192.168.12.179)
 
🐼#查看"ssh"进程,可以发现都对应着一个用户
 [root@shawn ~]# ps aux |grep "[s]sh"
               root      1181 0.0 0.0     105996     312 ?        Ss   01:42    0:00 /usr/sbin/sshd -D
               root       55197 0.0 0.5   148316    5380 ?      Ss   21:11    0:00 sshd: root@pts/0

1|44.Linux中用户角色的划分

  • Linux中分为 管理员用户与 普通用户
  • 管理员用户拥有最高权限
  • 其他用户根据管理员的分配拥有不同的权限

 

1|55.UID与 GID

  • Linux系统通过UIDGID识别用户角色
  • 那些用户账户(比如shawn), 其实都是给我们人看的,方便我们
  • Linux系统能识别的仅仅是UIDGID这样的数字
  • UID (User Identify)
🌵用户ID, 在系统中是唯一,唯一标识一个系统用户的帐号
    "UID"相当于一个人的身份证,用户名就相当于这个人的名字
 
 
  • GID (Group Identify)
🌵组ID, 如果把一个操作系统当成一家公司,uid相当于这个人的员工号,"GID"相当于他的部门编号
 
 
  • CentOS 7 系统约定
            0                #超级管理员, 权限最高, 但风险也很大
            1~200        #系统用户,用来运行系统自带的进程,默认已创建
            201~999    #系统用户,用来运行安装的程序,所以此类用户无需登录系统
            1000以后    #普通用户,正常可以登录系统的用户,权限比较小,能执行的任务有限
  • 用户和用户组的关系
            主组 : 用户本身所在的部门     
            附加组 : 为用户添加的部门
 
             🌵一对一 : 一个用户可以属于一个组,用户默认就在自己的主组下
             🌵多对一 : 多个用户在同一个组
             🌵一对多 : 一个用户可以属于多个组,用户只有一个主组,但可以为用户添加多个附加组
             🌵多对多 : 多个用户可以属于多个组

1|65.超级用户

  • 默认是 root 用户
  • UID和 GID都为0
  • root用户在每台unix/ linux操作系统中都是唯一且真实存在的
  • 通过它可以登录系统,可以操作系统中任何文件和命令,拥有最高的管理权限

1|76.文件权限分类

  • linux系统把文件的权限分为了三类
              1、属主对应的权限
              2、属组对应的权限
              3、其他对应的权限
  • 一个用户对文件的权限扫描的优先级
             1、先看该用户是否是文件的属主
             2、在1失败的情况,再看该用户是否是文件的属组
             3、在2失败的情况,该用户属于其他人权限

2|0二.用户管理命令

    /etc/passwd

root:x:0:0:root:/root:/bin/bash
第⼀字段:⽤户名(也被称为登录名);
第⼆字段:⼝令;在例⼦中我们看到的是⼀个x,其实密码已被映射到/etc/shadow ⽂件中;
第三字段:UID ;请参看本⽂的UID的解说;
第四字段:GID;请参看本⽂的GID的解说;
第五字段:描述信息,可选
第六字段:⽤户的家⽬录所在位置;
第七字段:⽤户所⽤SHELL的类型

 

    /etc/shadow

2|1

  1. small_egon:$1$VE.Mq2Xf$2c9Qi7EQ9JP8GKF8gH7PB1:13072:0:99999:7:::
  2. big_egon:$1$IPDvUhXP$8R6J/VtPXvLyXxhLWPrnt/:13072:0:99999:7::13108:
  3. 第⼀字段:⽤户名(也被称为登录名),在/etc/shadow中,⽤户名和/etc/passwd 是相同的,这
  4. 样就把passwd 和shadow中⽤的⽤户记录联系在⼀起;这个字段是⾮空的;
  5. 第⼆字段:密码(已被加密),如果是有些⽤户在这段是x,表示这个⽤户不能登录到系统;这个字段
  6. 是⾮空的;
  7. 第三字段:上次修改⼝令的时间;这个时间是从1970年01⽉01⽇算起到最近⼀次修改⼝令的时间间隔
  8. (天数),您可以通过passwd 来修改⽤户的密码,然后查看/etc/shadow中此字段的变化;
  9. 第四字段:两次修改⼝令间隔最少的天数;如果设置为0,则禁⽤此功能;也就是说⽤户必须经过多少
  10. 天才能修改其⼝令;此项功能⽤处不是太⼤;默认值是通过/etc/login.defs⽂件定义中获取,
  11. PASS_MIN_DAYS 中有定义;
  12. 第五字段:两次修改⼝令间隔最多的天数;这个能增强管理员管理⽤户⼝令的时效性,应该说在增强了
  13. 系统的安全性;如果是系统默认值,是在添加⽤户时由/etc/login.defs⽂件定义中获取,在
  14. PASS_MAX_DAYS 中定义;
  15. 第六字段:提前多少天警告⽤户⼝令将过期;当⽤户登录系统后,系统登录程序提醒⽤户⼝令将要作
  16. 废;如果是系统默认值,是在添加⽤户时由/etc/login.defs⽂件定义中获取,在PASS_WARN_AGE
  17. 中定义;
  18. 第七字段:在⼝令过期之后多少天禁⽤此⽤户;此字段表示⽤户⼝令作废多少天后,系统会禁⽤此⽤
  19. 户,也就是说系统会不能再让此⽤户登录,也不会提示⽤户过期,是完全禁⽤;
  20. 第⼋字段:⽤户过期⽇期;此字段指定了⽤户作废的天数(从1970年的1⽉1⽇开始的天数),如果这
  21. 个字段的值为空,帐号永久可⽤; www.hackdig.com
  22. 第九字段:保留字段,⽬前为空,以备将来Linux发展之⽤;
  23. 如果更为详细的,请⽤ man shadow来查看帮助,您会得到更为详尽的资料

 

   /etc/group:组⽂件

 

     /etc/gshadow:组密码⽂件

      /etc/skel/ ⽤户⽼家的模板
     /home/xxx ⽤户家⽬录
     /var/spool/mail/xxx ⽤户邮箱⽂件

2|21.用户与组相关的文件

  • /etc/passwd : 用户文件
  • /etc/shadow : 用户密码文件
  • /etc/group : 组文件
  • /etc/gshadow : 组密码文件
  • /etc/skel : 用户老家模板目录
  • /var/spool/mail/xxx : 用户邮箱文件
  • /home/xxx : 用户家目录

   用户

和⽤户、组相关的⽂件:

       /etc/passwd

      /etc/shadow

     /etc/group

     /etc/gshadow

 

2|33.手动创建用户

     手动添加用户:https://www.cnblogs.com/songhaixing/p/13893637.html

2|43.useradd : 添加用户

    🌵添加用户
      [root@shawn ~]# useradd
                  xing 
 
 
    🌵查看用户
       [root@shawn ~]# id xing
                 uid=1003(xing)  gid=1003(xing)  组=1003(xing)
    🌵查看所有登入的用户信息      
        [root@shawn ~]# who
 
 
    🌵查看当前登入的用户名
        [root@shawn ~]# whoami

注意: 当创建一个用户没有指定用户主组, 将会创建一个同名的组作为用户的主组

  • 1|0常用选项

选项功能
-u 指定用户的UID
-g 指定用户所属的主组
-G 指定用户所属的附加组
-d 指定用户的家目录
-c 指定用户的备注信息
-s 指定用户所用的shell
-e 修改过期时间
-M 不创建家目录
-r 创建系统用户, uid1000以内,默认没有家目录
  • 示例

      🌵例如:在系统中新增⼀个⽤户user01,属组为police以及uid为600的命令:

useradd –u 600 –g police user01
# 其他练习
[root@root ~]# useradd user01
[root@root ~]# useradd user02 -u 503                       #  创建⽤户usr02,指定uid
[root@root ~]# useradd user03 -d /aaa                      # 创建⽤户user03 指定家⽬录
[root@root ~]# useradd user04 -M                             # 创建⽤户user04,不创建家⽬录
[root@root ~]# useradd user05 -s /sbin/nologin         # 创建⽤户并指定shell
[root@root ~]# useradd user06 -g hr                          # 创建⽤户,指定主组
[root@root ~]# useradd user07 -G sale                      # 创建⽤户,指定附加组
[root@root ~]# useradd user08 -e 2014-04-01            # 指定过期时间
[root@root ~]# useradd user10 -u 4000 -s /sbin/nologin
[root@aliyum ~]# useradd xxx -M -s /sbin/nologin       # 创建普通⽤户,但是没有家⽬ 录,不能登录系统             

[root@aliyum ~]# useradd -r yyy -s /sbin/nologin         # yyy属于系统⽤户,uid处于系统⽤户uid范围内

    🌵先搞个组做实验,创建一个用户并指定"UID",指定主组"xing1"
           [root@shawn ~]# groupadd xing1
           [root@shawn ~]# groupadd xing2
           [root@shawn ~]# useradd -u 1111 -g xing1 song1
           [root@shawn ~]# id song1 uid=1111(song1) gid=1000(xing1) 组=1000(xing1)
  🌵创建"song2"指定家目录
           [root@shawn ~]# useradd song2 -d /home/SONG2
  🌵创建"song3"不创建家目录
           [root@shawn ~]# useradd song3 -M
  🌵创建"song4"指定Shell
          [root@shawn ~]# useradd song4 -s /sbin/nologin
 🌵创建"song2\5"指定附属组
          [root@shawn ~]# useradd song5 -G xing1
          [root@shawn ~]# id song5
             uid=1115(song5) gid=1115(song5) 组=1115(song5),1000(xing1)
🌵创建"song6"指过期时间
          [root@shawn ~]# useradd song6 -e 2022-12-12
🌵创建系统用户"song7",Uid在1000以内
         [root@shawn ~]# useradd -r song7
         [root@shawn ~]# id song7
             uid=997(song7) gid=995(song7) 组=995(song7)

2|54.usermod : 修改用户信息

  • 1|0常用选项

与 useradd 选项基本一致, 但这是修改

选项功能
-u 指定修改用户的UID
-g 指定修改用户的主组
-G 指定修改用户附属组,使用逗号分隔多个附属组,覆盖原有的附属组
-a 与 "-G"连用, 让其变成追加附加组,而不是覆盖
-d 指定修改用户家目录
-c 指定修改用户注释信息
-s 指定修改用户的 Bash Shell
  • 示例

usermod命令
   同useradd参数基⼀致,只不过useradd是添加,usermod是修改

-u #指定要修改⽤户的UID
-g #指定要修改⽤户基本组
-a #将⽤户添加到补充组。仅与-G选项⼀起使⽤
-G #指定要修改⽤户附加组,使⽤逗号隔开多个附加组, 覆盖原有的附加组
-d #指定要修改⽤户家⽬录
-c #指定要修改⽤户注释信息
-s #指定要修改⽤户的bash shell

 


[root@root ~]# usermod -e 2013-02-11 user1000       # 修改过期时间
[root@root ~]# usermod -g group1 jj              # 修改主组
[root@root ~]# usermod -a -G group2 jj       # 修改附加组,-a添加,不加-a代表覆盖

 


其他选项
       -m #将⽤户主⽬录的内容移动到新位置。如果当前主⽬录不存在,则不会创建新的主⽬录
        -l #指定要修改⽤户的登陆名
        -L #指定要锁定的⽤户
        -U #指定要解锁的⽤户

 

 

 

    🌵将用户"song1"的主组由"xing1"改成"xing2"
 
         [root@shawn ~]# usermod -g xing2 song1
         [root@shawn ~]# id song1
             uid=1111(song1) gid=1117(xing2) 组=1117(xing2)
   
 
  🌵用户"song1"追加一个附加组"xing1","-a"表示追加,没有"-a"则是覆盖
        [root@shawn ~]# usermod -a -G xing1 song1
        [root@shawn ~]# id song1
             uid=1111(song1) gid=1117(xing2) 组=1117(xing2),1000(xing1)
 
 
 🌵修改用户"song1"的过期时间
        [root@shawn ~]# usermod -e 2044-12-12 song1
  • 1|0其他参数

选项功能
-l 指定修改用户的登入名
-L 指定要锁定的用户
-U 指定要解锁的用户
  • 演示
      🐼为用户设置密码
         🌵交互式
              [root@shawn ~]# passwd song1
                  更改用户 song1 的密码 。
                   新的 密码:
                   无效的密码: 密码少于 8 个字符
                   重新输入新的 密码:
             passwd:所有的身份验证令牌已经成功更新。
       
         🌵非交互式
               [root@shawn ~]# echo "123" | passwd song1 --stdin
       
        🌵"-l"修改用户登入名
            [root@shawn ~]# usermod -l SONG1 song1
            [root@shawn ~]# id SONG1
                uid=1111(SONG1) gid=1117(xing2) 组=1117(xing2),1000(xing1)
        🌵"-L"锁定用户
           [root@shawn ~]# usermod -L SONG1
           [root@shawn ~]# exit
              #使用用户"SONG1"进行登入 '''
 
 
           shawn login: SONG1
           Password:             #输入了正确的密码
           Login incorrect      #显示登入不正确 '''
       🌵"-U"解锁用户
           [root@shawn ~]#  usermod -U SONG1
           [root@shawn ~]#  exit          
               #再次使用"SONG1"用户登入 '''
          shawn login: SONG1
          Password: #输入了正确的密码
           Last failed login: Thu OCt 29.........
           [SONG1@shawn ~]$ #登入成功了 '''

2|65.userdel : 删除用户

       🌵删除用户, 但不删除用户家目录和"mail"
            [root@shawn ~]# userdel xing
       🌵"-r" 可以彻底删除
            [root@shawn ~]# userdel -r xing
 
 
 
 
扩展阅读
  1. useradd创建⽤户时,对于未指定的选项(-u、-g等等),会
  2. 以/etc/login.defs、/etc/default/useradd两个配置⽂件中的配置作为参照物
  3. #配置⽂件/etc/login.defs详解
  4. [root@egon ~]# grep -Ev "^#|^$" /etc/login.defs
  5. MAIL_DIR /var/spool/mail
  6. PASS_MAX_DAYS 99999 #密码最⼤有效期
  7. PASS_MIN_DAYS 0 #两次修改密码的最⼩间隔时间
  8. PASS_MIN_LEN 5 #密码最⼩⻓度,对于root⽆效
  9. PASS_WARN_AGE 7 #密码过期前多少天开始提示
  10. UID_MIN 1000 #⽤户ID的最⼩值
  11. UID_MAX 60000 #⽤户ID的最⼤值
  12. SYS_UID_MIN 201 #系统⽤户ID的最⼩值
  13. SYS_UID_MAX 999 #系统⽤户ID的最⼤值
  14. GID_MIN 1000 #组ID的最⼩值
  15. GID_MAX 60000 #组ID的最⼤值
  16. SYS_GID_MIN 201 #系统⽤户组ID的最⼩值
  17. SYS_GID_MAX 999 #系统⽤户组ID的最⼤值
  18. CREATE_HOME yes #使⽤useradd的时候是可以创建⽤户家⽬录
  19. UMASK 077 #创建家⽬录时umask的默认控制权限
  20. USERGROUPS_ENAB yes #删除⽤户的时候是否同时删除⽤户组
  21. ENCRYPT_METHOD SHA512 #密码加密规则
  22. #配置⽂件/etc/default/useradd详解
  23. [root@egon ~]# cat /etc/default/useradd
  24. GROUP=100 #依赖于/etc/login.defs的USERGRUUPS_ENAB参数,如果为
  25. no,则在此处控制
  26. HOME=/home #把⽤户的家⽬录建在/home中。
  27. INACTIVE=-1 #是否启⽤账号过期停权,-1表示不启⽤。
  28. EXPIRE= #账号终⽌⽇期,不设置表示不启⽤。
  29. SHELL=/bin/bash #新⽤户默认所有的shell类型。
  30. SKEL=/etc/skel #配置新⽤户家⽬录的默认⽂件存放路径。
  31. CREATE_MAIL_SPOOL=yes #创建mail⽂件。
  32. 当使⽤useradd创建⽤户时,创建的⽤户家⽬录下会存在.bash_* 环境变量相关的⽂件,这些环境
  33. 变量⽂件默认
  34. 从/etc/skel⽬录中拷⻉。这个默认拷⻉环境变量位置是由/etc/default/useradd配置⽂件中定
  35. 义的。
  36. #故障案例,在当前⽤户家⽬录下执⾏了rm -rf .*命令,下次登录系统时出现-bash-4.1$,如何
  37. 解决!
  38. -bash-4.1$ cp -a /etc/skel/.bash* ./
  39. -bash-4.1$ exit
  40. [root@egon ~]# #重新连接即可恢复

 

 

 

 
 
 
 

3|0三.组管理命令

 

3|11.groupadd : 创建组

  • 常用选项
选项功能
-g 指定GID
-r 创建系统组

 

组管理命令汇总

   groupadd
   groupmod
   groupdel
  gpasswd     # 设置组密码
  newgrp       # 切换主组

示例

           🌵创建基本组,不指定GID,会自动帮你设置一个
                  [root@shawn ~]# groupadd xing1
                  [root@shawn ~]# tail -1 /etc/group
                        xing1:x:1003:
           
          🌵指定GID
                   [root@shawn ~]# groupadd -g 4444 xing2
                   [root@shawn ~]# tail -1 /etc/group
                        xing2:x:4444:
           
           🌵创建系统组,GID在1000以内
                    [root@shawn ~]# groupadd -r xing3
                    [root@shawn ~]# tail -1 /etc/group
                         xing3:x:995:

3|22.groupmod : 修改组

  • 常用参数
选项功能
-g 修改成指定的GID
-n 修改组名称
  • 示例
    🌵将"xing1"的GID改成"5555"
             [root@shawn ~]    #  roupmod -g 5555  xing1
             [root@shawn ~]    #  tail -3 /etc/group   
                   xing1:x:5555:
                   xing2:x:4444:
                   xing3:x:995:
 
 
 
   🌵修改组名
          [root@shawn ~]# groupmod -n new_xing3 xing3
          [root@shawn ~]# tail -1 /etc/group
                 new_xing3:x:995:

3|33.groupdel : 删除组

  • 如果一个组是一个用户的主组的话, 那么该组不能被删除
  • 删掉用户会默认一起删掉它的主组
  • 能删掉的只能是不是任何用户主组的组
  🌵先查看一下"start"的信息
       [root@shawn ~]# id start uid=1002(start) gid=1002(start) 组=1002(start)
 
 
  🌵指定追加一个组"xing1"(之前创建的),然后查看一下
          [root@shawn ~]# usermod -a -G xing1 start
          [root@shawn ~]# id start
          uid=1002(start) gid=1002(start) 组=1002(start),5555(xing1)
 
  🌵删掉这个组"xing1",再查看发现没有了
         [root@shawn ~]# groupdel xing1
         [root@shawn ~]# id start
         uid=1002(start) gid=1002(start) 组=1002(start)
 
 🌵当删除主组"start"的时候会提示失败
        [root@shawn ~]# groupdel start
          groupdel:不能移除用户“start”的主组

4|0四.组成员管理命令

4|11.组的分类

  • 一类是基本组或称主组,用户只能有一个基本组,创建时可通过 -g 指定,如未指定则创建一个默认的组(与用户同名)
  • 二是附加组,基本组不能满足授权要求时,可以创建附加组,将用户加入该组,用户可以属于多个附加组,加入一个组后就拥有了该组的权限

4|22.gpasswd : 设置组密码及对用户和组的操作

  • 常用选项
选项功能
-a 将某个用户加入到某个组
-M 将多个用户加入到一个组
-A 将某个用户设为某个组的组长,那么也有了增和删成员的权限
-d 将用户从组中删除
  • 示例
             🌵首先创建一个组"xing1"
                [root@shawn ~]# groupadd -g 5555 xing1
                [root@shawn ~]# tail -1 /etc/group
                      xing1:x:5555:
             
 
            🌵"-a"将用户"song"加入到组"xing1"中
                [root@shawn ~]# gpasswd -a song xing1
                正在将用户“song”加入到“xing1”组中#这是Xshell的中文提示
           
            🌵"-M"将多个用户"shawn","start"将入到组"xing1"中
                  [root@shawn ~]# gpasswd -M shawn,start xing1
           
 
             🌵"-A"将用户"start"设置为这个组的组长
                  [root@shawn ~]# gpasswd -A start xing1
       
 
            🌵查看"xing1"这个组的成员,第三段参数为组长 
                [root@shawn ~]# grep 'xing1' /etc/gshadow
                   xing1:!:start:song,shawn,start
   
 
           🌵"-d"将用户"song"从组"xing1"中删除
                [root@shawn ~]# gpasswd -d song xing1
                    正在将用户“song”从“xing1”组中删除
     
 
          🌵再次查看组成员,可以发现没有用户"song"
                [root@shawn ~]# grep 'xing1' /etc/gshadow
                   xing1:!:start:shawn,start
  • 设置密码
                   🐼我们可以为组设置密码,然后让非组用户通过命令"newgrp [组名]"临时切换到组内
                   🐼并以输入密码的方式获取用户组的权限和特性
           🌵先为组"xing1"
                   设置一个密码
                   [root@shawn ~]# gpasswd xing1
                  正在修改 xing1 组的密码
                  新密码:                   #输入密码
                   请重新输入新密码: #确认密码

4|33.newgrp : 切换主组

  • 语法
       # newgrp [组名]
  • 创建一个文件
               🐼首先我们制作一个文件"a.txt"
               🐼属主"root", 属组"xing1"
               🐼属主和属组对文件都可读可写
               🐼那么你想要修改只能是root或者组员
    🌵创建一个"a.txt",并查看其信息
               [root@shawn ~]# touch /tmp/a.txt
               [root@shawn ~]# ll !$
                   ll /tmp/a.txt
                  -rw-r--r-- 1 root root 0 10月 28 23:40 /tmp/a.txt
   🌵将属组改为组"xing1",并查看
               [root@shawn ~]# chown root.xing1 /tmp/a.txt
               [root@shawn ~]# ll !$
                   ll /tmp/a.txt
                  -rw-r--r-- 1 root xing1 0 10月 28 23:40 /tmp/a.txt
   🌵将属组对文件权限改为可读可写,并查看信息
                [root@shawn ~]# chmod 664 !$ chmod 664 /tmp/a.txt
                [root@shawn ~]# ll !$
                    ll /tmp/a.txt
                   -rw-rw-r-- 1 root xing1 0 10月 28 23:40 /tmp/a.txt
  • 切换用户操作文件
   🌵将用户切换到"song",并对文件进行写操作
             [root@shawn ~]# su song
             [song@shawn root]$ echo "I am song" >> /tmp/a.txt
               bash: /tmp/a.txt: 权限不够
 
  🌵可以发现权限不够,使用"newgrp"临时加入到组"xing1"中
              [song@shawn root]$ newgrp xing1
              密码: #输入之前设置的密码
 
 
   🌵再对文件进行写操作,查看发现可以写进去
              [song@shawn root]$ echo "I am song" >> /tmp/a.txt
              [song@shawn root]$ cat /tmp/a.txt
                 I am song
 
   🌵"exit"可退出临时的组,退出后再进行写操作就不行了
             [song@shawn root]$ exit
               exit
             [song@shawn root]$ echo "I am song" >> /tmp/a.txt
             bash: /tmp/a.txt: 权限不够
 
 
 
扩展阅读
  1. useradd创建⽤户时,对于未指定的选项(-u、-g等等),会
  2. 以/etc/login.defs、/etc/default/useradd两个配置⽂件中的配置作为参照物
  3. #配置⽂件/etc/login.defs详解
  4. [root@egon ~]# grep -Ev "^#|^$" /etc/login.defs
  5. MAIL_DIR /var/spool/mail
  6. PASS_MAX_DAYS 99999 #密码最⼤有效期
  7. PASS_MIN_DAYS 0 #两次修改密码的最⼩间隔时间
  8. PASS_MIN_LEN 5 #密码最⼩⻓度,对于root⽆效
  9. PASS_WARN_AGE 7 #密码过期前多少天开始提示
  10. UID_MIN 1000 #⽤户ID的最⼩值
  11. UID_MAX 60000 #⽤户ID的最⼤值
  12. SYS_UID_MIN 201 #系统⽤户ID的最⼩值
  13. SYS_UID_MAX 999 #系统⽤户ID的最⼤值
  14. GID_MIN 1000 #组ID的最⼩值
  15. GID_MAX 60000 #组ID的最⼤值
  16. SYS_GID_MIN 201 #系统⽤户组ID的最⼩值
  17. SYS_GID_MAX 999 #系统⽤户组ID的最⼤值
  18. CREATE_HOME yes #使⽤useradd的时候是可以创建⽤户家⽬录
  19. UMASK 077 #创建家⽬录时umask的默认控制权限
  20. USERGROUPS_ENAB yes #删除⽤户的时候是否同时删除⽤户组
  21. ENCRYPT_METHOD SHA512 #密码加密规则
  22. #配置⽂件/etc/default/useradd详解
  23. [root@egon ~]# cat /etc/default/useradd
  24. GROUP=100 #依赖于/etc/login.defs的USERGRUUPS_ENAB参数,如果为
  25. no,则在此处控制
  26. HOME=/home #把⽤户的家⽬录建在/home中。
  27. INACTIVE=-1 #是否启⽤账号过期停权,-1表示不启⽤。
  28. EXPIRE= #账号终⽌⽇期,不设置表示不启⽤。
  29. SHELL=/bin/bash #新⽤户默认所有的shell类型。
  30. SKEL=/etc/skel #配置新⽤户家⽬录的默认⽂件存放路径。
  31. CREATE_MAIL_SPOOL=yes #创建mail⽂件。
  32. 当使⽤useradd创建⽤户时,创建的⽤户家⽬录下会存在.bash_* 环境变量相关的⽂件,这些环境
  33. 变量⽂件默认
  34. 从/etc/skel⽬录中拷⻉。这个默认拷⻉环境变量位置是由/etc/default/useradd配置⽂件中定
  35. 义的。
  36. #故障案例,在当前⽤户家⽬录下执⾏了rm -rf .*命令,下次登录系统时出现-bash-4.1$,如何
  37. 解决!
  38. -bash-4.1$ cp -a /etc/skel/.bash* ./
  39. -bash-4.1$ exit
  40. [root@egon ~]# #重新连接即可恢复
 
⼿动创建⽤户
     1、/etc/passwd
             

[root@aliyun ~]# vim /etc/passwd # 新加⼀⾏
[root@aliyun ~]# tail -1 /etc/passwd
egon:x:2002:2002:哈哈哈:/home/egon:/bin/bash

      2、/etc/shadow

[root@aliyun ~]# openssl passwd -1 -salt 'i have a dream'
Password:
$1$i have a$jBGkkhpFu9WPSI1Nv.whT/
[root@aliyun ~]# vim /etc/shadow
[root@aliyun ~]# tail -1 /etc/shadow
egon:$1$i have a$jBGkkhpFu9WPSI1Nv.whT/:18303::::::

       制作密码

openssl passwd ⼿动⽣成密码
引⾔:在Linux系统中我们要向⼿动⽣成⼀个密码可以采⽤opensll passwd来⽣成⼀个密码作为⽤
户账号的密码。Linux系统中的密码存放在/etc/shadow⽂件中,并且是以加密的⽅式存放的,根据
加密⽅式的不同,所产⽣的加密后的密码的位数也不同。
openssl passwd的作⽤是⽤来计算密码hash的,⽬的是为了防⽌密码以明⽂的形式出现。
语法格式: openssl passwd [option] passwd
openssl passwd常⽤的选项如下:
-1:表示采⽤的是MD5加密算法。
-salt:指定salt值,不使⽤随机产⽣的salt。在使⽤加密算法进⾏加密时,即使密码⼀样,salt
不⼀样,所计算出来的hash值也不⼀样,除⾮密码⼀样,salt值也⼀样,计算出来的hash值才⼀
样。salt为8字节的字符串。
示例:
[tom@localhost ~]$ openssl passwd -1 -salt 'i have a dream' ##注意'i have
a dream' 不是密码⽽是密码的盐,注意密码的盐⾥不要有中⽂
Password: ##这⾥输⼊的是密码
$1$12345678$1qWiC4czIc07B4J8bPjfC0 ##这是⽣成的密⽂密码
##将⽣成的密码串,⼿动添加到/etc/shadow中就可⽤作⽤户的登陆密码了。

    3、/etc/group'

 

[root@aliyun ~]# vim /etc/group
[root@aliyun ~]# tail -1 /etc/group
egon:x:2002:

      4、/etc/gshadow

[root@aliyun ~]# vim /etc/gshadow
[root@aliyun ~]# tail -1 /etc/gshadow
egon:!::

      5、创建⽤户家⽬录,并⽤⽤户⽼家的模板/etc/skel/ 装修⼀下,注意权限

[root@aliyun ~]# mkdir /home/egon
[root@aliyun ~]# cp -r /etc/skel/.[!.]* /home/egon/
[root@aliyun ~]# chmod 700 /home/egon/
[root@aliyun ~]# chown -R egon.egon /home/egon/

    6、/var/spool/mail/xxx ⽤户邮箱⽂件

[root@aliyun ~]# touch /var/spool/mail/egon
[root@aliyun ~]# chmod 660 !$
chmod 660 /var/spool/mail/egon
[root@aliyun ~]# chown egon.mail /var/spool/mail/egon

     测试账号的登录

[root@aliyun ~]# ssh egon@127.0.0.1
egon@127.0.0.1's password:
Last login: Mon Aug 10 23:18:55 2020 from 127.0.0.1
Welcome to Alibaba Cloud Elastic Compute Service !
[egon@aliyun ~]$ whoami
egon


__EOF__

本文作者ଲ小何才露煎煎饺
本文链接https://www.cnblogs.com/zeny/articles/14438832.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   ଲ小何才露煎煎饺  阅读(110)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
点击右上角即可分享
微信分享提示