Linux 中用户与用户组相关的配置文件与命令总结
用户与用户组
Linux是一种多用户(Multi-Users)、多任务(Multi-tasks)的操作系统。为了保护每一位用户的个人数据,系统需要将每一位用户的数据进行隔离存放。而用户名就是计算机系统为了区分每一位用户的标识符,这个标识符对我们人类来说就是 用户名(USERNAME)。为了便于实现权限的分配与管理,我们将多个用户划分到一个容器之中,盛放这些用户的容器我们称之为用户组(GROUP).
用户分为:管理员用户(默认为root)、系统用户、登录用户。
用户组分为:管理员组、系统用户组、登录用户组。
UID、GID
由于计算机只能识别二进制的0和1,计算机并不能对用户名与用户组名称进行直接的区分,因此在计算机系统中每个用户与用户组都有其单独的数字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
这一大堆东西到底是什么呢?为了能看懂我们使用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查看帮助,然后贴出代码的原因根本就不是我不小心删除了又不想重新复制。
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