[转帖]Linux中的用户和用户组

linux,用户,用户组 · 浏览次数 : 0

小编点评

**用户分类超级用户** * 用户拥有对系统的最高管理权限,默认是root用户。 * 用户组是具有相同特征用户的逻辑集合。 * 用户与用户组的关系一对一:一个用户存在一个组中,即这个用户是这个组的唯一成员。 * 用户和组的配置文件记录了系统每个用户的属性。 * 不同的目录和文件定义了新建用户在主目录下的默认配置文件。 **其他目录和文件** * `/etc/login.defs`文件用来定义创建一个用户时的默认设置。 * `/etc/skel`目录/etc/skel目录定义了新建用户在主目录下默认的配置文件。 * `/etc/default/useradd`文件useradd 添加用户时的规则文件。

正文

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添加用户时,用户家目录下的文件,都是从这个目录中复制过去的

与[转帖]Linux中的用户和用户组相似的内容:

[转帖]Linux中的用户和用户组

https://www.jianshu.com/p/76700505cac4 1,Linux中的用户分类 超级用户:拥有对系统的最高管理权限,默认是root用户。 普通用户:只能对自己目录下的文件进行访问和修改,具有登录到系统的权限。 虚拟用户:这类用户最大的特点就是不能登录系统,他们的存在主要是方

[转帖]Linux中find命令使用示例

https://zhuanlan.zhihu.com/p/99170116 Linux查找命令是类Unix操作系统中最重要且最常用的命令行实用程序之一。 查找命令可以根据你设定的参数匹配的文件指定的条件来搜索和查找文件或目录的列表。 查找可以在多种条件下使用,例如可以按权限,用户,组,文件类型,日期

[转帖]Linux中的零拷贝技术

https://www.jianshu.com/p/a757a93b6e5f 内存映射--mmap 内核和用户空间,共享内存。数据copy到内核区后,只需要把地址共享给应用程序即可,无需再copy一次数据到用户空间。 image.png 优点: 用户程序可以读取和修改共享内存的数据,就像读取用户空间

[转帖]linux中使用script和scriptreplay进行命令操作录制与重放

https://cloud.tencent.com/developer/article/2015118 scriptreplay 用于在终端中,根据 script 命令记录的终端数据文件和时间日志文件,重现当时用户的所有操作和命令的输出信息。简而言之,重现播放当时终端会话发生的一切信息,而不是重新运

[转帖]012 Linux 搞懂用户权限升级 (sudo 和 su),包学会

https://my.oschina.net/u/3113381/blog/5431540 Linux 系统中 root 账号通常用于系统的管理和维护,对操作系统的所有资源具有访问控制权限,当一个普通用户希望执行一些系统维护相关的操作的时候,就需要使用 sudo 命令,临时将该用户的权限提升到 ro

[转帖]「理解C++20协程原理」从Linux线程、线程与异步编程、协程与异步

协程不是系统级线程,很多时候协程被称为“轻量级线程”、“微线程”、“纤程(fiber)”等。简单来说可以认为协程是线程里不同的函数,这些函数之间可以相互快速切换。 协程和用户态线程非常接近,用户态线程之间的切换不需要陷入内核,但部分操作系统中用户态线程的切换需要内核态线程的辅助。 协程是编程语言(或

[转帖]17 种查看 Linux 物理内存的方法

17 种查看 Linux 物理内存的方法 https://linux.cn/article-10235-1.html 大多数系统管理员在遇到性能问题时会检查 CPU 和内存利用率。Linux 中有许多实用程序可以用于检查物理内存。这些命令有助于我们检查系统中存在的物理内存,还允许用户检查各种方面的内

[转帖]apt update和apt upgrade命令 - 有什么区别?

在之前的文章中,我们查看了APT 命令以及您可以使用包管理器来管理包的各种方法。这是一个总体概述,但在本指南中,我们暂停并重点关注 2 个命令用法。这些是apt update和apt upgrade命令。 apt update 和 apt upgrade 是许多 Linux 用户最常用但被误解的两个

[转帖]Linux下进程管理知识(详细)总结

一、简介 本文主要详细介绍进程相关的命令的使用、进程管理及调度策略的知识。 二、常用的命令解析 1、ps命令 命令选项解析-a显示一个终端所有的进程-u显示进程的归属用户和内存占用情况-x显示没有控制终端的进程-l长格式显示更详细的信息-e显示所有进程-w宽行显示,可以使用多个w进行加宽显示 进程常

[转帖]linux日志 audit

https://www.jianshu.com/p/3e8a1d5d5cb9 我们知道在Linux系统中有大量的日志文件可以用于查看应用程序的各种信息,但是对于用户的操作行为(如某用户修改删除了某文件)却无法通过这些日志文件来查看,如果我们想实现监管企业员工的操作行为就需要开启审计功能,也就是aud