1.用户与组
1.1 用户
在Linux中,用户是能获取系统资源权限的集合。不同的用户有不同的权限集合。并且所有用户都被赋予了一个唯一的标识--UID(User ID)。
我们根据用户权限的不同将用户分为两类:
1.管理用户( UID = 0)
2.普通用户 (UID =1 - 65535)
2.1 系统用户 (UID = 1 - 999)
2.2 登录用户 (UID = 1000 - 60000)
其中,管理用户即为root。而系统用户即是我们分配给系统进程的用户,登录用户则是我们使用来登录linux系统的用户。之所以需要给每一个进程也分配一个用户是当这些进程想要访问或操作系统资源时,Linux是通过用户来控制实现的,这些用户也就被我们称作系统用户。
所有用户的相关信息都被保存在配置文件/etc/passwd中,此文件的一般格式为:
用户名:密码或者是占位符X:UID:GID:注释信息:主目录:shell
而用户的密码在加密过后被保存在/etc/shadow中,其格式为:
name:passwd:date(最后一次修改密码时间):min(改了密码后至少多久才能更改):max(改了密码后过了多少天必须更改):warning(警告期):宽限时间:过期日期:保留字段
1.2 组
组,即为用户的集合。在一个组中的用户意味着这些用户对某些文件拥有相同的组权限。下图是一个文件的属性。这个文件是属于lihaotong这个组的,这个组队此文件的权限是r-x。那么,在此组中的用户对此文件的权限就是r-x。
[图片上传中。。。(1)] 与Linux用户相似的是,所有的组也都拥有一个唯一的标识--GID(Group ID)。
同时,用户与组的关系是多对多。即一个用户可以存在于多个组中,一个组可以拥有任意个用户。
从用户的角度来看,我们可以将组分为两类:
1.innitial group
2.supplementary group
一个用户只能拥有一个initial group,但可以拥有多个supplementary group.
组也拥有这配置文件/etc/group,其格式如下:
group_name:passwd:GID:user_list
和用户配置一样的是,组的密码也保存在另一个配置文件之中---/etc/gshadow。
但是,让人奇怪的为什么组也需要密码?如果说用户需要密码是为了登录系统进行操作的话,那么组也有密码是为什么?这里,就不得不在提到一个概念:effective group(有效用户组)。
我们知道,一个用户可以存在于多个组中,那么我们利用此用户创建一个新的文件,其权限是继承哪一个用户组?
此时,我们通过设置有效用户组来指明新文件的用户组。我们可以使用命令<font color="red">groups</font>来查看用户的有效用户组(排名第一个的组)。
如果我们想要改变一个用户有效用户组,怎么办?我们使用命令<font color="red">newgrp</font>来改变其有效用户组,如果切换的对象不是用户所在的组,就需要输入用户组的密码。
2.常用命令
2.1 组
2.1.1 groupadd
创建新的用户组
defination:groupadd [OPTION] name
-g GID:指定GID
-r:创建系统组
2.1.2 groupdel
删除用户组
defination:group [OPTION] group
2.1.3 groupmod
修改用户定义
defination:group [OPTION] group
-g GID :修改组的gid
-n name :修改组的名字
2.2 用户
2.2.1 useradd
创建一个新用户或更新一个已在用户信息
defination:useradd [OPTIONS] LOGIN
-u UID:指定UID
-g GID:指定GID
-c:添加注释信息
-d:制定主目录位置
值得注意的是,主目录架构保存在/etc/skel中,任何主目录的生成都是通过复制他得到的
-s:指明用户默认shell
一般的,用户可用shell的列表保存在/etc/shells下。如果用户选择的shell不在此文件中,那么安全检查时会出错
-r:系统用户
-D:显示或修改默认创建用户时的各种数值
我们都知道,linux使用文件来保存配置。那么在用户创建时那些默认的配置是保存在哪里的?在/etc/default/useradd和/etc/login.defs中
2.2.2 usermod
使用方式与useradd类似,这里主要说说一些主要的选项。
-G:指定附加组,以前的附加组则会被覆盖掉
-a:与-G一起使用,追加新的附加组
-d:创建家目录,以前的文件不保存
-m:与-d一起使用,移动原来的家目录
-l:修改用户名
2.2.3 userdel
-r:删除主目录
2.3 密码
2.3.1 passwd
使用方法:
- 直接在命令行输入passwd,修改自己的密码
- pass
defination:passwd USERNAME
-l,-U:锁定和解锁用户
-d:清除密码
--stdin:echo "xxxx" | passwd --stdin
2.3.2 gpasswd
-a USERNAME:向组里添加用户
-d USERNAME: 删除组中用户
2.3.3 chage
此命令用于修改用户密码过期信息,这里不再赘述
2.3.4 id
显示用户ID级初始,有效用户组
2.3.5 su
defination:su [OPTION] username
类别:
- 登录模式切换:su - USERNAME
此种方式会重新初始化用户环境 - 非登录模式切换:su USERNAME
此种模式不会重新初始化用户环境
网友评论