zoukankan      html  css  js  c++  java
  • Linux入门进阶第五天——用户管理(帐号管理 )上

    一、帐号与群组

      关于使用者帐号:

      用户的ID与帐号信息所在位置是 /etc/passwd,而管理密码的数据则是在 /etc/shadow

    每个登陆的使用者至少都会取得两个 ID ,

        一个是使用者 ID (UserID ,简称 UID)、

        一个是群组 ID (Group ID ,简称 GID)。

      之前提到的文件的所有者和所属组,Linux就是通过UID与GID赖进行判断的呢(它只认识0和1这样的,对字符型的帐号名称其实没什么概念!,所以说,当系统有需要的时候,其实是通过查找/etc/passwd 和 /etc/group来进行帐号的显示的!如果没有找到对应UID的帐号,则直接显示UID的数字了!)

      1./etc/passwd文件

    [root@localhost ~]# 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
    adm:x:3:4:adm:/var/adm:/sbin/nologin
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    sync:x:5:0:sync:/sbin:/bin/sync
    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
    halt:x:7:0:halt:/sbin:/sbin/halt
    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    operator:x:11:0:operator:/root:/sbin/nologin
    games:x:12:100:games:/usr/games:/sbin/nologin
    ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

      格式

      

    1:用户名,用户登录系统时使用的用户名(账户名称)
    2:密码位
      在早期的Linux系统中,密码是存放在/etc/passwd文件中的,但是每个用户对该文件都有读的权限,这是比较危险的,
    后来就不存放在这个文件了。
      ——转移到/etc/shadow下,所以显示x
    3:UID,用户标识号

        管理员标识(root):0 不会改变

          普通用户: 1-65535

          系统用户(伪用户):1-499, 1-999       (centos6 ,centos7)                 

          登录用户:500-60000 , 1000-60000

    4:GID,缺省组标识号
    5:注释性描述
    6:宿主目录,用户登录系统后的缺省目录
    7:用户使用的shell,默认为bash

       2./etc/shadow文件

    [root@localhost ~]# ll /etc/shadow
    ----------. 1 root root 703 12月 13 12:32 /etc/shadow

      // 这个权限表示:只有root可以读写!

      想要查询加密方式,可以通过:

    authconfig --test | grep hashing
    [root@localhost ~]# authconfig --test | grep hashing
     password hashing algorithm is sha512

      shadow文件内容:

    [root@localhost ~]# head -n 4 /etc/shadow
    root:$6$lWdDY9NwZNDiRLx8$PxOrJJojIcT93j4q7SBqapAnkgLqS9AA6qCLMWkW5EF1P4zYGpDLGPSehUbVJInRmHpsXaQKW8J2fnVUvPfgz/::0:99999:7:::
    bin:*:17110:0:99999:7:::
    daemon:*:17110:0:99999:7:::
    adm:*:17110:0:99999:7:::

      格式

      

    1:用户名
    2:加密密码,如果是 !则代表密码无法使用!
    3:最近一次修改时间,以天位单位,从1970年1月1日为参考点(两个时间点间累加的日期)
    4:最小时间间隔,两次修改密码之间的最小天数,为0表示不限制,如改为3,表示间隔3天以上才能修改密码
    5:最大时间间隔,密码保持有效的最多天数,超过天数不改密码,则用户无法登录
    6:警告时间:从系统开始警告到密码失效的天数
    7:账号闲置时间,密码过期后的帐号宽限时间
    8:失效时间,密码失效的绝对天数,就是账号的失效日期,到了此日期帐号强制失效,例如用于收费服务等!
    9:标志,一般不使用

      3.口令管理

      普通用户修改密码:直接运行passwd即可!passwd指令介绍,参考http://man.linuxde.net/passwd

    [linuxde@localhost ~]$ passwd Changing password for user linuxde. //更改linuxde用户的密码; 
    (current) UNIX password:
    //请输入当前密码;
    New UNIX password:
    //请输入新密码;
    Retype new UNIX password:
    //确认新密码;
    passwd: all authentication tokens updated successfully.
    //更改成功; 来自: http://man.linuxde.net/passwd

      普通用户忘记密码以及root用户修改自己密码:(root修改自己密码运行 passwd root即可!)

    [root@localhost ~]# passwd linuxde //更改或创建linuxde用户的密码; 
    Changing password for user linuxde. New UNIX password:
    //请输入新密码; Retype new UNIX password: //再输入一次; passwd: all authentication tokens updated successfully. //成功; 来自: http://man.linuxde.net/passwd

      口令密码详细的设置命令chage的参考http://linux.51yip.com/search/chage

      root用户忘记密码比较棘手,将在单人维护章节讲述!

      关于群组

      1./etc/group

    [root@localhost ~]# head -n 4 /etc/group
    root:x:0:
    bin:x:1:
    daemon:x:2:
    sys:x:3:

    1.组名称
    2.组密码,通常不用,同样类似有/etc/gshadow文件
    3.GID,群组ID
    4.组员列表,新版Linux对于初始群组已经不显示默认成员了!

       一个用户可以加入多个群组(使用命令 groups 可以查看所有群组!),所以这里会有有效群组的概念(不然新建一个文件怎么确定是属于哪个群组呢)

    [dmtsai@study ~]$ groups
    dmtsai wheel users

      其中,第一个群组就是有效群组,新建文件所属的群组就是这个群组!

      切换有效群组可以使用 newgrp

    [dmtsai@study ~]$ newgrp users

      修改用户加入群组,可以通过usermodhttp://man.linuxde.net/usermod

      2./etc/gshadow

    [root@localhost ~]# head -n 4 /etc/gshadow
    root:::
    bin:::
    daemon:::
    sys:::

    1.组名称
    2.密码栏,空或者!表示无密码,表示无群组管理员
    3.群组管理员帐号
    4.加入群组的帐号列表,与/etc/group相似!

    二、帐号管理

      1.添加用户——useradd

    [root@localhost ~]# useradd --help
    用法:useradd [选项] 登录
          useradd -D
          useradd -D [选项]
    
    选项:
      -b, --base-dir BASE_DIR    新账户的主目录的基目录
      -c, --comment COMMENT         新账户的 GECOS 字段
      -d, --home-dir HOME_DIR       新账户的主目录
      -D, --defaults        显示或更改默认的 useradd 配置
      -e, --expiredate EXPIRE_DATE  新账户的过期日期
      -f, --inactive INACTIVE       新账户的密码不活动期
      -g, --gid GROUP        新账户主组的名称或 ID
      -G, --groups GROUPS    新账户的附加组列表
      -h, --help                    显示此帮助信息并推出
      -k, --skel SKEL_DIR    使用此目录作为骨架目录
      -K, --key KEY=VALUE           不使用 /etc/login.defs 中的默认值
      -l, --no-log-init    不要将此用户添加到最近登录和登录失败数据库
      -m, --create-home    创建用户的主目录
      -M, --no-create-home        不创建用户的主目录
      -N, --no-user-group    不创建同名的组
      -o, --non-unique        允许使用重复的 UID 创建用户
      -p, --password PASSWORD        加密后的新账户密码
      -r, --system                  创建一个系统账户
      -R, --root CHROOT_DIR         chroot 到的目录
      -s, --shell SHELL        新账户的登录 shell
      -u, --uid UID            新账户的用户 ID
      -U, --user-group        创建与用户同名的组
      -Z, --selinux-user SEUSER        为 SELinux 用户映射使用指定 SEUSER

    创建一般用户示例:

      useradd vbird1

    CentOS 这些默认值主要会帮我们处理几个项目:
    在 /etc/passwd 里面创建一行与帐号相关的数据,包括创建 UID/GID/主文件夹等;
    在 /etc/shadow 里面将此帐号的密码相关参数填入,但是尚未有密码;
    在 /etc/group 里面加入一个与帐号名称一模一样的群组名称;
    在 /home 下面创建一个与帐号同名的目录作为使用者主文件夹,且权限为 700

      

    [root@localhost ~]# useradd -u 1500 vbird2
    [root@localhost ~]# ll -d /home/vbird2
    drwx------. 2 vbird2 vbird2 62 12月 18 14:06 /home/vbird2
    [root@localhost ~]# grep vbird2 /etc/passwd /etc/shadow /etc/group
    /etc/passwd:vbird2:x:1500:1500::/home/vbird2:/bin/bash
    /etc/shadow:vbird2:!!:17518:0:99999:7:::
    /etc/group:vbird2:x:1500:

      更多实例,参考菜鸟教程http://www.runoob.com/linux/linux-comm-useradd.html

    创建系统用户示例:

    [root@study ~]# useradd -r vbird3
    [root@study ~]# ll -d /home/vbird3
    ls: cannot access /home/vbird3: No such file or directorya <==不会主动创建主文件夹
    [root@study ~]# grep vbird3 /etc/passwd /etc/shadow /etc/group
    /etc/passwd:vbird3:x:699:699::/home/vbird3:/bin/bash
    /etc/shadow:vbird3:!!:16636::::::
    /etc/group:vbird3:x:699:

     useradd的默认配置可以通过 -D选项进行查看:

    [root@localhost ~]# useradd -D
    GROUP=100
    HOME=/home
    INACTIVE=-1
    EXPIRE=
    SHELL=/bin/bash
    SKEL=/etc/skel
    CREATE_MAIL_SPOOL=yes

      关于参考目录SKEL,参考鸟哥的介绍:

    SKEL=/etc/skel:使用者主文件夹参考基准目录
    这个咚咚就是指定使用者主文件夹的参考基准目录啰~举我们的范例一为例, vbird1 主文件
    夹 /home/vbird1 内的各项数据,都是由 /etc/skel 所复制过去的~所以呢,未来如果我想要让
    新增使用者时,该使用者的环境变量 ~/.bashrc 就设置妥当的话,您可以到 /etc/skel/.bashrc
    去编辑一下,也可以创建 /etc/skel/www 这个目录,那么未来新增使用者后,在他的主文件夹
    下就会有 www 那个目录了!这样瞭呼?
    View Code

      更多useradd默认配置可以参考https://www.cnblogs.com/craftor/p/3811612.html

       关于GID/UID以及密码的参考则是来自 /etc/login/defs,

    MAIL_DIR /var/spool/mail <==使用者默认邮件信箱放置目录
    PASS_MAX_DAYS 99999 <==/etc/shadow 内的第 5 栏,多久需变更密码日数
    PASS_MIN_DAYS 0 <==/etc/shadow 内的第 4 栏,多久不可重新设置密码日数
    PASS_MIN_LEN 5 <==密码最短的字符长度,已被 pam 模块取代,失去效用!
    PASS_WARN_AGE 7 <==/etc/shadow 内的第 6 栏,过期前会警告的日数
    UID_MIN 1000 <==使用者最小的 UID,意即小于 1000 的 UID 为系统保留
    UID_MAX 60000 <==使用者能够用的最大 UID
    SYS_UID_MIN 201 <==保留给使用者自行设置的系统帐号最小值 UID
    SYS_UID_MAX 999 <==保留给使用者自行设置的系统帐号最大值 UID
    GID_MIN 1000 <==使用者自订群组的最小 GID,小于 1000 为系统保留
    GID_MAX 60000 <==使用者自订群组的最大 GID
    SYS_GID_MIN 201 <==保留给使用者自行设置的系统帐号最小值 GID
    SYS_GID_MAX 999 <==保留给使用者自行设置的系统帐号最大值 GID
    CREATE_HOME yes <==在不加 -M 及 -m 时,是否主动创建使用者主文件夹?
    UMASK 077 <==使用者主文件夹创建的 umask ,因此权限会是 700
    USERGROUPS_ENAB yes <==使用 userdel 删除时,是否会删除初始群组
    ENCRYPT_METHOD SHA512 <==密码加密的机制使用的是 sha512 这一个机制!
    View Code

    关于这里,可以参考http://blog.csdn.net/u010181136/article/details/17436407

       综上:useradd至少会参考以下3个文件: 

        /etc/default/useradd
        /etc/login.defs
        /etc/skel/*

      2.修改用户——usermod

    -c<备注>:修改用户帐号的备注文字; 
    -d<登入目录>:修改用户登入时的目录;
    -e<有效期限>:修改帐号的有效期限;
    -f<缓冲天数>:修改在密码过期后多少天即关闭该帐号;
    -g<群组>:修改用户所属的群组;
    -G<群组>;修改用户所属的附加群组;
    -l<帐号名称>:修改用户帐号名称;
    -L:锁定用户密码,使密码无效;
    -s:修改用户登入后所使用的shell;
    -u:修改用户ID;
    -U:解除密码锁定。

    来自: http://man.linuxde.net/usermod

       示例:

    [root@localhost ~]# usermod -c "test accout" vbird2 

       3.删除用户——userdel

      确定了不使用此帐号再删除,否则只需要usermod -L 锁定即可!

    [root@study ~]# userdel [-r] username
    选项与参数:
    -r :连同使用者的主文件夹也一起删除

      以上3个都是管理员使用的指令,不过一般的使用者也是阔以有相关的命令的!

      1.查看信息——id

    id [-gGnru][--help][--version][用户名称]
    
    来自: http://man.linuxde.net/id

      详细选项这里不展开,反正直接使用id就列出所有洛!

    [root@localhost ~]# id root
    uid=0(root) gid=0(root) 组=0(root)

     [root@localhost ~]# id vbird2
     uid=1500(vbird2) gid=1500(vbird2) 组=1500(vbird2)

    像这样我们之前直接指定UID为1500,则中间的1000-1049就直接废弃了!

       2.查看与修改指纹信息——finger与chfn,修改shell——chsh

      暂略。

    三、群组管理

      与账户管理十分相似,也是增删改的相关操作!

      1.群组新增——groupadd

     groupadd [-g gid] [-r] 群组名称
    选项与参数:
    -g :后面接某个特定的 GID ,用来直接给予某个 GID ~
    -r :创建系统群组啦!与 /etc/login.defs 内的 GID_MIN 有关。

      更多groupadd参考http://man.linuxde.net/groupadd

      2.群组修改——groupmod

    groupmod [-g gid] [-n group_name] 群组名
    选项与参数:
    -g :修改既有的 GID 数字;
    -n :修改既有的群组名称

      更多groupmod参考http://man.linuxde.net/groupmod

      3.群组删除——groupdel

    groupdel [groupname]

      不过,这个命令需要注意,如果这个群组是某个用户的默认群组,则无法删除!(不然使用者一登录,发现默认群组都没了。。)

    所以,要么你把那用户删了,要么改他的默认群组。

      更多groupdel参考http://man.linuxde.net/groupdel

       4.群组管理员设置——gpasswd

      和我们的社交帐号的群是一样的,不用什么事都通过root来干,可以设置群管理员,让群管理员来管理群

    [root@study ~]# gpasswd groupname
    [root@study ~]# gpasswd [-A user1,...] [-M user3,...] groupname
    [root@study ~]# gpasswd [-rR] groupname
    选项与参数:
    :若没有任何参数时,表示给予 groupname 一个密码(/etc/gshadow)
    -A :将 groupname 的主控权交由后面的使用者管理(该群组的管理员)
    -M :将某些帐号加入这个群组当中!
    -r :将 groupname 的密码移除
    -R :让 groupname 的密码栏失效
    # 关于群组管理员(Group administrator)做的动作:
    [someone@study ~]$ gpasswd [-ad] user groupname
    选项与参数:
    -a :将某位使用者加入到 groupname 这个群组当中!
    -d :将某位使用者移除出 groupname 这个群组当中。

      关于gpasswd的用法参考http://linux.51yip.com/search/gpasswd

       ACL不再赘述,待补充...

  • 相关阅读:
    WPF 中使用 Resource 实现多语言
    webapi入门 如何调用
    webapi入门2
    webapi 入门
    asp.net web page 中如何添加引用
    几个Is函数
    webGrid内容格式化
    Validation
    HTML FORM
    访问数据库
  • 原文地址:https://www.cnblogs.com/jiangbei/p/7902663.html
Copyright © 2011-2022 走看看