用户与组

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

使用方法:

  1. 直接在命令行输入passwd,修改自己的密码
  2. 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

类别:

  1. 登录模式切换:su - USERNAME
    此种方式会重新初始化用户环境
  2. 非登录模式切换:su USERNAME
    此种模式不会重新初始化用户环境
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容