Linux用户组管理

学习路线

image

 

用户的概念和分类

1.用户指的是Linux操作系统中用于管理系统或者服务的人,用户管理的是相应的文件

2.用户的分类:

    1) 超级用户:也叫管理员,root。该用户具有所有权限,UID并且绝对只能是0.

    2) 系统用户:也叫程序用户。一般都是由程序创建,用于程序或者服务运行的身份;

                       默认不允许登陆系统。

                       注:Centos6/RHEL6中,系统用户UID范围:1<=UID<=499;

                             Centos6/RHEL6中,系统用户UID范围:1<=UID<=999

   3) 普通用户: 一般都是由管理员创建,用于对系统进行有限的管理维护操作。

                     默认可以登录系统。UID小于60000

特别说明:

1. 用户指的是操作系统上管理系统或服务的人,是人,就有相关的属性信息

2. 用户的属性信息包括但不限于,如:家目录、唯一身份标识(UID)、所属组(GID)等

 

用户创建及相关配置文件

1.创建用户

useradd [option] username
            -u:表示自定义UID
                示例:  [root@localhost ~]# useradd -u 888 jf2
                        [root@localhost ~]# tail -1 /etc/passwd
                        jf2:x:888:888::/home/jf2:/bin/bash
            -g:表示使新增用户属于已经存在的某个组,后面可以跟组id,也可以跟组名。
                示例:  [root@localhost ~]# useradd -g test jf3
                        [root@localhost ~]# tail -1 /etc/passwd
                        jf3:x:889:503::/home/jf3:/bin/bash
            -G:表示使用附加组
                示例:  [root@localhost ~]# useradd -G test jf4
                        [root@localhost ~]# cat /etc/group
                        test:x:503:jf4

            -c:表示添加注释内容
                示例:  [root@localhost ~]# useradd -c lianxi jf5
                        [root@localhost ~]# tail -1 /etc/passwd
                        jf5:x:891:891:lianxi:/home/jf5:/bin/bash
            -d:表示自定义用户的家目录
                示例: [root@localhost ~]# useradd -d /home/test jf9
                        [root@localhost ~]# tail -1 /etc/passwd
                        jf9:x:895:895::/home/test:/bin/bash
            -M:表示不创建家目录
                示例:  [root@localhost ~]# useradd -M jf10
                        [root@localhost ~]# su - jf10
                        su: 警告:无法切换到目录/home/jf10: 没有那个文件或目录

            -s:表示自定义shell
                示例:[root@localhost ~]# useradd -s /sbin/nologin jf11
                [root@localhost ~]# tail -1 /etc/passwd
                jf11:x:897:897::/home/jf11:/sbin/nologin  
            -r:添加系统用户
                示例:  [root@localhost ~]# useradd -r apache
                [root@localhost ~]# tail -1 /etc/passwd
                apache:x:498:498::/home/apache:/bin/bash

2.用户信息的保存文件

[root@localhost ~]# head -3 /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    
/etc/paswd由:分割成7个字段。
    ·第一字段为用户, 它代表用户账号的字符串。
    ·第二字段存放的是该账号的口令。
    ·第三个字段为一个数字,这个数字代表着用户标识号,也称uid。系统通过这个数字识别用户身份的。这里的0就是root,也就是说我们可以修改test用户的uid为0,那么系统会认为root和test为同一个账户。uid的取值范围是0-65535.Centos7的普通用户标识号从1000开始。
    ·第四个字段也是数字,标识组标识号,也称gid。这个字段对应着/etc/group中的一条记录。
    ·第五个字段为注释说明,没什么意义
    ·第六个字段为用户的家目录,当用户登录时,就出在这个目录下。
    ·最后一个字段为用户的shell。



[root@localhost ~]# head -5 /etc/shadow
    root:$6$sO4k9N7S/4.hzm1G$hylKE5GxsZMN42kY1CkWi/qB03./1IvlwCJKGl/hQpb3uJnnsCYEdbfQlQ2v5Efmyjgt4BbcKyvi5Kfzwns.M.:17602:0:99999:7:::
    bin:*:17246:0:99999:7:::
    daemon:*:17246:0:99999:7:::
    
/etc/shadow由:分割成9个字段。
    ·第一个字段为用户名
    ·第二个字段为用户密码,是该账号的真正密码。
    ·第三个字段为上次更改密码的日期,这个数字以1970年1月1日和上次更改密码的日期为基准计算而来。
    ·第四个字段为要过多少天才可以更改密码,默认是0,即不受限制。
    ·第五个字段为密码多少天后到期,即在多少天内必须更改密码。默认是9999
    ·第六个字段为免到期前的警告期限。
    ·第七个字段为账号失效期限。
    ·第八个为账号的生命周期。
    ·最后一个字段作为保留用的。

 

用户信息的修改

1.usermod(更改用户的)

usermod [option] [参数]USERNAME
            -u;更改用户ID
            -g GID:更改用户的基本组
            -a -G:不使用-a选项,会覆盖原有的附加组
            -c:“注释内容”
            -d -m:指定用户的家目录,如果用户登录过,则加上-m选项,移动其此前的文件到新的家目录
            -s;更改用户的shell
            -l:更改用户的登录名(Login)
            -L:锁定账号
            -U:解锁账号

2.chage(更改用户的账号信息)

chage -operation USERNAME
    -d 修改用户最后一次更改密码的时间(为0时,登录系统时强制更改密码)
    -m 修改密码的最小存活期(几天后才能修改密码)
    -M 修改密码的最大存活期(每隔多少天更新一次密码)
    -W 修改密码过期前警告(过期前几天发出警告)
    -I (大写I)修改允许密码过期几天
    -E 修改账户过期时间
    -l(小写l) 列出账户的信息

 

 

删除用户

usermod -operation USERNAME
    -r: 删除用户并且移除其家目录和邮箱
    -f: 强制删除正在登陆的用户

 

 

组管理

1.核心功能:方便管理用户

用户是操作系统上管理维护系统或服务的人 组是用户的一个属性信息

任何一个用户默认都会有一个主组(默认组)

一个用户除了主组也可以有多个其他组(附加组)

 

2.组的创建和删除

groupadd [-g GID] groupname
        示例:  [root@localhost ~]# groupadd test
                [root@localhost ~]# groupadd -g 888 test1
                [root@localhost ~]# tail -2 /etc/group
                test:x:503:
                test1:x:888:

                
3.删除组命令groupdel
    groupdel groupname
        示例:  [root@localhost ~]# groupdel test1
                [root@localhost ~]# tail -2 /etc/group
                jf1:x:502:
                test:x:503:

3.组成员管理

gpasswd -operation GROUPNAME
常见选项: 
-a    添加用户到组 
-d    从组中删除成员 
-A    指定管理员 
-M    指定组成员,可以批量添加用户到组中 
-r    删除密码

gpasswd 组名     给组设置密码

 

 

用户信息的查看

1.查看属性信息:id

id [option] [username]
      -u:显示用户的ID号
      -g:显示用户所在的基本组的组ID号
      -G:显示用户所在的附加组的组ID号
      -un gn Gn:显示ID号相对应的名字
        示例:  [root@localhost ~]# id jf5
                uid=891(jf5) gid=891(jf5) 组=891(jf5)
                [root@localhost ~]# id -u jf5
                891
                [root@localhost ~]# id -un jf5
                jf5

2.查看用户账号信息:finger

[root@localhost ~]# finger alice
Login: alice                      Name: alice oscar
Directory: /home/alice                  Shell: /bin/bash
Never logged in.
No mail.
No Plan.


用户的密码管理:passwd

passwd [option] [USERNAME]
        --stdin:标准输入,即passwd从标准输入(键盘)读取密码
        用途:Linux中为了安全尽量避免捕获用户接口,即尽量不和用户交互
                当用脚本批量创建用户和密码时不能自动执行(半夜时候)此时会用到--stdin
                实例:[root@ns1 ~]# echo "aaa...111" |     passwd --stdin jf
                    更改用户 jf 的密码 。
                    passwd: 所有的身份验证令牌已经成功更新。

        -l:锁定用户
            示例:[root@ns1 ~]# passwd -l jf
                    锁定用户 jf 的密码 。
                    passwd: 操作成功
        -u:解除用户

 

其他的用户相关指令

1.检查用户账号完整性:pwck

[root@ns1 ~]# pwck
用户“adm”:目录 /var/adm 不存在
用户“uucp”:目录 /var/spool/uucp 不存在
用户“gopher”:目录 /var/gopher 不存在
用户“ftp”:目录 /var/ftp 不存在
用户“rpc”:目录 /var/lib/rpcbind 不存在
用户“saslauth”:目录 /var/empty/saslauth 不存在
用户“oprofile”:目录 /home/oprofile 不存在
pwck:无改变

2.显示当前登录到系统的用户名:whoami

[root@ns1 ~]# su - jf
[jf@ns1 ~]$ whoami
jf
posted @ 2019-07-13 21:19  better_feng  阅读(256)  评论(0编辑  收藏  举报