zoukankan      html  css  js  c++  java
  • linux之用户和用户组管理详解

    #############用户和用户组管理###################
    linux只认识UID和GID #可在/etc/passwd 和/etc/group中找到

    ##/etc/passwd 详解
    [root@lgh2 ~]# cat /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
    省略。。。

    很多用户为系统用户或伪用户。系统用户无法用来登录系统,但也不能删除,因为一旦删除,依赖这些用户运行的服务或程序就
    不能正常执行,会导致系统问题

    #格式
    用户名:密码:UID(用户ID):GID(组ID):描述性信息:主目录:默认Shell
    用户名:代表用户身份的符号
    密码:”x“ 表示有密码,真正的密码存放在/etc/shadow中
    UID:用户id,0-65535之间的数字,0表示root超级用户,1-499表示系统用户(伪用户)500-65535表示普通用户
    GID:组ID,表示用户初始组组id
    初始组:指用户登陆时就拥有这个用户组的相关权限。每个用户的初始组只能有一个,通常就是将和此用户的用户名相同的组名作为该用户的初始组
    附加组,指用户可以加入多个其他的用户组,并拥有这些组的权限
    描述性信息:解释语
    主目录:就是用户的home目录
    默认Shell:Linux 系统默认使用的命令解释器是 bash(/bin/bash)

    ##/etc/shadow 详解
    [root@lgh2 ~]# cat /etc/shadow
    root:$6$ma8fbbGcOsZzwVFU$6WxNnECNp8FjKH7a6ePicjhMWRvNCXrdonjYSn24uX5sP2A9tcD64MKOTdEkyrsdOdvoW42FhJJbJdOJ6AKL7.::0:99999:7:::
    bin:*:17632:0:99999:7:::
    daemon:*:17632:0:99999:7:::
    省略。。。

    #格式
    用户名:加密密码:最后一次修改时间:最小修改时间间隔:密码有效期:密码需要变更前的警告天数:密码过期后的宽限时间:账号失效时间:保留字段
    用户名:同/etc/passwd中的用户
    加密密码:不能手工修改,SHA512 散列加密算法,所有伪用户的密码都是 "!!" 或 "*",代表没有密码是不能登录的。当然,新创建的用户如果不设定密码,
    那么它的密码项也是 "!!",代表这个用户没有密码,不能登录。
    最后一次修改时间:最后一次修改密码的时间,1970 年 1 月 1 日作为 1 不断累加得到的时间
    最小修改时间间隔:该字段规定了从第 3 字段(最后一次修改密码的日期)起,多长时间之内不能修改密码。如果是 0,则密码可以随时修改;
    密码有效期:指定距离第 3 字段(最后一次更改密码)多长时间内需要再次变更密码,否则该账户密码进行过期阶段
    密码需要变更前的警告天数:与第 5 字段相比较,当账户密码有效期快到时,系统会发出警告信息给此账户
    密码过期后的宽限天数:也称为“口令失效日”,失效之后,还可以登录的天数
    账号失效时间:同第 3 个字段一样,使用自 1970 年 1 月 1 日以来的总天数作为账户的失效时间。该字段表示,账号在此字段规定的时间之外,不论你的密码是否过期,都将无法使用!

    ##/ect/group 详解
    文件是用户组配置文件,即用户组的所有信息都存放在此文件中。
    [root@lgh2 ~]# cat /etc/group
    root:x:0:
    bin:x:1:
    daemon:x:2:
    sys:x:3:
    adm:x:4:
    tty:x:5:
    disk:x:6:
    省略。。。

    #格式
    组名:密码:GID:该用户组中的用户列表
    该用户组中的用户列表:该用户组是这个用户的初始组,则该用户不会写入这个字段
    其他字段同上文


    #/etc/gshadow 详解
    [root@lgh2 ~]# cat /etc/gshadow
    root:::
    bin:::
    daemon:::
    省略。。。

    #格式
    组名:加密密码:组管理员:组附加用户列表


    #cat /etc/login.defs | grep -v ^# | grep -v "^$"
    可查看创建用户时的一些默认值(账号)


    #useradd
    -d #手工指定用户的主目录。主目录必须写绝对路径
    -M #不创建home目录
    -g #手工指定用户的初始组
    -G #指定用户的附加组
    -c #手工指定/etc/passwd文件中各用户信息中第 5 个字段的描述性内容,可随意配置;
    -u #手工指定用户的 UID,注意 UID 的范围(不要小于 500)
    -s #手工指定用户的登录 Shell,默认是 /bin/bash;
    -e #指定用户的失效曰期,格式为 "YYYY-MM-DD"。也就是 /etc/shadow 文件的第八个字段;
    -o #允许创建的用户的 UID 相同。例如,执行 "useradd -u 0 -o usertest" 命令建立用户 usertest
    -r #创建系统用户,也就是 UID 在 1~499 之间,

    /etc/default/useradd ##创建用户时一些默认的配置(home目录等)
    也可以通过useradd -D 查看

    [root@lgh2 skel]# ll -a /etc/skel/ ##可以用于复制到home目录下
    total 24
    drwxr-xr-x. 2 root root 62 Apr 11 2018 .
    drwxr-xr-x. 91 root root 8192 Jun 27 04:47 ..
    -rw-r--r--. 1 root root 18 Apr 10 2018 .bash_logout
    -rw-r--r--. 1 root root 193 Apr 10 2018 .bash_profile
    -rw-r--r--. 1 root root 231 Apr 10 2018 .bashrc


    #passwd
    #格式:passwd [选项] 用户名
    -S:查询用户密码的状态,也就是 /etc/shadow 文件中此用户密码的内容。仅 root 用户可用;
    -l:暂时锁定用户,该选项会在 /etc/shadow 文件中指定用户的加密密码串前添加 "!",使密码失效。仅 root 用户可用;
    -u:解锁用户,和 -l 选项相对应,也是只能 root 用户使用;
    --stdin:可以将通过管道符输出的数据作为用户的密码。主要在批量添加用户时使用;
    -n 天数:设置该用户修改密码后,多长时间不能再次修改密码,也就是修改 /etc/shadow 文件中各行密码的第 4 个字段;
    -x 天数:设置该用户的密码有效期,对应 /etc/shadow 文件中各行密码的第 5 个字段;
    -w 天数:设置用户密码过期前的警告天数,对于 /etc/shadow 文件中各行密码的第 6 个字段;
    -i 日期:设置用户密码失效日期,对应 /etc/shadow 文件中各行密码的第 7 个字段。

    echo “abcd1234” | passwd username --stdin

    #usermod
    #格式:usermod [选项] 用户名
    -c 用户说明:修改用户的说明信息,即修改 /etc/passwd 文件目标用户信息的第 5 个字段;
    -d 主目录:修改用户的主目录,即修改 /etc/passwd 文件中目标用户信息的第 6 个字段,需要注意的是,主目录必须写绝对路径;
    -e 日期:修改用户的失效曰期,格式为 "YYYY-MM-DD",即修改 /etc/shadow 文件目标用户密码信息的第 8 个字段;
    -g 组名:修改用户的初始组,即修改 /etc/passwd 文件目标用户信息的第 4 个字段(GID);
    -u UID:修改用户的UID,即修改 /etc/passwd 文件目标用户信息的第 3 个字段(UID);
    -G 组名:修改用户的附加组,其实就是把用户加入其他用户组,即修改 /etc/group 文件;
    -l 用户名:修改用户名称;
    -L:临时锁定用户(Lock);
    -U:解锁用户(Unlock),和 -L 对应;
    -s shell:修改用户的登录 Shell,默认是 /bin/bash。

    #chage
    #格式:chage [选项] 用户名
    -l:列出用户的详细密码状态;
    -d 日期:修改 /etc/shadow 文件中指定用户密码信息的第 3 个字段,也就是最后一次修改密码的日期,格式为 YYYY-MM-DD;
    -m 天数:修改密码最短保留的天数,也就是 /etc/shadow 文件中的第 4 个字段;
    -M 天数:修改密码的有效期,也就是 /etc/shadow 文件中的第 5 个字段;
    -W 天数:修改密码到期前的警告天数,也就是 /etc/shadow 文件中的第 6 个字段;
    -i 天数:修改密码过期后的宽限天数,也就是 /etc/shadow 文件中的第 7 个字段;
    -E 日期:修改账号失效日期,格式为 YYYY-MM-DD,也就是 /etc/shadow 文件中的第 8 个字段。

    #userdel
    #格式 userdel -r 用户名
    -r 选项表示在删除用户的同时删除用户的家目录。

    #id
    id 命令可以查询用户的UID、GID 和附加组的信息
    #格式: id 用户名

    #su
    #格式: su [选项] 用户名
    -:当前用户不仅切换为指定用户的身份,同时所用的工作环境也切换为此用户的环境(包括 PATH 变量、MAIL 变量等),使用 - 选项可省略用户名,默认会切换为 root 用户。
    -l:同 - 的使用类似,也就是在切换用户身份的同时,完整切换工作环境,但后面需要添加欲切换的使用者账号。
    -p:表示切换为指定用户的身份,但不改变当前的工作环境(不使用切换用户的配置文件)。
    -m:和 -p 一样;
    -c 命令:仅切换用户执行一次命令,执行后自动切换回来,该选项后通常会带有要执行的命令。

    su - -c "useradd user1" root
    使用 su 命令时,有 - 和没有 - 是完全不同的,- 选项表示在切换用户身份的同时,连当前使用的环境变量也切换成指定用户的

    #groupadd
    #格式:groupadd [选项] 组名
    -g GID:指定组 ID;
    -r:创建系统群组。

    #groupmod
    #格式:groupmod [选项] 组名
    -g GID:修改组 ID;
    -n 新组名:修改组名

    #groupdel
    #格式:groupdel 组名
    不能使用 groupdel 命令随意删除群组

    #gpasswd
    为了避免系统管理员(root)太忙碌,无法及时管理群组,我们可以使用 gpasswd 命令给群组设置一个群组管理员,
    代替 root 完成将用户加入或移出群组的操作
    #格式:gpasswd 选项 组名
    :选项为空时,表示给群组设置密码,仅 root 用户可用。
    -A user1,...:将群组的控制权交给 user1,... 等用户管理,也就是说,设置 user1,... 等用户为群组的管理员,仅 root 用户可用
    -M user1,user2...:将 user1,... 加入到此群组中,仅 root 用户可用。
    -r:移除群组的密码,仅 root 用户可用。
    -R: 让群组的密码失效,仅 root 用户可用。
    -a user: 将 user 用户加入到群组中。
    -d user: 将 user 用户从群组中移除。


    #newgrp
    切换用户的有效组,newgrp 命令可以从用户的附加组中选择一个群组,作为用户新的初始组
    #格式:newgrp 组名

  • 相关阅读:
    Codeforces 377 A Maze【DFS】
    分糖果 5.0升级版
    poj_1201_Intervals
    NOIP2016全国信息学分区联赛提高组第二试 组合问题
    NOIP2016全国信息学分区联赛提高组第一试 玩具迷题
    NOIP 2016提高组总结
    2016年提高组模拟试题(20161105)Mahjong
    打鼹鼠
    2015年普级组模拟试题 小X的矩阵
    交汇的火力
  • 原文地址:https://www.cnblogs.com/zsql/p/11099377.html
Copyright © 2011-2022 走看看