一. 用户的由来
linux系统拥有的就是资源,最重要的事就是对资源的分配,资源分给谁?在linux上资源的访问是对用户
赋予不同的权限实现,也就是说能访问资源的单位是用户。那用户在获取资源之前要实现证明自己是本用
户,这个过程称为认证,他通过密码和用户名实现。在用户登录时会将用户输入的用户名和密码进行校验
,校验过程就是将输入的用户名和密码与linux系统上记录的用户名和密码进行对比,相同就登录成功,反
之,就登录失败。那系统上记录用户和密码的文件就是我们要重点谈论的,分别在/etc/passwd和/etc/shadow。
接下来我们就围绕这两个配置文件及其相关的命令谈一谈。
用户的分类
linux对用户通过其获取资源的能力划分成二类用户:
1.管理员用户:是linux系统中的神,无所别能,不受权限的限制。 2.普通用户:获取资源受权限限制,他根据用处分为两类 a. 系统用户:linux中每一个进程都有一个发起者,而又一些进程是系统启动时开启的服务 进程。这些系统服务经常的发起者就是这些系统用户。而这些系统用户不必登录到计算机, 这类用户就叫做系统用户。 b.登录用户:lunux是一个多人多工的操作系统,这类用户可以登录后根据权限享有资源。
/etc/passwd配置文件简介
我们通过head 查看前五行内容:
[root@localhost ~]# head -n 5 /etc/passwd root:x:0:0: :/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
其中每一行表示一个用户,每个用户多分为七个字段用分号隔开。这七个字段从左到右表示的意思分别为:
1.USERNAME:用户姓名 2.PASSWD:用户密码,但在此处不显示,密码保存在/etc/shadow文件中。早期的密码是放在此文件中 由于放在这不安全,将其移到/etc/shadow文件下,文件名没变是为了兼容老版本 3.UID:用户id号,因为计算机更容易识别数字,故每一个用户都有一个唯一表示ID,且用户识别并不 是通过用户名字而是用户ID,例如在linux中ID为0的用户是管理员 4.GID:用户主组。 5.context:注释信息。 6.HOME DIRECTORY:用户家目录,用户登录之后所处的目录 7.SHELL:用户登录后使用的shell,shell是用户与linux内核打交道的接口
/etc/passwd配置文件简介
通过head查看配置文件内容为:
[root@localhost ~]# head -n 5 /etc/shadow root:$6$Of1m6zsD$8ZbhnzL1T95JnLNOH8YFC7CMth7DWhUsMl3KP.YR/TygDrcqSKJ6UFVLE/SDJaEIlhj09ZwQgJqQkMTDmZIf60:17097:0:99999:7::: bin:*:17097:0:99999:7::: daemon:*:17097:0:99999:7::: adm:*:17097:0:99999:7::: lp:*:17097:0:99999:7:::
每个字段以冒号为分隔符,可以看到每个密码有九个字段,分别表示的意思为:
1.login name:用户名 2.encrypted password:密码,以$符分为三个字段从左到右分别为 a.第一个字段为加密算法,有1-6六个数字分别对应的算法为:MD5,SHA1,SHA224,SHA224,SHA256 SHA384,SHA512。root用户中的6就表示sha512。 b.第二个字段为salt,是8位随机数,是为了反正密码相同的不同用户密码一样而生成的随机数 c.第三个字段为生成的密文,即密码。 3.date of last password change:密码最后一次修改距离linux元年(1970.01.01)的天数 4.minimum password age:密码再次修改最小经过的天数 5.maximum password age:密码最大使用天数,过了这个天数就要修改 6.password warning period:警告时间,密码到最大使用天数前多少天开始警告,提示用户密码快 到最大使用时间需要修改了 7.password inactivity period:密码到了最大使用天数之后,账号不可活动天数。 8.account expiration date:用户过期时间,是1970到过期时间的天数。 9.reserved field:保留字段。
用户相关命令简介
useradd:创建一个新用户,主要创建的shi/etc/passwd中的信息。
重要参数为: -r:创建系统用户 -u:指定用户id -g:指定指定用户属id -G:指定用户附加组id -s:指定用户登录shell -c:用户注释信息 -d:指定用户家目录 -m:创建用户家目录 -M:不创建用户家目录 -c:注释用户信息
chage和passwd:主要修改/etc/shadow中的数据。具体选项可以查看man帮助,值得注意的是passwd可以通
过-l和-u锁定和解锁用户密码。
usermod:修改制定用户数据,处理修改/etc/passwd的一些常规信息,还可以是用-L和-U锁定和解除用户
密码,锁定密码实际上是在密码前加一个!号
chfn USERNAME:修改用户注释信息。
finger USERNAME:查看用户信息
userdel:删除用户 -r选项表明连同家目录页一并删除。
用户信息默认配置文件
当我们在创建用户没有指定shell,家目录等信息是,我们发现尽管没有指定,但依旧有shell,家目录等。
那么这些默认的属性来自那呢?这些默认信息都写在/etc/login.defs和/etc/default/useradd中看看都
定义了一些什么属性。
/etc/login.defs:
PASS_MAX_DAYS 99999 #密码最大使用时间
PASS_MIN_DAYS 0 #密码最小实用时间
PASS_MIN_LEN 5 #密码最小长度
PASS_WARN_AGE 7 #密码提前警告时间天数
ENCRYPT_METHOD SHA512 #指定了密码加密算法
CREATE_HOME yes #默认创建家目录
UID_MIN 500 #用户id最小值
UID_MAX 60000 #用户id最大值
…
/etc/default/useradd
GROUP=100 #创建用户使用-N选项是默认的基本组
HOME=/home #家目录创建目录
INACTIVE=-1 #密码非活动时间
EXPIRE=
SHELL=/bin/bash #默认shell类型
SKEL=/etc/skel #拷贝到家目录下的文件
CREATE_MAIL_SPOOL=yes #是否创建邮箱
二.组的概念
在上面我们提到过,操作系统最大的作用是管理资源。而为了对某一类用户进行资源的分配和使用,我们
提出了组的概念。与组相关的两个配置文件为:/etc/group, /etc/gshadow。
组的分类
它和分类一样 1.管理员组 2.用户组: a.系统组 b.登录组 站在用户的角度分: 1.用户的基本组,也称为主组。 2.附加组
/etc/group
查看文件格式为:
[root@localhost ~]# head -n 5 /etc/group root:x:0: bin:x:1:bin,daemon daemon:x:2:bin,daemon sys:x:3:bin,adm adm:x:4:adm,daemon
以逗号为分隔符,五个字段分别为:
1.用户名 2.用户密码,与/etc/passwd一样真正的密码在其他文件中 3.GID:组ID号 4.用户成员列表
/etc/gshadow配置文件
查看配置文件内容为:
[root@localhost ~]# head -n 5 /etc/gshadow root::: bin:::bin,daemon daemon:::bin,daemon sys:::bin,adm adm:::adm,daemon
以逗号为分隔符,五个字段分别为:
1.用户名 2.用户密码,实际上组一般不设置密码,设置密码后用户使用newgrps命令属于密码切换属组,这是不 安全的。 3.组的属主,属组可对此组用户成员进行增删。 4.用户成员列表。
组相关命令简介
groupadd:添加组
groupmod:修改组信息
groupdel:删除组
gpasswd:修改组命令
id USERNAME:查看用户id和组信息
groups USERNAME:查看用户的基本组和附加组。
groupmems -l -g GROUPNAME:查看组中有哪些成员。
三. 用户和组的关联
在创建用户时如果没有指定基本组就会创建一个同名的组,这个组中的会有一个成员列表为新创建的用户。
用户id名称的改变,并不会影响相同组的改变,因为两者之间没有直接联系,只是组成员中的列表会随着
成员用户名称的改变而改变。用户和组没有关联,只是名字相同而已
原创文章,作者:lirou,如若转载,请注明出处:http://www.178linux.com/53694