Bash编程015——用户与组
Linux系统是一个多用户系统,允许多个用户同时登录到系统,使用系统资源。当多个用户同时使用系统时,需要区分不同的用户,这就需要一种秩序,规范每个用户的权限。Linux采用用户账户来区分不同的账户,账户实际上是一个用户在系统上的标识,系统根据账户ID来区分每个用户的文件、进程、任务等资源,并给每个用户提供特定的工作环境,使每个用户的工作都能独立进行。
15.1 介绍
广义上来讲,Linux账户可以分为用户账户和组账户。
每个用户账号都拥有一个惟一的用户名和各自的口令。用户在登录时键入正确的用户名和口令后,才能进入系统。用户账户分为两种:普通用户账户和超级用户账户(root,或者叫管理员账户)。普通用户可以使用受限的系统资源,管理员账户拥有绝对的控制权,可以管理普通用户和真个系统。
组是用户的集合,一般有两种类型的组:私有组和标准组。当创建一个新用户时,若未指定所属组,系统则会创建一个和该用户同名的私有组。标准组可以包含多个用户,在创建新用户时可以明确指定其所属的组。一个用户可以同时属于多个组,此时,其登陆后所属的组称为主组,其他的组称为附属组。
15.2 账户系统文件
主要有:/etc/passwd、/etc/shadow、/etc/group、/etc/gshadow四个文件。
下面逐一介绍这些文件:
1./etc/passwd
该文件每行定义一个用户账户,一行中又换分为多个字段定义用户的不同属性,各字段之间用:分隔。
# 查看当前登录用户和root用户的信息
cat /etc/passwd | egrep "`whoami`|root"
# 输出如下:
root:x:0:0:root:/root:/bin/bash
ruo:x:1000:1000:ruo,,,:/home/ruo:/bin/bash
- 用户名字段,这是用户登录系统时使用的用户名,在系统中是唯一的。
- 口令字段,存放加密后的口令(密码),这里一般显示为x表示存放在/etc/shadow文件中。
- 用户标志号(UID),一个整数,系统内部用它来标识用户,root用户的UID为0。1~499为标准账户,普通用户账户从500开始。
- 组标识号(GID),一个整数,系统内部用它来标识用户所属的组。每个用户账号在建立后都会有一个主组,主组的相同的账号GID相同。默认,创建一个用户时建立一个同名的私有组,只有用户本人一个成员。
- GECOS,存放用户全名、地理位置等信息。
- 主目录位置,存放用户登录系统后进入的目录。
- 默认shell
2./etc/shadow
/etc/passwd文件对任何用户都可读,加密后的密码存放在/etc/shadow文件中,只有root用户可读。
# 查看root和当前用户的密码
sudo cat /etc/shadow | egrep "$(whoami)|ruo"
root:$6$Jx9MU/2i$nNoe.c6oFiVGuJPH1WkV2IogeTLJ4D3n9tdMQ1up0AT1XWnFBBRzoYoAGneaq0Oqug0wTWiqIIR/n6vTL1.zb0:17900:0:99999:7:::
ruo:$6$8vKvW/Gv$XKi9zEkammkVaT4/4/Jq4rHFaPsQ.L94c9T1SVdaZKzCOylQQTsSaVfA2x1LBeGQPM8CJjkKtHFusZ291qrnv.:17872:0:99999:7:::
3./etc/group
该文件记录用户所属的组,一个组可以用多个用户,一个用户也可以属于多个组。当一个用户同时属于多个组时,/etc/passwd文件中记录的是用户所属的主组,也就是登录时所属的主组,其他组称为附属组。
# 常看当前登录用户所属组
cat /etc/group | grep $(whoami)
adm:x:4:syslog,ruo
cdrom:x:24:ruo
sudo:x:27:ruo
dip:x:30:ruo
plugdev:x:46:ruo
lpadmin:x:113:ruo
ruo:x:1000:
sambashare:x:128:ruo
各字段说明:
- 组名,该组的名称;
- 组口令,已经不再使用该字段保存口令,使用x占位
- GID,组的标识号和UID类似
- 组成员,属于该组的成员,多个成员间以,间隔
4./etc/gshadow
该文件用于定义用户组口令、组管理员等信息,该文件只有root用户可以读取。
sudo cat /etc/gshadow | grep $(whoami)
# 输出如下:
adm:*::syslog,ruo
cdrom:*::ruo
sudo:*::ruo
dip:*::ruo
plugdev:*::ruo
lpadmin:!::ruo
ruo:!::
sambashare:!::ruo
字段解释:
- 组名,组名称
- 组口令,保存已经加密的口令
- 组的管理员账户,管理员可以对该组添加、删除账户
- 组成员,属于该组的用户,多个用户以,间隔
网友评论