用户与用户组相关的配置文件与命令总结

Linux 中用户与用户组相关的配置文件与命令总结


用户与用户组

Linux是一种多用户(Multi-Users)、多任务(Multi-tasks)的操作系统。为了保护每一位用户的个人数据,系统需要将每一位用户的数据进行隔离存放。而用户名就是计算机系统为了区分每一位用户的标识符,这个标识符对我们人类来说就是 用户名(USERNAME)。为了便于实现权限的分配与管理,我们将多个用户划分到一个容器之中,盛放这些用户的容器我们称之为用户组(GROUP).

用户分为:管理员用户(默认为root)、系统用户、登录用户。 
用户组分为:管理员组、系统用户组、登录用户组。


UID、GID

由于计算机只能识别二进制的0和1em21.gif,计算机并不能对用户名与用户组名称进行直接的区分,因此在计算机系统中每个用户与用户组都有其单独的数字ID进行标识。

    标识用户的ID号我们称之为UID(UserID) 
    标识用户组的ID号我们称之为GID(GroupID)

CentOS系统默认使用16位二进制数字来标识UID和GID=0-65536(默认使用前60000) 
CentOS6和7中不同ID范围:

用户类型 CentOS 6中UID CentOS 7中UID CentOS 6 GID CentOS 7 GID
管理员用户 0 0 0 0
系统用户 1-499 1-999 1-499 1-999
登录用户 500-60000 1000-60000 500-60000 1000-60000

名称解析与解析库(passwd、group、shadow、gshadow)

系统对用户名、用户组名与UID、GID一一对应进行转换的过程称之为名称解析。而存放这些信息的文件称之为解析库,包含用户信息库/etc/passwd、用户密码信息/etc/shadow、组的信息库/etc/group、组的密码信息/etc/gshadow。下面我们来一一讲解四个文件的内容。

用户信息库/etc/passwd

使用whatis passwd 命令查看关于passwd的帮助文件。

使用cat /etc/passwd命令查看passwd文件内容

1.root@centos7 ~]# cat /etc/passwd
2.root:x:0:0:root:/root:/bin/bash
3.bin:x:1:1:bin:/bin:/sbin/nologin
4.daemon:x:2:2:daemon:/sbin:/sbin/nologin
5.adm:x:3:4:adm:/var/adm:/sbin/nologin
6.lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
7.sync:x:5:0:sync:/sbin:/bin/sync
8.shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
9.…………中间省略
10.wang:x:1000:1000:wangzhenzhong:/home/wang32:/bin/bash

这一大堆东西到底是什么呢?enter image description here为了能看懂我们使用whatis passwd命令来找下passwd的帮助文件。

1.[root@centos7 ~]# whatis passwd
2.passwd (1)           - update user's authentication tokens
3.sslpasswd (1ssl)     - compute password hashes
4.passwd (5)           - password file

使用man 5 passwd 命令查看 password file 的帮助信息,可以看到passwd的文件每一行代表了一个用户名,每一行是由冒号分割的7个字段组成的。

1.Each line of the file describes a single user, and contains seven colon-separated fields:
2.
3.    name:password:UID:GID:GECOS:directory:shell
4.
5.……实在太多了显示不了下面会一一解释每个字符段的意义。

参考上面man命令给出的格式我们来看下psswd中的信息。

1.wang:x:1000:1000:wangzhenzhong:/home/wang32:/bin/bash

从左到右依次是

name: 用户名
password 加密的密码或者是占位符X(实际存储位置/etc/shadow)pwconv命令切换
UID 用户ID
GID 用户所属的主组ID
GECOS 用户的注释信息
directory 用户的家目录
shell 用户的默认shell类型

用户密码信息/etc/shadow

同样的步骤先看看文件中有什么,使用cat /etc/shadow

1.[root@centos7 ~]# cat /etc/shadow
2.root:\$\6\$4x9rjLZ2$pGwL/pzn47qOnArRppfN0k..0r.VjHiYXhLgI/Oe3pNTqJU72HGNKIX3f9/P17a/tS07WzvCjGknJFG0veIhJ1:17096:0:99999:7:::
3.bin:*:16659:0:99999:7:::
4.…………中间省略
5.postfix:!!:17095::::::
6.ntp:!!:17095::::::
7.tcpdump:!!:17095::::::
8.wang:$
6$mGDN3cm6$xgfX5vJuPKHsNfuWY8zKGNI9QFbwEcziuhf.a/hgAPaBLdbIkjlnKdEpVSMJDIJ9amuaDt12WmFdg6qQKeyjh0:17097:0:99999:7:::

同样看不懂,同样使用使用whatis shadow命令查找帮助文件。

1.[root@centos7 ~]# whatis shadow
2.shadow (3)           - encrypted password file routines
3.shadow (5)           - shadowed password file

使用man5 shadow命令查看shadow的文件格式。

1.DESCRIPTION
2.       shadow is a file which contains the password information for the system's accounts and optional aging information.
3.
4.       This file must not be readable by regular users if password security is to be maintained.
5.
6.       Each line of this file contains 9 fields, separated by colons (“:”), in the following order:
7.        login name
8.        encrypted password
9.        date of last password change
10.        minimum password age
11.        maximum password age
12.        password warning period
13.        password inactivity period
14.        account expiration date
15.        reserved field

我们得知shadow文件中包含了系统账户的密码信息,且改文件不可被普通用户读取,文件的每一行包含9个字段,每个字段之间以‘:’分割。我们参考cat /etc/shadow命令获取的结果来一一解释每个字段的意义。

1.wang:$6$mGDN3cm6$xgfX5vJuPKHsNfuWY8zKGNI9QFbwEcziuhf.a/hgAPaBLdbIkjlnKdEpVSMJDIJ9amuaDt12WmFdg6qQKeyjh0:17097:0:99999:7:::

由左向右依次是:

login name 登录用户名
encrypted password 加密以后的密码,第一个$后的数字代表加密方式,前面有!表示用户处于锁定状态无法登陆
date of last password change 最后一次更改密码的日期,显示为自1970年1月1日到最后一次修改密码的天数
minimum password age 密码的最小使用期限,为0或空字符时表示无最小使用期限
maximum password age 密码打使用期限,到期后要修改密码,为空时表示密码永久有效
password warning period 密码到最大使用期限之前多久开始提醒修改密码,为0或空字符时为不提醒。
password inactivity period 密码到期后至账户名被锁定的期限,为0或者空字符时表示不锁定。
account expiration date 登录账户的有效期,为空字段表示永久不会过期。
reserved field 保留字符以备将来使用

组的信息库/etc/group

使用cat /ext/group 查看group的文件内容

1.[root@centos7 ~]# cat /etc/group
2.root:x:0:
3.bin:x:1:
4.daemon:x:2:
5.…………省略
6.stapdev:x:158:
7.screen:x:84:
8.distro:x:5000:
9.peguin:x:5001:
10.wang:x:1000:

使用whatis group 查找group文档的man帮助信息。

1.[root@centos7 ~]# whatis group
2.group (5)            - user group file

由于group只有一个man帮助文档直接只是用man group命令查看文档格式。 
group文件中存储的是用户组的信息,每一行有四个字段组成以”:”分割;

1.NAME
2.       group - user group file
3.
4.DESCRIPTION
5.       The  /etc/group  file  is a text file that defines the groups on the system.  There is one entry per line, with the
6.       following format:
7.
8.group_name:password:GID:user_list

对比上面cat /etc/gropu 的结果我们来一一介绍每个字段的意思:

1.distro:x:5000:
2.peguin:x:5001:
3.wang:x:1000:
group_name 组名
password 加密的密码或者是占位符X(实际存储位置/etc/gshadow)
GID 组ID
user_list 以此组为附加组的用户列表

组的密码信息/etc/gshadow

还是先使用cat /etc/gshadow命令来查看gshadow文件的内容

1.[root@station25 ~]# cat /etc/gshadow
2.root:::
3.bin:::
4.daemon:::
5.sys:::
6.adm:::
7.………………继续省略
8.distro:!::
9.peguin:!::
10.wang:!::

直接使用man gshadow命令查看帮助,得知gshadow是组密码信息文件,每一行代表一个组,一行由4个字段组成每个字段用”:”分割。至于这次为什么不用whais group查看在使用man group查看帮助,然后贴出代码的原因根本就不是我不小心删除了又不想重新复制。enter image description here

group_name 组名
encrypted password 加密后的密码此处是!或者是,用户将无法使用密码加入该组(本组用户不受影响)
administrators 组管理员,有权利修改密码和添加删除组成员
members 组成员列表

用户管理命令

useradd命令:创建用户(adduser:/usr/sbin/adduser -> useradd)

useradd [options] LOGIN 
-u,–udi UDI:指定UID;UDI的最大最小范围定义在/etc/login.defs; 
-g,–gid:指定基本组ID,此组要事先存在; 
-c,–coment COMMENT:指明注释信息; 
-G,–[group1],[group2]…:指定用户的附属组; 
-d,–home HOME_DIR:指定用户的家目录;(复制/et/skel此目录并重命名实现); 
-s,–shell:可用的所有shell列表存储在/etc/shells文件中; 
-r,–system:创建系统用户; 
-M:不创建用户家目录; 
-f,-inactive:-1密码过期也不锁定用户; 
-N:不创建用户的私有组做主组,使用users组做主组; 
显示或更改默认设置: 
useradd -D 
useradd –D -s SHELL 
useradd –D –b BASE_DIR 
useradd –D –g GROUP 
修改的的结果保存与/etc/default/ussadd


usermod命令:修改用户属性

usermod [选项] login 
-u,–uid UID:修改用户的ID 
-g,–gid GROUP:修改用户所属的基本组; 
-G,–groups:修改用户的附加组,原来的附加组会被覆盖; 
-a,–append:与-G共同使用,为用户追加新的附加组 
-c,–coment COMMENT:修改注释信息; 
-d,–home HOME_DIR:修改用户的家目录,用户原有文件不会被转移至新位置。 
-m,–move-home:只能与-d选项一同使用,用于将原来的家目录移动为新家目录; 
-l,–login NEW_LOGIN:修改用户名; 
-s,–shell:修改用户的默认SHELL 
-L,–lock:锁定用户密码禁止用户登录,在用户密码串前增加! 
-u,–unlock:解锁用户的密码;


userdel命令:删除用户

userdel [option] login 
-r:删除用户时移除用户的家目录;


su命令:switch user

登录式切换:会通过重新读取用户的配置文件来重新初始化; 
su – USERNAME 
su -l USERNAME 
非登录式切换:不会读取目标用户的配置文件进行初始化; 
su USERNAME 
-c ‘COMMAND’:不切换用户仅以指定用户的身份运行指定命令;


passwd命令:

passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [–stdin] 
[username] 
1、passwd:修改自己的密码; 
2、passwd USERNAME:修改指定用户的密码;(管理员有此权限) 
-l -u:锁定和解锁用户; 
-d:删除用户密码; 
-e date:过期期限,日期; 
-i days:非活动期限,天数; 
-n days:密码最短使用期限; 
-x days:密码的最长使用期限; 
-w days:警告期限; 
–stdin:从标准输入获取密码,无需重复设置; 
echo “PASSWORD”|passwd –stdin USERNAME

用户组管理命令

groupadd:创建组

命令格式:groupadd [option] group_name 
-g:GID 指定GID;默认是上一组的GID+1; 
-r:创建系统组;


groupmod命令:修改组

groupmod [option] group_name 
-g GID:修改GID 
-n new_name:修改组名


groupdel命令:删除组

groupdel [option] group_name


gpasswd命令:更改组密码

gpasswd [option] group 
-a USERNAME:向组中添加用户; 
-d USERNAME:从组中移除用; 
-A USERNAME,USERNAME…:设置组管理员;


newgrp命令:临时切换用户的基本组 
newgrp [-] [group] 
-:会模拟用户重新登录以实现重新初始化工作环境; 
exit退出


chage命令:修改用户密码信息

-d, –lastday 
显示最后一次修改密码的日期;=0强制修改密码; 
-E, –expiredate 
账户有效期;-1为永久 
-I, –inactive 
密码到期后到锁定账号的间隔日期; 
-l, –list 
显示US的密码信息列表; 
-m, –mindays 
密码最少有效期; 
-M, –maxdays 
密码最大有效期; 
-W, –warndays 
在密码过期前,收到提醒的天数;


id命令:显示用户的真实和有效ID

id [option] [login] 
-u:显示UID 
-g:显示基本组ID 
-G:显示用户所属的所有组的ID 
-n:显示名称而非ID


原创文章,作者:M21-13-王振中,如若转载,请注明出处:http://www.178linux.com/53750

(0)
M21-13-王振中M21-13-王振中
上一篇 2016-10-23
下一篇 2016-10-23

相关推荐

  • Homework Week-13 samba、vsftp文件共享

    1、建立samba共享,共享目录为/data,要求:(描述完整的过程)   1)共享名为shared,工作组为magedu;   2)添加组develop,添加用户gentoo,centos和ubuntu,其中gentoo和centos以develop为附加组,ubuntu不属于develop组;密码均为用户名;   3)添加s…

    Linux干货 2016-12-05
  • MongoDB

    Edit MongoDB 手册 MongoDB 手册 第一章 Introduction MongoDB入门学习目录(建议) Databases Collections Documents 第二章 部署安装 1. Import the MongoDB public key 2. Configure the package management system (…

    Linux干货 2015-01-12
  • 第四周

    第四周 1.复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其他用户均没有任何访问权限。 [root@node1 ~]# cp -r /etc/skel/ /home/tuser1 [root@node1 ~]# chmod -R go= /home/tuser1 [root@node1 ~]# ls -…

    Linux干货 2017-07-26
  • CentOS的软件包的管理之rpm和yum

    在linux上,一个软件包通常由二进制程序,库文件,配置文件和帮助文件组成。 其中: 二进制程序一般都放在/bin,/sbin,/usr/bin,/usr/sbin,/usr/local/bin和/usr/local/sbin这几个目录下边; 库文件都放在/lib,/lib64,/usr/lib,/usr/lib64,/usr/local/lib和/usr/…

    Linux干货 2017-04-23
  • 启动和内核管理2

    五、自制linux系统     分区并创建文件系统         fdisk /dev/sdb         分两个必要的分区   &n…

    Linux干货 2016-09-18
  • Linux的用户组和权限(一)

    导读:本章主要内容如下       1.解释Linux的安全模型      2.解释用户账号和组群账号的目的      3.用户和组管理命令      4.理解并设置文件权限 &n…

    Linux干货 2016-08-04