Linux基础知识之用户和组管理

系统环境:

   该博文以CentOS6.8_x86_64和CentOS7.2_x86_64系统为基础,Xshell5远程登录CentOS6.8和CentOS7.2系统,分别以root身份和sjsir用户身份登录系统。

学习的重要问题:

一、为什么要学习用户和组?

   首先Linux区别于其他的系统的最重要的特性就是多用户,多任务的特性。这也是Linux重要的知识之一,多用户就是可以在系统上面建立多个用户,多个用户可以在同一时间内登录同一个系统执行各自不同的人,而且每个用户之间都是直接对于系统的访问,两个用户之间的操作不受影响。不同用户都会拥有不同的权限,每个用户在自己指定的范围之内完成属于自己的任务,Linux应用这种思想,实现了多用户和多任务的特性。

二、linux系统中的用户有哪些分类?

   a.超级用户:拥有系统中的最高的权限,默认是root用户,区分用户是不是超级用户的重点是该用户的UID是否为0。

   b.普通用户:对于自己的目录下的文件可以任意的访问和修改,但是自己权限外面的文件操作时会显示:Permission denied(权限被拒绝。),例如自己建立的sjsir用户,系统默认的第一个用户的UID:CentOS6的UID为500,CentOS7的UID为1000。

   c.虚拟用户:该用户的bash为/sbin/nologin,最大的特点就是不能登录系统,他们存在的原因就是为了方便系统管理,满足相对应的系统进程对于文件属性的要求。

三、用户和组的重要概念

   a.用户:我们要想使用Linux系统,就必须向系统管理员去申请一个账号,通过每个用户唯一的用户名和用户口令,只有用户输入正确的账户名和用户口令,才允许进入系统和用户的家目录下。我们通过建立不同属性的用户(超级用户,普通用户,虚拟用户),利用用户组的知识,去构建不同的用户组,通过权限的区分,达到用户分类的目的。

   b.组:用户组是多个相同特征用户的组合(相当于公司中的一个单独的部门),假设我们有一个文件需要一个组的用户都去访问,若没有用户组的这个概念,这些用户都必须一遍又一遍的服务文件的权限,然后才能让这些用户去访问,但是,若系统中有用户组的概念,只需将用户添加到组之后,然后给于文件一个组的访问权限,所有被添加到用户组的都会获得这个组的权限,即可实现多用户访问该文件。通过去定义用户组,在工作程度上面大大简化了管理工作。

四、用户和组之间的关系:

   用户和用户组之间的对应的关系:一对一、一对多、多对一、多对多。

  a.一对一:一个用户可以存在一个组中,也是组中的唯一的成员。(该用户存在主组中)

  b.一对多:一个用户可以存在多个组中,该用户拥有多个组中共同的权限。(但每个用户,主组只有一个(primary group),辅助组(secondary group)有多个)

  c.多对一:多个用户存在一个组中,这些用户拥有和组相同的权限。

  d.多对多:多个用户可以存在多个组中,相当于上面的关系的一种扩展。

五、相关密码的一些知识点:

  1.shadow的文件格式:(man 5 shadow)

   login name:登录用名;

   encrypted password:用户密码: 一般用sha512 加密(加密算法后面介绍);

   date of last password change:从1970 年1 月1 日起到密码最近一次被更改的时间;

   minimum password age:密码再过几天可以被变更(0 表示随时可被变更);

   maximum password age:密码再过几天必须被变更(99999 表示永不过期);

   password warning period:密码过期前几天系统提醒用户(默认为一周);

   password inactivity period:密码过期几天后帐号会被锁定;

   account expiration date:从1970 年1 月1 日算起,多少天后帐号失效;

   reserved field:保留字段,以后未来可能使用;

blob.png

 2.密码加密的知识:

   a.密码加密的机制:

    加密:明文–>  密文

    解密:密文–>  明文

    单向加密:哈希算法,原文不同,密文必不同;相同算法定长输出,获得密文不可逆推出原始数据

    雪崩效应:初始条件的微小改变,引起结果的巨大改变

   b.加密算法的几种主要的类型:

      md5: message digest, 128bits

blob.png

      sha1: secure hash algorithm, 160bits

blob.png

      sha224: 224bits

sha224相比sha256,sha224算法的哈希值大小为256位。

      sha256: 256bits

blob.png

      sha384: 384bits

sha384相比sha256,sha384算法的哈希值大小为384位

      sha512: 512bits

blob.png

      ※Linux系统中更改加密算法 authconfig –passalgo=sha256 — update(将默认的算法更改为sha256)

    因为我们以后不会是密码研究的人员,只可知道加密算法的原理即可,无需知道加密算法是如何进行和完成的,所以,我们就去了解一些hash加密算法即可,学会使用authconfig去切换不同的加密算法即可。

   3.密码的复杂性策略

       a.使用数字、大写字母、小写字母及特殊字符中至少3种 

       b.足够长(一般为8-20位)

       c.使用随机密码(无规律的密码)

       d.定期更换,不要是使用原来使用过的密码

学习的重要的命令:

一、用户管理命令:

    a.创建用户:useradd [options] LOGIN

       -u UID : [UID_MIN, UID_MAX] 定义在/etc/login.defs(为用户指定特定的uid默认为上一个用户的UID+1,CentOs6普通用户的UID从500开始一直到60000结束,CentOs7普通用户的UID默认从1000开始一直到60000结束。) 创建用户peter,指定peter用户的uid为1001.

     blob.png  

       -o 配合-u  选项,不检查UID 的唯一性

     使用-o选项不去检查UID为1001的用户是否存在,直接创建UID为1001的用户tom,通过倒序查看/etc/passwd文件可以发现刚才创建的peter用户和刚创建的用户tom的UID相同,所以加上 -o之后不会检查UID的唯一性;

     blob.png

       -g GID :指明用户所属基本组,可为组名,也可以GID

       -G GROUP1[,GROUP2,…] :为用户指明附加组,组必须事先存在

   关于组创建的两个命令一起说,-g是指定用户所属的基本组的,基本组必须事先存在,用户必须要有基本组,若不使用-g特殊指明,用户创建时默认的创建于用户同名的组,基本组在用户创建时必须创建(为上面说的情况的用户和组的对应关系为一对一)。-G是指定用户的附加组,可以同时为一个用户指定多个用户附加组,也不为用户指明用户组,但是为用户指明基本组的时候,基本组必须实现存在,要不无法指明。

   创建用户jerry 为jerry用户创建基本组为sjsir,创建附加组为 bin,root

     blob.png

       -c "COMMENT" :用户的注释信息

  创建用户可以直接给用户添加注释信息,可以方便以后对用户进行管理,例,创建hello用户,添加hello的用户的注释信息为“i am hello.”

     blob.png

       -d HOME_DIR: 以指定的路径( 不存在) 为家目录

     创建用户时为用户指定特定的家目录,一般的用户的家目录为/home/xxx,我特意将hi用户的家目录创建到/bin/xixi,可以发现,用户的目录并非一定存在/home下,可以随意指定,但是用户的默认的家目录设置的配置文件在/etc/default/useradd,修改配置文件后,即可实现将用户的家目录更改到任意位置。

     blob.png

       -s SHELL :  指明用户的默认shell 程序,可用列表在/etc/shells 文件中

    添加用户xixi并指明xixi使用的shell类型为 /bin/csh

     blob.png

    系统中可以使用的shell的类型;

     blob.png

       -N 不创建私用组做主组,使用users 组做主组

   添加用户hadoop,不创建私有组,使用users(GID=100)组作为主组

   useradd hadoop -N :创建之后我们可以发现,hadoop的主组为GID100的users组

     blob.png

       -r: 创建系统用户 CentOS 6: ID<500 ,CentOS 7: ID<1000

     blob.png

   b.修改用户属性usermod

       usermod [OPTION] login

           -u UID:给已经存在的用户指定一个新的UID

           -g GID:给已经存在的用户变更一个新的GID

           -G GROUP1[,GROUP2,…[,GROUPN]]] :新附加组,原来的附加组将会被覆盖;

              若保留原有,则要同时使用-a 选项,表示append;

           -s SHELL :变更用户现在使用shell类型;具体的shell类型参考/etc/shells

           -c 'COMMENT' :新的注释信息;

           -d HOME: 新家目录不会自动创建,原家目录中的文件不会同时移动至新的家目录;

                 若要创建新家目录并移动原家数据,同时使用-m 选项

           -l login_name: 新的名字;

           -L: lock 指定用户, 在/etc/shadow 密码栏的增加!

           -U: unlock 指定用户,将 /etc/shadow 密码栏的!拿掉

           -e YYYY-MM-DD: 指明用户账号过期日期;

           -f INACTIVE: 设定非活动期限;

       对于部分选项的解释:

       ①由于该命令和useradd的部分命令是相同的,对于-u -g -G -s -c -d 的使用方法就简单以一种表现方式给出:  usermod gentoo -u 502 -g xixi -G harry -s /bin/csh -c "i am gentoo." -d /home/hello

  表示为gentoo用户的uid更改为502,基本组改为xixi,附加组改为harry,脚本的shell改为了/bin/csh,注释信息更改为“i am gentoo.”,家目录改为/home/hello.

blob.png

        ②usermod -i newname:将已经存在的用户的名更改新的,下面的是将gentoo更改为hello,但是可以发现uid gid 等还是原来的。 

   blob.png

        ③用户密码相关:

           -L: lock 指定用户, 在/etc/shadow 密码栏的增加!

           -U: unlock 指定用户,将 /etc/shadow 密码栏的!拿掉

       说明:默认直接添加用户时,用户是没有的,在密码的位置取代的是!!默认的无法直接登录,但是早期CentOS5.x系列可以直接使用usermod -U username两次的时候,可以清空密码,让用户无密码直接登录,这样是不安全的,但是现在的6 7系列就已经修改了这种模式,取消两次的时候就会报错。

   blob.png

   usermod -L username:系统认为!已经挺安全的了,所以以后给用户添锁还是只能添加一个!

   blob.png

  c.删除用户 userdel

    userdel [OPTION]… login

     -r:递归删除用户,连同用户的家目录和用户的邮箱,包括所创建的组都会删除,但是注意,当他所在的组的中间还有别的用户存在时,不会全部都删除,仅仅会删除单用户,不会删除用户组。

  d.查看用户的id相关的信息:

     id [OPTION]… [USER]

       -u: UID 独立查看用户的UID号(超级用户的默认UID号为0)

       blob.png

       -g: GID 独立查看用户的GID号(hello用户的GID为506)

       blob.png

       -G: Groups 独立查看用户所属的组(hello为504 506)

       blob.png

       -n: Name 上面的命令是显示的是用户的GID UID号,加上-n之后,显示的是用户的名称和组的名称,需要配合-ugG使用。

       blob.png

       id username:直接使用id username 的时候,会直接的显示上述的所有信息

       blob.png

    e.切换用户或以其他用户身份执行命令

       su [options…] [-] [user [args…]]

    切换用户的两种方式:

       su UserName :非登录式切换,即不会读取目标用户的配置文件,不改变当前工作目录

       blob.png

       su – UserName :登录式切换,会读取目标用户的配置文件,切换至家目录,完全切换

       blob.png

       注意:root su 至其他用户无须密码;非root 用户切换时需要密码

       blob.png

二、密码相关命令

  a.设置密码

       passwd [OPTIONS] UserName:  修改指定用户的密码,只有超级用户root(UID为0)才能修改其它指定用户的密码,其余用户只能修改自己的密码,无权去修改其他用户的密码;

       利用root用户身份,去修改sjsir用户的密码:(因为给sjsir用户一个基于字典的密码,所以系统会提示密码太简单了,但是root身份强大,无论什么密码都可以被设置。)

      blob.png

       passwd:  修改自己的密码;

       常用选项:

           -l: 锁定指定用户(锁定hadoop用户,passwd -l hadoop)

           blob.png

           -u: 解锁指定用户(解锁hadoop用户,passwd -u hadoop,但是因hadoop用户之前没有被赋予密码,所以显示一个警告)

           blob.png

           -e: 强制用户下次登录修改密码(强制系统中的sjsir用户在下次登录的时候修改密码)

           blob.png

              sjsir用户终端显示的内容:(提示用户先输入原来的密码,然后让用户去输入两边新的密码,密码的强度在前面已经说过了,修改之后,系统会强制用户下线,然后让用户重新登录系统。)

           blob.png

           -n mindays:  指定最短使用期限(指定hadoop用户的最短使用期限为42天,默认为0天)

           blob.png

           -x maxdays :最大使用期限(hadoop用户密码最长的使用期限为1000天,过了这个期限必须修改密码,默认为99999天)

           blob.png

           -w warndays :提前多少天开始警告(提前3天告诉hadoop用户需要修改密码,默认的提醒时间为7天。)       

           blob.png

           -i inactivedays :非活动期限;到什么时候用户禁用(设置hadoop用户可以使用1200天)

           blob.png

           –stdin :从标准输入接收用户密码;

            echo " PASSWORD " | passwd –stdin USERNAME

            echo "centos" | passwd –stdin hadoop

            给hadoop用户创建密码,密码为标准输入进的字符,设置为centos;

           blob.png

      ※:-n -x -w -i 的执行结果显示:(hadoop用户)

           blob.png

    b.修改用户密码策略

      chage [OPTION]… LOGIN

          -d LAST_DAY :设置密码最后一次修改的时间距离1970年1月1日的天数,当last_day设置为0时,用户下次登录时必须修改密码。

          root终端:执行chage -d 0 hadoop命令

          hadoop终端显示的内容:

          blob.png  

          -E, –expiredate EXPIRE_DATE:设置用户被禁止登录的时间,时间采取的是距离1970年1月1日的时间,也可以使用YYYY-MM-DD这个格式,账户被禁止后只有联系管理员接触禁止后才能登录,当设置chage -E -1 username时,取消设置用户禁止登录时间。

          chage -E 2017-10-10 hadoop

          -I, –inactive INACTIVE:设置在用户被锁定之前,密码过期之后设置的还能使用的天数,被锁定后需和管理员联系进行解锁。

          chage -I 10 hadoop

          -m, –mindays MIN_DAYS:更改用户密码的最短使用期限

          chage -m 10 hadoop

          -M, –maxdays MAX_DAYS:更改用户密码的最长使用期限

          chage -M 1000 hadoop

          -W, –warndays WARN_DAYS:更改用户密码的提醒时间啊

          chage -W 4 hadoop 

         –l ,显示密码策略,下一次登录强制重设密码

三、组管理的命令(组的管理命令和用户的管理命令差不多,所以不做过多的介绍,直讲重要的配置文件。)

    a.创建组

    groupadd [OPTION]… group_name

         -g GID: 指明GID号;默认的组的GID号为500-60000(6),1000-60000(7)

         -r: 创建系统组;组的GID默认小于CentOS 6: ID<500   CentOS 7: ID<1000

    b.修改和删除组

     组属性修改:groupmod

     groupmod [OPTION]… group

         -n group_name: 新名字

         -g GID: 新的GID

     组删除:groupdel

     groupdel GROUP

    c.更改组密码

     组密码:gpasswd

     gpasswd [OPTION] GROUP

         -a user: 将user 添加至指定组中;

         -d user: 从指定组中移除用户user

         -A user1,user2,…: 设置有管理权限的用户列表

     newgrp 命令:临时切换基本组;如果用户本不属于此组,则需要组密码

    d.更改和查看组成员

    groupmems [options] [action]

      options:

         -g, –group groupname 组 更改为指定组 ( 只有root)

      Actions:

         -a, –add username 指定用户加入组

         -d, –delete username 从组中删除用户

         -p, –purge 从组中清除所有成员

         -l, –list 显示组成员列表

     groups  [OPTION].[USERNAME]… 查看用户所属组列表

   

原创文章,作者:sjsir,如若转载,请注明出处:http://www.178linux.com/27142

(1)
上一篇 2016-08-02 19:14
下一篇 2016-08-02 20:35

相关推荐

  • 网络管理之多网卡bond,mode1

    一.概述 Bonding     就是将多块网卡绑定同一IP地址对外提供服务,可以实现高可用或者负载均衡。当然,直接给两块网卡设置同一IP地址是不可能的。通过bonding,虚拟一块网卡对外提供连接,物理网卡的被修改为相同的MAC地址。 Bonding的工作模式     Mode…

    Linux干货 2016-09-15
  • Linux文件系统管理

    Linux文件系统: ext2, ext3, ext4, xfs, btrfs, reiserfs, jfs, swap swap: 交换分区(虚拟内存) 光盘: iso9660       windows: fat32, NTFS       Unix: FFS, U…

    Linux干货 2016-08-15
  • X-Y Problem

    X-Y Problem 对于X-Y Problem的意思如下: 1)有人想解决问题X2)他觉得Y可能是解决X问题的方法3)但是他不知道Y应该怎么做4)于是他去问别人Y应该怎么做? 简而言之,没有去问怎么解决问题X,而是去问解决方案Y应该怎么去实现和操作。于是乎: 1)热心的人们帮助并告诉这个人Y应该怎么搞,但是大家都觉得Y这个方案有点怪异。2)在经过大量地讨…

    Linux干货 2016-08-15
  • poweroff

    poweroff命令详解

    Linux干货 2018-03-04
  • Centos6基于虚拟主机的Lamp配置bbs、Blog、PhpMyAdmin应用程序

    Centos6实现基于虚拟主机的各应用程序搭建: 一、配置三个基于名称的虚拟主机;       虚拟主机一、discuzX       虚拟主机二、wordpress       虚拟主机三…

    2017-06-01
  • 重定向以及管道

    描述I/O设备的重定向

    Linux干货 2017-11-19