Linux学习之路1-用户管理

用户管理

 

 

        用户

                linux的用户账号记录主要存放在/etc/passwd,每增加一个用户就会新增一行。每一行一共有7个字段,用冒号分隔wKioL1Xd1GWDDFs4AAA1MvBV8ZU198.jpg

         

                每个字段的含义:

                        aa:x:300:503::/home/database:/bin/bash

                        用户名:密码:UIDGID:注释:家目录:用户默认shell

                 

                我们来解析一下每一个字段的含义

                     用户名:也就账号名,有字母、数字、字符组成,不能以数字开头

                     密码:这里的密码会用X字符代替,为了安全,真正的密码存放在/etc/shadow里面

                UID:用户ID号,每一个用户都有唯一的ID号标示,系统识别用户最终是根据UID来识别,而不是用户名,用户名转换为UID这一过程称为名称解析。Linux UID最大范围是0-65535,正常使用1-60000,管理员UID固定为0。在Centos6上,1-499为系统用户预留,普通用户使用500以上,而在Centos71-999为系统用户预留,普通用户使用1000以上

                GID:用户基本组ID,和UID一样,都有唯一的标示

                注释:自定义的备注信息

                家目录:当新建用户的时候都会有一个用户自己的目录,没特别指定位置都会在/home下面,和用户名一样

                shell:指定用户使用的shellcentos默认为bash shell

 

用户组:

    用户的组信息存放在/etc/group,一共4个字段,以:号分隔

    各字段的说明:

        dx:x:500:aa

    组名:组密码:GID:用户列表

 

    其中组密码和/etc/passwd用的用户密码一样,为了安全,用X替代,真实密码会存放        在/etc/gshadow里面,同样是经过加密后的(SHA512加密).

用户列表:它们的附加组属于这个组

 

 

 

另外,关于/etc/shadow/etc/gshadow里的特别说明

我们看一下shadowgshadow里的格式

wKioL1Xd1Oji1N32AAB6Yobg9pw334.jpg

wKiom1Xd0tChCyV2AABo-UVAeEo989.jpg


        取其中加密后的密码字典做解析:

            $6$fMwePAO/    $RsfsCCkATlci2HBi6hUN6gU7W0I/Bf4nGP2nZoo7eqovkdORJZchXClzePNpE.9OqOfRFKAUHO.jR4THFw0xJ1

        3$分隔,$id$salt$encrypted

        第一个字段id:

            id1时,采用MD5进行加密

            id5时,采用SHA256进行加密

            id6时,采用SHA512进行加密

        第二个字段salt:

            由于会存在某些用户使用同一个密码登陆系统,当shadow文件不小心泄漏,同样密码加密后的密文是一样的,会有被人猜到密码的可能,所以在我们每次改写密码时,都会随机生成这样一个salt.我们登录时输入的明文密码经过上述的加工后与shadow里的密码域进行字符比较,这样就算同一个密码也会有不同的密文,增加安全性。

 

用户和组的相关的配置文件:

    /etc/passwd:用户名、UID、基本组等信息

        /etc/group:组名、GID、组内包含的用户;

        /etc/shadow:用户密码及相关属性;

        /etc/gshadow:组的密码及相关属性;

 

用户和组管理的相关命令:

        useradd 创建用户

                命令格式:

                useradd [options] LOGIN

                useradd -D [options] 设置新建用户时系统的默认值

                                            例如:useradd �CD �Cs /bin/tcsh 后,会改变/etc/default/useradd配置文件,下次新建用户的时候,默认shell就是/bin/tcsh

                -r 创建系统用户

                -u UID:指定UID

                -g GID:指定用户所属基本组,此组必须事先存在

                -c 备注信息

                -d 指定用户的主目录路径;此位置不能事先存在,否则/etc/skel相关用户配置文件将不被复制过去

                -s 设定用户默认shell

                -G 指定用户附加组

                -M 不给用户创建家目录

 

    例子:创建用户Oracle,所属附加组databasesql,ID号为3000,家目录为/home/database

    useradd �CG database,sql �Cu 3000 �Cd /home/database

 

        usermod:用户属性修改

        usermod [OPTION]... LOGIN

            -u UID

            -g GID

            -G 修改用户所属的附加组;同时使用-a选项是保留原有设置,追加新的上去

            -s shell

            -c 备注信息

            -d 修改用户的家目录为新位置,用户原目录文件不会移动到新目录,但加上-m选项就可以

            -l 修改登录名

            -L 锁定用户

            -U 解锁用户

            例子:staff用户追加附加组newuser2newuser3

            usermod -G  -a staffnewuser2newuser3

         

        userdel:删除用户

                      userdel[-r] USERNAME

                      -r:删除用户的同时删除其家目录;

            例子:删除用户aa,并把家目录一起删除

                   userdel �Craa

         

        passwd:给用户添加密码

                      passwd[OPTION] [UserName]

                      -l: 锁定用户

                      -u: 解锁用户

                      -nmindays: 最短使用期限;

                      -xmaxdays:默认为99999天;

                      -wwarndays

                      -iinactivedays

                      --stdin:从标准输出接收用户密码;

         

                    echo 'centos' | passwd --stdin centos

         

         

        groupadd:创建组

                groupadd [OPTIONS] GROUPNAME

                                    -gGID: 指明组ID

                                    -r:创建系统组;

                例子:创建组ID 999aa

                                   groupadd�Cg 999 aa

         

        groupmod: 组属性修改

                   groupmod[OPTION] GROUPNAME

                                    -nGROUP_NAME

                                    -gGID

                  

        gpasswd:设定组密码

                例子:为xx组设定组密码

                           gpasswd xx


        groupdel:删除组

                例子:删除xx

                groupdel xx

         

        id:查看用户相关的id信息;

                  id [OPTION]... [USER]

                                    -u:UID

                                    -g:GID

                                    -G:Groups

                                    -n:NAME

                例子:显示当前用户或aa用户信息


wKiom1Xd0tChCyV2AABo-UVAeEo989.jpg

wKioL1Xd1OjRpkVXAACU2m1gO1w192.jpg


suswitch user, 切换用户或以其它用户的身份执行命令;

    切换方式:

                suUSERNAME: 非完全切换;非登录式切换

                su- USERNAMEsu -lUSERNAME: 完全切换;登录式切换

 

                仅以指定用户的身份执行指定的命令:

                     su- USERNAME -c 'COMMAND'

                     例如su - aa -c  'echo "aa"'

 

newgrp:切换基本组为指定的组

    例子:把当前登陆用户aa切换为bb

           newgrp bb

 

w, who, whoami 查看当前登录用户信息

 wKiom1XeTdaDXftNAADchMqJQsg548.jpg


chage, chsh, chfn 用得不多,了解一下

chage

         -d: 最近一次的修改时间(第三个字段)

        -E: 过期时间(第八个字段)

        -I:非活动时间(第七个字段)

        -m: 最短使用期限(第四个字段)

        -M: 最长使用期限(第五个字段)

        -W: 警告时间(第六个字段)

chshchangeshell,修改用户的默认shell

     例子:yy用户改为tcsh shell

bash-4.1$ chsh

Changing shell for yy.

密码:

New shell [/bin/bash]: /bin/tcsh

Shell changed.

chfnchangefinger,修改注释信息cat/etc/passwd





你可能感兴趣的:(linux,database,用户名,管理员)