Linux用户和组管理

    登录Linux时我们都需要输入账号和密码,但Linux只会识别账号所对应用ID号,这个ID号就称为UID。

    同理每个用户组也都拥有相对应的组ID号,即GID。

    Linux根据/etc/passwd文件的内容来查找当前登录用户是否为合法用户。

1.png

    上图中标注的即为root用户所对应的UID和GID。

一、用户账号信息

    1、/etc/passwd文件

        此文件件中每一行为一个用户的信息,以“:”分隔,共七个字段,各字段含义如下:

        1)账号名称

            就是我们用来登录系统的账号名。

        2)密码

            由于/etc/passwd文件任何程序都可以读取,出于安全考虑Linux已经把密码存放在/etc/shadow文件中了,此处只用"x"来占位表示。

        3)UID    

            用户ID;Linux将用户划分为以下几类:

id 用户类型 用户特性
0 管理员 可以对系统做任何操作,没人能阻止
1-499 系统账号 专门用来运行程序的用户,此类用户不可以登录系统

500以上

普通用户 可以登录系统的有限权限的用户

        4)GID

            组ID与用户ID的规定相类似,只不过它是用来定义用户组的,与其相关的文件有/etc/group。

        5)信息说明列

            用于描述账号的用途,没有实际作用。

        6)用户家目录

            用于指定用户的家目录的位置。

        7)shell

            指定用户登录系统后使用的默认shell程序,由于系统用户为不可登录用户,其shell为/sbin/nologin;另外,如果指定的shell在/etc/shells文件中不存在,则此用户将无法登录系统。

    2、/etc/shadow文件

        前文提到此文件保存了所有登录用户的密码信息,下面来详细了解一下这个文件的内容:

2.png

        1)账号名称

            与/etc/passwd文件中的账号名称相对应。

        2)密码

            密码以加密的形式存放,sha512加密(centos6),centos5中使用MD5。

        3)最近更改密码的日期

            此字段中的数字表示,从1970年1月1日开始到最后一次修改密码所经过的天数。

        4)密码最少使用天数

            此字段定义了用户在最后一次修改密码后,密码必须使用的天数;0表示随时可以修改。

        5)密码最多使用天数

            此字段定义如果在此时间内没有更改密码的话,密码将会过期,用户登录系统时会被强制要求修改密码。

        6)警告天数

            密码需要修改前的警告天数,在第5个字段到期前,系统根据此字段的设置提醒用户密码所能使用的天数。

        7)密码过期后的宽限时间

            这个字段表示密码过期后的多少天内,如果还没有修改密码,密码将会失效,此用户将无法登录系统了。

        8)账号失效日期

            在指定的日期之后,账号将无法登录系统;日期的指定方法与第3个字段相同。

        9)保留字段

二、组账号信息

    1、/etc/group文件

3.png

        此文件每一行代表一个用户组,以“:”作为字段分隔符,共四列,其含义如下:

        1)用户组名称

        2)用户组密码

            不常用,密码信息被保存在/etc/gshadow文件中。

        3)GID

            与/etc/passwd文件中的第四段对应。

        4)组成员

            此组中所包含的用户。不过从上图可以看到root组中此字段为空,本来root是属于root组的,可是在这里为什么没有显示呢?因为此字段只显示以此组做为附加组的用户列表。

    2、/etc/gshadow

4.png        此文件内容格式与/etc/group相似,各字段含义如下:

        1)用户组名称

        2)用户组密码

        3)用户组管理列表

        4)将此组作为附加组的用户列表

三、账号管理

    1、用户管理

        1)useradd命令

            命令格式:useradd [options] 用户账号名

                -u UID:为用户指定UID;

                -g GID:所属的基本组;

                -G GID:所属的附加组;

                -c ‘COMMENT’:注释信息;

                -d /path/to/somewhere:为用户创建家目录,如果目录存在会警告;

                -s SHELL:指定用户的默认Shell;

                -m:强制给用户创建家目录;

                -M:不给用户创建家目录;

                -r:创建系统用户;

                -e:后跟日期,格式为“YYYY-MM-DD”,指对账号失效日期,对应shadow文件的第八个字段。

            命令演示:

1.png2.png

    从上面的两个例子可以看出,创建用户后其家目录都保存在了/home目录下,我们可以在创建用户时修改家目录的位置。

3.png

    我们来可以指定用户登录时使用的默认shell。

3.png

    下面我们再来看一下useradd的默认值:

[root@localhost ~]# useradd -D

GROUP=100             默认的用户组;

HOME=/home            默认的家目录;

INACTIVE=-1           密码失效时间,对应shadow文件中的第7列;

EXPIRE=               密码过期时间,对应shadow文件中的第8列;

SHELL=/bin/bash       默认登录shell;

SKEL=/etc/skel        默认家目录中的数据源目录;

CREATE_MAIL_SPOOL=yes 是否为用户创建邮箱。

    GROUP=100:

      此设置表示新建的用户其默认的用户组ID为100,但实际情况并不是这样的,我们创建用户时默认的用户组ID与用户ID是相同的。而且GID对应的用户组是users,我们也从来没有见到过此且户组。其实在Linux中用户组有两种机制:私有用户组和公有用户组。

      公有用户组是以GID=100做为新建用户的默认用户组,新建用户都处于同一组中,也就是users组,组中用户可以共享家目录中的数据。

      而CentOS采用的是私有用户组的机制,所以GROUP=100不生效。

    SKEL=/etc/skel:

      我们在创建好用户后,可以在其家目录中发现已经存在一些默认的隐藏目录与文件,如下图所示:

1.png

      这些文件用于定义用户的环境变量,而这些文件就是从/etc/skel目录中复制过来的。

    CREATE_MAIL_SPOOL=yes:

      用户创建后都会自动生成一个与用户对应的邮箱,就是靠此设置控制的。

1.png

      那么如何修改这些默认设置呢?可以通过修改/etc/default/useradd来修改默认值。

4.png

1.png

      上图中将默认的用户家目录改到了/tmp目录中,下面再来创建个新用户:

2.png

        2)passwd命令

            命令格式:passwd  [-k]  [-l] [-u] [-d] [-e] [-n mindays] [-x maxdays] [-w warn-days] [-i inactivedays] [-S] [–stdin] [username]

                不带任何选项:修改当前用户的密码;

                -k:修改密码时要求输入账号现在使用的密码;

                -l:锁定用户;

                -u:解锁用户;

                -d:删除用户密码;

                -e:设置用户密码为过期密码,用户登录时必须修改密码;

                -n:密码最小使用天数,与shadow第4个字段对应;

                -x:密码最大使用天数,与shadow第5个字段对应;

                -w:密码过期前的警告天数,与shadow第6个字段对应;

                -i:密码失效日期,与shadow的第7个字段对应;

                -S:列出与密码有关的相关参数;

                –stdin:可以通过管道进行密码设置。

            命令演示:

            (1)使用默认选项修改用户密码

1.png2.png

            上面两个实例中,root用户修改密码时要求直接输入新的密码即可,如果我们想在修改密码前先输入用户的当前密码,再输入新密码,可以使用-k选项。

            (2)要求root用户修改密码时提供被修改用户的当前密码

3.png

            上图中要求先输入当前的密码,认证不通过的话是修改不了密码的,在普通用户中-k是默认选项。

            (3)查看密码的相关信息:

1.png

            上图中的命令结果是以空格分隔的7个字段,各字段含义如下:

                第一个字段:用户账号名;

                第二个字段:账号的状态;

                第三个字段:密码新建的时间;

                第四个字段:密码最小使用天数;

                第五个字段:密码最长使用天数;

                第六个字段:警告天数;

                第七个字段:密码是否有效;

            (4)锁定账号密码

            如果我们想让某个用户暂时无法使用账号来登录系统,可以将密码锁定,如下所示:

3.png            与之对应的在/etc/shadow文件中test1的密码也发生变化,如下所示:

4.png            (5)解锁账号密码

            使用-u选项即可为用户解锁:

5.png

            (6)清空账号密码

6.png

            (7)设置密码过期

7.png

8.png

            设置密码过期后,用户再次登录系统时会要求修改密码。

            (8)设置密码的使用时限

1.png

2.png

            (9)不使用交互方式为账号设置密码

1.png

        3)chage命令

            命令格式:chage [options] 用户账号名

               -l:显示账号密码的详细信息;

                -d:后接日期,最近更改密码的日期,格式YYYY-MM-DD,对应shadow文件第三字段;

                -m:后接天数,密码最少使用天数,对应shadow文件第四字段;

                -M:后接天数,密码最多使用天数,对应shadow文件第五字段;

                -w:后接天数,密码过期前的警告日期,对应shadow文件第六字段;

                -I:后接天数,密码失效前的宽限期限,对应shadow文件第七字段;

                -E:后接日期,账号失效日期,格式YYYY-MM-DD,对应shadow文件第八字段。

1.png

            4)usermod命令

                用于修改用户的的属性。

                命令格式:usermod [options] 用户账号名

                    -a:以追加的方式将用户添加到附加组,与-G连用;

                    -c:添加账号说明;

                    -d:修改家目录,与-m连用可以保证家目录一定会被创建;

                    -e:后接日期,账号过期日期,格式:YYYY-MM-DD,shadow文件第八字段;

                    -f:密码失效前的宽限期限,shadow文件第七字段;

                    -g:修改用户所在的用户基本组;

                    -G:修改用户所在的用户附加组;

                    -l:修改账号名称;

                    -L:锁定账号;

                    -U:解锁账号;

                    -m:移动家目录中的内容到新的位置,与-d一起使用;

                    -s shell:修改用户的默认shell;

                    -u UID:修改用户的UID;

                命令演示:

                (1)将用户加入一个附加组中;

1.png

                (2)修改用户家目录的位置

1.png2.png3.png

            5)userdel命令

                命令作用:删除用户

                命令格式:userdel [options] 用户账号名

                    -f:强制删除用户,即使用户处于登录状态;

                    -r:同时删除用户家目    二

录;

1.png

    2、组管理

        1)groupadd命令:

            命令格式:groupadd [options] 组名

                -g GID:指定GID;

                -r:创建系统组;

1.png        2)groupmod命令:

            命令格式:groupmod [options] 组名

                -g:修改GID;

                -n:修改组名;

            (1)修改GID

1.png2.png

            (2)修改组名  

1.png

        3)groupdel命令

            命令格式:groupdel group

1.png

三、账号查询与控制

    1、查看用户信息

        1)id命令

            命令格式:id [OPTION]… [USERNAME]         

                -g:显示基本组ID;

                -G:显示所有组ID;

                -u:显示用户ID;

                -n:以名称代替ID显示;            

1.png

        2)whoami命令 1.png    2、查看当前登录系统的用户

        1)w命令           1.png

        2)who命令

2.png

    2、用户信息控制

        1)chfn命令

            命令格式:chfn [option] 用户名

1.png

        2)chsh命令

            命令作用:更改用户默认登录shell。

            命令格式:chsh [-s shell][username]

2.png

四、用户切换

    通常出于安全的考虑,建议使用普通用户来登录系统,在有需要时再切换为管理员进行操作,用户之间的切换有以下几种方法:

    1、使用Ctrl+Alt+F[2-6]键,打开新的终端登录;

    2、使用ssh远程登录时,可以使用不同的用户登录系统;

    3、如果想在同一窗口中进行用户切换,可以使用su命令来实现;

        命令格式:su [OPTION] [USERNAME]

            -,-l:使用登录shell的方式切换用户;

            -c 'COMMAND':使用指定的用户来执行命令;

            -m:使用非登录shell的方式来切换用户;

            -s SHELL:切换用户时指定shell,此shell必须是中/etc/shells中存在的;

        1)使用非登录shell的方式来切换用户。

1.png

        2)使用登录shell来切换用户

1.png        3)使用普通用户查看/etc/shadow文件内容

1.png         

            

               

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

(0)
上一篇 2015-04-22 21:29
下一篇 2015-04-27 18:30

相关推荐

  • Linux基本知识之Vim编辑器

    vim文本编辑器:    vim是Linux系统上的最著名的文本/代码编辑器,也是早年的vi编辑器的加强版,而gVim则是其windows版。它的最大特色是完全使用键盘命令进行编辑,脱离了鼠标操作虽然使得入门变得困难,但上手之后键盘流的各种巧妙组合操作却能带来极大幅度的效率的提升。 (1)打开文件与关闭文件:     …

    Linux干货 2016-08-10
  • LVM2基本应用,扩展及缩减实现

    LVM(Logical Volume Manager,逻辑卷管理)是CentOS6中常用的磁盘管理的工具。常用于CentOS6上,提供了分区的动态扩展、缩减等功能。目前的常用版本为LVM2。 结构: 一、物理卷 LVM的物理卷以分区为单位。通常情况下,会以一个硬盘一个分区的情况下进行容量扩展。 在分区之后,要使用fisk命令来改变分区的类型,LVM的磁盘类型…

    Linux干货 2016-02-25
  • 网络管理(二)之IP地址划分子网、多块网卡共用单一IP

    网络管理(二)IP地址   一、认识学习IP地址的组成: 1、它们可唯一标识IP 网络中的每台设备 2、IP地址由两部分组成: 网络ID:标识网络;每个网段分配一个网络ID 主机ID:标识单个主机;由组织分配给各设备 3、点分十进制计法表示IPv4地址: 4、如下图,将系统中的IP地址用二进制表示,再通过转换合成的十进制数,使用ping命令可得出:…

    Linux干货 2016-09-05
  • 马哥教育网络班22期第二周课程练习1-未闻花名

    1、Linux管理文件和目录的命令 命令 功能 命令 功能 pwd 显示当前目录 ls 查看目录下的内容 cd 改变所在目录 cat 显示文件的内容 grep 在文件中查找某字符 cp 复制文件 touch 创建文件 mv 移动文件 rm 删除文件 rmdir 删除目录 1.1 pwd命令 该命令的英文解释为print working directory(打…

    Linux干货 2016-08-22
  • Redis数据库安全手册

    Redis是一个高性能的key-value数据库,这两年可谓火的不行。而Redis的流行也带来一系列安全问题,不少攻击者都通过Redis发起攻击。本文将讲解这方面的内容,包括Redis提供的访问控制和代码安全问题,以及可以由恶意输入和其他类似的手段触发的攻击。 Redis通用安全模块 Redis被设计成只能由可信环境的可信机器访问。这意味着将它直接暴露在互联…

    2015-03-12
  • DNS快速入门、正反向解析……

    DNS服务原理详解 因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析。 我们在访问一个网站的时候,只要输入该网站的网址就会跳转到该网站页面,而实现这一过程就需要DNS服务器将域名解析为IP地址,进而实现数据通信。 DNS:…

    2017-06-03

评论列表(1条)

  • stanley
    stanley 2015-04-27 21:44

    哟,乍看以为又是书生,petmaster新作相当给力哇,赞