Linux用户和组管理

使用对象:Linux初学者

 

Linux系统中用户和组管理是很重要的一部分内容。许多初学者在学习或刚接触到用户管理的时候会觉得很难理解,命令多、选项多、配置文件也多,用命令可以修改,用配置文件也可以修改,三两下就被绕进去了。其实完全没必要晕,只要了解了用户管理的方式,就会很容易理解命令选项与配置文件之间的关系。下面我们就来了解下用户管理命令与配置文件。

 

目录

一、新建用户1

1.1useradd命令1

1.2 passwd文件1

1.3 shadow文件2

1.4、配置文件/etc/login.defs. 2

1.5、配置文件/etc/defaults/useradd. 4

1.6useradd命令4

二、用户信息修改5

2.1 usermod命令5

2.2 passwd命令5

三、用户删除6

四、新建组6

4.1 /etc/group文件6

4.2/etc/gshadow文件6

4.3 新建用户命令groupadd. 6

五、修改组7

六、删除用户组7

七、其他命令7

 

 

 

一、新建用户

1.1useradd命令

新建用户其实就是增加用户,我们使用useradd命令(user是用户的意思,add是增加的意思,在一起就是useradd)。命令格式为:

  useradd  USERNAME

输入该命令,执行之后,新的用户就被添加到系统中了。

Linux用户和组管理

1.2 passwd文件

Linux系统中用户信息是保存在/etc/passwd文件里面的,用户密码保存在/etc/shadow文件中。所以,刚才的命令执行完之后,会在这两个文件的文件末尾增加关于testuser1的信息,每个文件增加一条信息。

首先,我们来看/etc/passwd文件。使用cat命令打开该文件,在文件的最下方可以看到下图

Linux用户和组管理

从图中我们可以看到,testuser1的信息被:(冒号)分成7个部分,我们来简要介绍一下这7个部分的含义:

第一个字段testuser1:表示用户名称

第二个字段x :表示用户密码。不过Centos67中密码都被保存在/etc/shadow文件中了,所以这里就不再保存密码了,但是为了和之前旧版本的linux系统兼容,这个字段又不能取消或为空,所以就使用x来代替。

第三个字段1018 :表示系统给用户分配的UIDuser  id)号码

第四个字段1018 :表示系统给用户分配的GIDgroup  id)号码

第五个字段    :表示用户的描述信息,因为我们创建用户的时候没有添加这个信息,所以这里显示为空白

第六个字段/home/testuser1 :表示用户的家目录位置是/home/testuser1

第七个字段/bin/bash :表示该用户使用的shellbash

1.3 shadow文件

我们再来看/etc/shadow文件中关于testuser1的信息

Linux用户和组管理

同样,可以看到testuser1的信息被:(冒号)分割成9个部分,我们来简单介绍下这9个部分的含义:

第一个字段testuser1 :表示用户的名称

第二个字段!! :表示用户的密码。因为我们刚才没有给testuser1用户设置密码,所以这里用!!代表未给用户设置密码。我们给用户设置的密码都是在这里以密文的方式在这里显示的。

第三个字段17097 : 表示用户创建的时间。从197011日到刚才创建用户的日期之间的天数。

第四个字段0 :表示用户密码的最小使用时间。0表示用户随时可以修改密码。其他的数字表示从用户修改密码之日起多少天内不能修改密码。

第五个字段99999 :表示用户的密码最长使用时间

第六个字段7 :表示在密码到期前7天对用户发出警告,提示用户密码快到期

第七个字段  :表示用户密码到期后的宽限时间。也就是说用户密码到期之后几天内还可以使用。

第八个字段  :表示用户账户的过期时间

第九个字段  :保留字段。

1.4、配置文件/etc/login.defs

我们此前使用的命令是useradd  testuser1,后面并没有跟任何的其他信息,那么为什么系统会自动给用户分配UID GID呢,为什么用户的家目录会创建在/home/下,而且目录名跟用户名一样呢,还有为什么用户的shell/bin/bash而不是其他的呢?这就要跟我们的配置文件有关了。

Linux系统管理用户是通过该用户的UID来实现的,而不是用户名。所以每个用户都会拥有自己的用户IDUID。默认情况下,超级管理员root UID0 ,系统用户的UID以及普通用户的UID在不同的Linux版本下也各不相同。

CentOS 6

CentOS 7

系统用户UID范围

1–499

201–999

普通用户UID范围

500–60000

1000–60000

这个范围的定义是由/etc/login.defs文件来控制的。以CentOS 7为例,打开该文件,在文件中可以看到以下信息

Linux用户和组管理

这里就定义了系统用户和普通用户的UID范围。我们刚才创建的testuser1用户是普通用户,所以他的ID范围在1000—60000之间。

这个文件除了定义用户UID范围之外,还定义了其他的参数,我们来看一下:

1)  给用户创建邮件的目录

Linux用户和组管理

2)  用户密码的相关选项

Linux用户和组管理

这里我们看到,默认定义了4个选项:

PASS_MAX_DAYS       99999    密码最长使用期限

PASS_MIN_DAYS       0                 密码最短使用期限

PASS_MIN_LEN          5                           密码最短长度

PASS_WARN_AGE     7                 密码到期前的警告期限

3)  家目录是否创建

Linux用户和组管理

4)  用户权限设置

Linux用户和组管理

5)  删除用户的时候如果用户组中不存在其他用户的话,是否删除组

Linux用户和组管理

6)  用户密码加密方式

Linux用户和组管理

      1.5、配置文件/etc/defaults/useradd

                   Linux用户和组管理

                   1GROUP 表示如果用户创建的时候不指定组的话,默认加入的系统用户组ID

                   2HOME  表示用户创建家目录的路径

                   3INACTIVE表示用户账户密码过期之后是否马上禁用该账号。-1表示不马上禁用

                   4EXPIRE 表示用户账号的过期时间  为空表示永不过期

                   5SHELL 表示创建用户的时候默认给新用户使用的shell

                   6SKEL  表示创建用户家目录的模板目录,给用户创建哪些文件

                   7CREATE_MAIL_SPOOL 表示是否给新用户创建邮件

        

我们可以通过修改以上的两个配置文件中相应的参数来控制创建新用户的相关信息。

1.6useradd命令

除了通过修改配置文件,我们也可以在执行useradd命令的时候,给命令添加选项和参数来控制新建用户的信息。

使用方式如下:

useradd  [options]  用户名

选项有很多,我们只列举几种常用的:

-u UID 手动给用户指定UID

-g GID 手动给用户指定GID

-G groupname 指定用户属于哪个附加组

-c COMMENT :指定用户的注释信息

-d DIR :指定用户的家目录

-s SHELL:指定用户使用的SHELL

-r :创建系统用户

-N : 不创建用户组,并将用户的主组设置为USER

         我们除了通过查看配置文件来看创建用户的默认设置之外,还可以通过useradd  -D命令来查看和修改创建用户的默认设置。

                  useradd -D [options]

                  useradd -D 后面不加选项和参数表示显示新增用户的默认配置

                                      -b DIR :表示修改默认选项中的家目录位置

                                      -e 时间:修改默认选项中用户账户的失效时间

                                      -f 数字 :修改默认选项中用户密码到期前的警告天数

                                      -g GID :修改默认选项中用户账号自动加入的GID

                                      -s SHELL : 修改默认选项中用户使用的shell类型

 

二、用户信息修改

2.1 usermod命令

创建完用户之后,如果需要对用户的信息进行修改,要是用usermod命令。

具体使用格式:

         usermod [options] 用户名

         常用选项如下:

         -u, –uid UID  修改用户UID为指定的UID

         -g, –gid GROUP :修改用户所属基本组ID

         -G, –groups GROUP1[,GROUP2,…[,GROUPN]]] :修改用户的附加组,原来的附加组会被覆盖

         -a, –append -G一同使用,为用户增加新的附加组

         -c, –comment COMMENT 修改用户注释信息

         -d, –home-dir HOME_DIR 修改用户家目录:用户原有的文件不会转移至新位置。如果需要将文件一同移动,需要和-m一同使用

         -m, –move-home 只能与-d一同使用,用于移动原家目录中的文件

         -l, –login NEW_LOGIN:修改用户名

         -s, –shell SHELL : 修改用户登录后默认使用的shell

         -L, –lock 锁定用户密码

         -U, –unlock 解锁用户密码

      2.2 passwd命令

         如果需要变更用户的密码,或者对密码信息进行修改,要使用passwd命令。具体使用格式为:

         passwd  [OPTIONS]  用户名

                   passwd  用户名:不加选项表示修改指定用户密码

                   -l , -u :锁定和解锁用户,锁定之后只是不能登录,切换可以

                   -d, –delete :删除和清除用户密码

                   -e, –expire DATE:过期期限,日期。不加时间默认强制让用户下次登录时输入口令

                   -i DAYS:非活动期限

                   -n DAYS:最短使用时间

                   -x DAYS:最长使用时间

                   -w DAYS: 警告时间        

三、用户删除

如果不需要某个用户,删除用户要使用userdel命令。

具体使用格式:

userdel [options] 用户名

-r 表示连同用户的家目录一起删除

四、新建组

我们在新建用户的时候,系统会默认创建一个跟用户同名的组,并把这个组设置为该用户的主组。用户组的相关信息存放在/etc/group以及/etc/gshadow文件中。

4.1 /etc/group文件

Linux用户和组管理

该组信息被:(冒号)分为四个部分:

第一部分testuser1 :表示组名称

第二部分x :表示组密码。组密码存放在/etc/gshadow文件中,跟用户名密码存放在/etc/shadow文件类似。

第三部分1018 : 表示该组的GID

第四部分 :表示组内暂时没有其他的用户

 

4.2/etc/gshadow文件

Linux用户和组管理

该文件被冒号分为四个部分:

第一部分testuser1 :表示组名称

第二部分!! :表示组密码。!!表示该组暂未设置密码。

第三部分  :表示该组的管理员。为空表示没有管理员。

第四部分 :表示该组的其他成员。为空表示无其他成员。

4.3 新建用户命令groupadd

testuser1用户,在如果不通过新建用户,怎么增加组呢?跟新建用户一样,新建组也有一个单独的命令groupadd。使用格式为:

groupadd [options] group

         -g GID:手动指定GID

         -r:创建系统组

五、修改组

修改组属性信息要使用groupmod命令。

其格式为:

         groupmod [options] GROUP

         -g GID 组名:表示修改指定组的gid

         -n  :表示修改组名称

         -p :表示给组设置密码

六、删除用户组

删除用户组使用groupdel命令。使用格式为:

groupdel [options] GROUP

七、其他命令

除了以上的用户、组管理命令之外,Linux还提供其他的命令来对用户或者组进行修改。

例如:groupmemschagechshchfnfinger等。

我们只简单的罗列一下,不再进行详细描述命令的使用。如果想获得更加详细的命令使用信息,大家可以使用man帮助进行查看。

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

(0)
上一篇 2016-10-23 19:20
下一篇 2016-10-23 19:53

相关推荐

  • 网络配置详解(一)

    Linux网络属性配置      ifcfg命令家族:ifconfig, route, netstat      ifconfig命令:      ifconfig [INTERFACE]      # ifconfig -a 显示所有接口…

    Linux干货 2017-01-02
  • 第九周脚本练习

    1、写一个脚本,判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin);分别这两类用户的个数;通过字符串比较来实现; awk -F: ‘{if($NF!=”/sbin/nologin”) print $1}’ /etc/passwd | wc -l 2、写一个脚本 (1) 获取当前主机的主机名,保存于ho…

    Linux干货 2017-03-30
  • linux软件包管理(开始上正菜了)

    linux程序包管理:     API:数据接口     ABI:应用程序二进制接口        库级别的虚拟化:             linux:wine    …

    Linux干货 2017-03-07
  • 网络接口配置–Bonding

    网络接口配置–Bonding Bonding        就是讲到快网卡绑定到同一IP地址对外服务,可以实现高可用或者负载均衡。当然,直接给两块网卡设置同一IP地址是不可能的。通过bonding,虚拟一块网卡对外提供连接,物理网卡被修改为同一MAC地址。 一 Bonding …

    Linux干货 2017-05-07
  • 编译安装httpd

    编译安装httpd   1 去官网下载源码包                                      为避免非法软件,一定要去官网下载http…

    2017-04-24
  • hello! 我的博客第一站

    大家好!  这是我进博客的第一天,一个刚进来的新司机。在这里我就不秀我的车技了,只希望各位老司机开车不要太快,我晕车      —— 生命不息,奋斗不止

    Linux干货 2017-07-11