https://www.jianshu.com/p/76700505cac4
1,Linux中的用户分类
超级用户:拥有对系统的最高管理权限,默认是root用户。
普通用户:只能对自己目录下的文件进行访问和修改,具有登录到系统的权限。
虚拟用户:这类用户最大的特点就是不能登录系统,他们的存在主要是方便系统管理,满足相应得进程对文件属主的要求。例如系统默认的bin.adm.nobody用户等,一般运行的是web服务,默认使用的是nobody用户,但是nobody用户是不被允许登录系统的。
2,用户组的概念
用户组是具有相同特征用户的逻辑集合。又是我们需要让多个用户有相同的权限,比如查看修改某个文件的权限,一种方法就是对多个用户进行访问授权,如果有10个用户的话,就要授权10次。显然这种方法不太合理。另一种方法就是建立一个组,让这10个用户放在同一个组中,同时授权这个组有查看,修改这个文件的权限。这就是用户组,Linux将用户分组是Linux对用户进行管理及访问控制权限的一种手段,通过定义用户组,很大程度上简化了管理工作。
3,用户与用户组的关系
一对一:一个用户存在一个组中,即这个用户是这个组的唯一成员。
一对多:一个用户可以存在多个用户组中,用户有多个用户组的权限。
多对一:多个用户可以存在一个用户组中,这些用户具有和组一样的权限。
多对多:多个用户可以存在多个组中。
4,用户和组的配置文件
(1)/etc/passwd/文件,记录了系统每个用户的属性。
格式:“用户名:口令:用户标识号:组标识号:注释描述:主目录:默认shell”
含义:用户名:代表用户账号的字符串。
口令:存放着加密后的用户口令,这个字段存放的只是用户口令的加密串,不是明文。但是/etc/passwd/文件所有用户都可以读,所以这是个安全隐患,所以许多Linux版本中使用shadow技术,把真正加密后的用户口令存放在/etc/shadow/中,而在/etc/passwd/文件中用x或者*代替。
用户标识号:就是用户的UID,每个用户都有一个UID,并且是唯一的。通常UID的取值范围为0~65535。0是超级用户root的标识号,1~99由系统保留,作为管理账号。普通用户是从100开始的,而Linux中默认是从500开始的。UID是Linux下确认用户权限的标志,用户的角色和权限都是通过UID来实现的。因此多个用户共用一个UID是很危险的,会造成系统管理和权限的紊乱。
组标识号:就是组的GID,与用户的UID类似,这个字段记录了用户所属的用户组,它对应着/etc/group/文件中的一条记录。
注释描述:是对用户的描述信息,比如电话,住址,姓名等等。
主目录:是用户登录到系统之后默认的目录。
默认shell:用户登录到系统后默认使用的命令解释器,shell是用户和Linux内核之间的接口,用户所做的任何操作,都是通过shell传递给系统内核的。Linux下常用的shell有:sh,bash,csh等。管理员可以根据用户的习惯,为用户设置不同的shell。
例子:
6,/etc/shadow/文件
/etc/shadow/文件:用户加密咨询文件,该文件只有root用户拥有读权限,从而保护了密码的安全性。
格式:“ 用户名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:保留字段”
含义:
用户名:与/etc/passwd/文件中的用户名有相同的含义。
加密口令:存放的是用户口令加密后的字符串,如果此字段是*!x这三个字符,则对应的用户不能登录系统。
最后一次修改时间:表示从某个时间起,到最近一次修改口令的间隔天数。可以通过passwd来修改密码,然后查看/etc/shadow/来查看此字段的变化。
最小时间间隔:表示两次修改密码之间的最小时间间隔。
最大时间间隔:表示两次修改密码之间的最大时间间隔,这个设置能增强管理员管理用户的时效性。
警告时间:表示系统开始警告用户到密码正式失效的天数。
不活动时间:此字段表示用户口令作废多少天后,系统会禁用此用户,也就是说系统不再让此用户登录,也不会提示用户过期,是完全禁用。
失效时间:表示该用户的帐号生存期,超过这个设定时间,帐号失效,用户就无法登录系统了。如果这个字段的值为空,帐号永久可用。
保留字段:linux的保留字段,目前为空,以备linux日后发展之用。
7,/etc/group/文件
用户组信息文件,保存用户组的信息。
格式:“组名:口令:组标识号:组内用户列表”
组名:是用户组的名称,由字母或数字构成。与/etc/passwd中的用户名一样,组名不能重复。
口令:存放的是用户组加密后的口令字串,密码默认设置在/etc/gshadow文件中,而在这里用“x”代替,linux系统下默认的用户组都没有口令,可以通过gpasswd来给用户组添加密码。
组标识号:就是GID,与/etc/passwd中的组标识号对应。
组内用户列表: 显示属于这个组的所有用户,多个用户之间用逗号分隔。
8,/etc/gshadow/文件
用户组加密咨询文件,保存了用户组密码的一类信息,/etc/gshadow和/etc/group是互补的两个文件;对于大型服务器,针对很多用户和组,定制一些关系结构比较复杂的权限模型,设置用户组密码是极有必要的。比如我们不想让一些非用户组成员永久拥有用户组的权限和特性,这时我们可以通过密码验证的方式来让某些用户临时拥有一些用户组特性,这时就要用到用户组密码。
格式:“组名:口令:组管理者:组成员”
含义:
组名:用户组名称
口令:存放的是用户组密码的加密口令,如果是空的或者是!表示没有密码。
用户组管理者:也可以为空,如果有多个管理这,之间用','隔开。
组成员:如果有多个成员用','隔开。
8,其他目录和文件
(1)etc/login.defs文件
用来定义创建一个用户时的默认设置,比如指定用户的UID和GID的范围,用户的过期时间、是否需要创建用户主目录等等。
下面是rhel5下的/etc/login.defs文件,简单介绍如下:
MAIL_DIR /var/spool/mail
当创建用户时,同时在目录/var/spool/mail中创建一个用户mail文件
PASS_MAX_DAYS 99999
#指定密码保持有效的最大天数
PASS_MIN_DAYS 0
表示自从上次密码修改以来多少天后用户才被允许修改口令
PASS_MIN_LEN 5
指定密码的最小长度
PASS_WARN_AGE 7
表示在口令到期前多少天系统开始通知用户口令即将到期
UID_MIN 500
指定最小UID为500 ,也就是说添加用户时,用户的UID 从500开始
UID_MAX 60000
指定最大UID为60000
GID_MIN 500
指定最小GID为500,也就是添加组时,组的GID从500开始。
GID_MAX 60000
指定最大GID为60000
CREATE_HOME yes
此项是指定是否创建用户主目录,yes为创建,no为不创建。
(2)/etc/skel目录
/etc/skel目录定义了新建用户在主目录下默认的配置文件,更改/etc/skel目录下的内容就可以改变新建用户默认主目录的配置文件信息,例如创建一个新用户后,会在新用户的主目录下看到类似.bash_profile, .bashrc, .bash_logout等文件,这些文件就是存在于/etc/skel目录下的。
(3)/etc/default/useradd文件
useradd 添加用户时的规则文件,当我们通过useradd命令不加任何参数创建一个用户后,用户默认的主目录一般位于/home下,默认使用的shell是/bin/bash,这些都是在/etc/default/useradd文件中定义的。更改此文件可以更改添加用户的默认配置,除此方法外还可以通过adduser命令的参数来实现。
内容如下:
GROUP=100
HOME=/home :把用户的家目录建在/home中
INACTIVE=-1 :是否启用帐号过期停权,-1表示不启用
EXPIRE= :帐号终止日期,不设置表示不启用
SHELL=/bin/bash :所用SHELL的类型
SKEL=/etc/skel :默认添加用户的目录默认文件存放位置;也就是说,当我们用adduser添加用户时,用户家目录下的文件,都是从这个目录中复制过去的