一、用户和组的相关概念
账号的概念和分类
账号:是一种用来记录单个用户或是多个用户的数据。Linux中每一个合法的用户都必须要拥有账号,才能使用 。它不仅可以用来验证用户身份,还决定了一个用户在系统中可以从事什么工作

在Linux 上的账号可以分成两类:

用户账号 用来储存单一用户的数据,你可以使用一个用户账号,来储存某一个用户的数据。

群组账号 用来储存多个用户的信息,每一个群组账号可以用来记录一组用户的数据。

我们可以把 Linux 的所有账号依照下面两种方法进行分类:

依照账号的位置。

依照账号的功能。

依照账号的位置

账号数据存放在不同的地方,其可使用的范围就会不太一样,账号的使用范围我们称为视野。依照账号储存的位置与视野不同,我们可以区分本机账号与网域账号两种:

本机账号: 储存于本机硬盘中的账号数据,我们称为本机账号。本机账号使用范围局限在账号建立的 Linux 系统上,如果超出范围时,本机账号将无法使用。比如你在自己电脑上登录用的账号和密码,正常是无法在其它的电脑上使用的。

本机账号的优点是简单易用,你无须作额外的设置,就可以直接建立本机账号;但缺点则是无法具备延展性(Scalability)。比如你在一个拥有很多主机的环境中,想拥有一个在每台主机都可以登录的账号时,你就需要在所有的主机上都建立相关的用户

网域账号: 你也可以把大量的计算机组织成为一个网域,然后在网域中的某一台 Linux 上建立账号数据,并且通过某些通信协议,将账号数据分享出来。当其他计算机需要取得账号数据时,再通过网络调用这些分享的账号即可。这种账号我们称为网域账号 (Domain Account)。

网域账号的优点在于具备延展性。在大规模的环境中,使用网域账号往往能节省管理账号的时间;但网域账号也有缺点,其最大的缺点就是要配置网域账号前,你必须先建立“域”的环境才行。

依照账号的功能

不管是本机账号或是网域账号,我们还可以把所有账号依照功能分成下面几类

用户账号部分:包含了超级用户、普通用户;而普通用户中还可细分为系统用户、真实用户两种。

超级用户: 在Linux 系统上拥有完整的控制能力,常被称为系统管理员,在 系统上拥有完整的控制能力,你可以利用超级用户读取或写入 上任何文件、安装或删除软硬件、启动或停止服务,甚至关机与停止系统的执行。 通常只有在管理系统时才会使用超级用户账号登录,所以超级用户常被称为系统管理员 (System Administrator)。由于超级用户的权限不受任何限制,你可以使用该账号来管理 系统;但是,也可能因为操作错误,或者打错命令而造成无法挽救的伤害。在此,强烈建议你“除非有必要,否则请不要轻易以超级用户身份使用 Linux”!

在 Linux 系统中,超级用户的用户名称通常为 root,其 UID(用户ID号)一定为 0。

普通用户账号:行为能力会受到限制,只能调用具备权限的文件,如果没有足够的权限,普通用户是完全无法调用的;所以,普通用户账号不太容易危害 Linux 系统。普通用户账号中,我们又可分为两大类:

系统账号

这种类型的账号仅提供给Linux 系统本身使用。在某些软件执行的时候,需要你提供一个普通用户类型的账号。为了满足这些软件而建立的账号,我们称为系统账号 (System Account)。

真实用户

系统用户账号是给软件或程序使用的,那么,什么账号是让我们登录Linux 时使用的呢?答案就是真实用户(Real User)。真实用户账号是为了让其他人登录系统使用的

群组账号部分:包含了超级用户群组、系统群组以及用户自定义组三大类。

超级用户群组:Linux 有一个叫做 root 的群组,因为这个群组的名称与 root 这个超级用户的名称相同,所以,我们习惯把 root 群组叫做超级用户群组。超级用户群组的 GID 为 0。

系统群组: 与系统账号一样,系统群组是给 Linux 系统本身,或是某个软件所使用

用户自定义组: 除了上述的群组外其余的所有群组,皆是由管理者自行定义,因此我们把这些群组称之为用户自定义组

另外,Linux 系统的“用户自定义组“类型中,还有一种名为用户私有群组 (UPG, User Private Group)的群组。什么是 “用户私有群组”呢?用户私有群组(UPG, User Private Group)是指 “与用户账号名称相同,且为用户的主要群组”的群组。当你建立新的用户账号时,Linux 会自动建立该用户的私有群组。如,当你建立 test 这个用户账号时,Linux 会自动建立了一个名为 test 的群组,并且让 test群组成为 test 用户账号的主要群组,test 群组即是 test 的私有群组。

了解完账号的基本概念后,我们一起来看下账号到底记录了哪些信息

二、用户账号管理
本机的用户账号数据储存于/etc/passwd文件中。与其他的配置文件一样,passwd 也是一个文本文件,因此,你可以直接使用文字处理程序,例如 cat 或 less 浏览其中的内容。

root❌0:0:root:/root:/bin/bash
bin❌1:1:bin:/bin:/sbin/nologin
daemon❌2:2:daemon:/sbin:/sbin/nologin
/etc/passwd 权限必须是0644,每一行代表一个用户的账号数据,每一行又使用冒号(:)分隔为几个部分

USERNAME:PASSWORD:UID:GID:COMMENT:HOMEDIR:SHELL

USERNAME: 用户识别名称,也是登录的名称

PASSWORD: 密码位,用于存储用户的密码,为了安全起见,密码放在另一个文件中,这里统一用x

UID: 用户识别号,0表示为管理员,非0为普通用户

GID: 组识别号,用来识别用户组的身份,同样0为管理员组,非0为系统群组或者自定义组

COMMENT: 描述信息

HOMEDIR: 家目录位置

SHELL: shell类型

这个文件我们就介绍完了,现在我们来看下用户管理的相关命令

useradd

参数

说明

-u UID

用来指定账号的 UID,如果省略这个参数,useradd会自动以最后一个可用的 UID 作为新账号的 UID。 如果你指定的 UID 已经使用过,useradd 将会显示错误信息,此时你可以配合 -o 参数,告诉 useradd 允许重复的 UID。

-g GROUP

定义用户的主要群组。使用 -g 参数前,GROUP 必须已经存在。

-d HOME

指定用户的主目录。默认的主目录是建立在 /home/ 目录下,而且目录名称与用户名称相同。

-s SHELL

指定用户登录执行的程序。

-c COMMENT

指定用户的批注说明。如果批注文字包含空白,请记得使用双引号 (") 包起来。

-r

这个参数用来指出建立一个系统用户的账号。

这些参数大多数可以同时使用,可以根据自己的需求指定,如:

useradd -u 1500 -g hello -d /home/hello -s /bin/bash -c “this is a test user” hello
usermod 是用来修改用户相关信息的,和useradd使用的参数很多是相同的,用法也是一样的,除此之外usermod命令还有一些额外的参数

参数

说明

-l NEWNAME

修改账号的用户名称,NEWNAME 即是新的账号名称。

-L

锁定账号,一经锁定的账号将无法用来登录系统。

-U

解除锁定。

userdel 删除用户,有一个常用参数-r,含义是删除用户的相关数据,包括家目录,邮箱。

id

[root@manage01 ~]# id hello
uid=1000(hello) gid=1000(hello) 组=1000(hello)
[root@manage01 ~]# id -u hello
1000
whoami

[root@manage01 ~]# whoami
root

三、组账号管理
本机的群组账号数据被储存在 /etc/group 文件中,权限也必须为0644,与 /etc/passwd 一样,这也是一个文本文件。

root❌0:
bin❌1:
daemon❌2:
这与/etc/passwd文件的格式类似

GROUPNAME:PASSWORD:GID:MEMBERS

GROUPNAME: 组名

PASSWORD: 组密码,这里也和passwd文件一样是个x

GID: 群组识别号

MEMBERS: 组成员

一起来看下组管理的相关命令

groupadd 建立组

参数

说明

-g GID

指定群组账号的标识符

-r

指定添加的群组成为系统群组

-f

强制执行。 在一般的情况下,groupadd 不允许建立一个与使用过的 GID 相同的群组账号,而使用这个参数时,groupadd 将会建立相同 GID 的 群组账号。

groupmod 修改群组信息

参数

说明

-g GID

修改群组账号的标识符。GID 就是新的标识符。

-n NEWNAME

用来修改群组的名称。NEWNAME 就是新的组名。

groupdel 删除群组账号

用户和组的相关命令我们介绍完了,现在来看下密码管理

四、密码管理
账号犹如一张通行证,有了账号你才能顺利的使用Linux。不过 Linux 怎么确认使用某账号的人,是这个账号的真正拥有者呢?此时Linux 会根据用户的密码,来确认用户的身份。Linux 的用户账号与群组账号都可设置密码。用户账号的密码用来验证用户的身份;而群组账号的密码则是用来确认用户是否为该群组的成员,以及确认是否为该群组的管理者。

在 Linux 中,使用 useradd 新建一个用户账号时,useradd 会锁定用户的密码,如此一来,用户暂时不能使用 。你必须要修改其密码后,新建的用户才能用他的账号登录。要修改用户账号的密码需要使用passwd命令

passwd 修改用户密码

参数

说明

-d

删除用户密码,亦即把文件中的密码字段清空。

-l

这个参数用来锁定账号,账号一经锁定,用户再怎样输入密码,都会被判断为错误。这个参数只能由 root 使用,普通用户无法用来锁定自己的账号。

除了可以修改用户账号的密码外,你也可以为每一个群组设置一个密码,这个密码称为群组密码(Group Password)。Linux 的用户,可以通过 newgrp 暂时修改其主要群组的身份。执行 newgrp 时,会以指定的群组身份,开启一个登录 Shell,这样就可以获得暂时修改主要群组之功效。此时,如果该群组没有指定密码,那么 Linux 只允许群组的成员可以使用 newgrp修改主要群组的身份;如果群组设置了密码,群组成员仍可以不用密码就可切换主要群组身份,但非群组的成员,则必须要提供正确的密码才行。

gpasswd 修改组密码

参数

说明

-r

用来删除群组的密码。

-R

锁定 GROUP 的群组密码。

密码管理使用的命令我们就说到这里,现在看一下相关工具

五、相关工具
说到相关工具,就不得不提到shadow这个组件,shadow有三个功能:隐藏密码、扩充密码的功能、提供账号管理工具

隐藏密码:因为/etc/passwd和/etc/group文件的权限必须是0644,这意味着所有的用户都能读取到内容,所以为了安全起见,我们通过shaodw把用户和组的密码分别隐藏在/etc/shadow,/etc/gshadow文件中,且这两个文件只有管理员,也就是root能调用

提供账号管理工具 :我们之前所介绍的用户和组管理的相关命令,都是shadow所提供的工具

扩充密码功能: 这个扩充密码功能就是除了密码之外的额外功能,如,密码的有效期限,设置群组管理员(组长)等,这些都是记录在/etc/shadow,/etc/gshadow文件中

/etc/shadow: 存储用户密码及密码额外功能的文件

root:666T52Xvk7zu84.tDXp$nfXcm6LTfUx.ZviEo7Eq1bPjDO…::0:99999:7:::
bin:*:18027:0:99999:7:::
/etc/shadow文件的格式与/etc/passwd类似,也是每一行代表一个账号的数据,使用:进行分隔

USERNAME:PASSWORD:LASTCHANGED:MINDAYS:MAX_DAYS:WARNNING:EXPIRES:INVALID:RESERVED

1 USERNAME:用户账号名称。

2 PASSWORD:加密后的密码。

3 LAST_CHANGED:密码最后一次修改的日期。

4 MIN_DAYS:密码修改的最小间隔天数。

5 MAX_DAYS:密码修改的最大天数。

6 WARNNING:密码过期前警告的天数。

7 EXPIRES:密码过期的日期

8 INVALID: 账号失效日期

9 RESERVED:保留位,未定义功能

这里面我们所提到的日期都是从1970年1月1日起经过的天数,所以我们看到的不是日期的格式,而是一组数字,我们接下来看下另一个文件

/etc/gshadow: 存储组密码及密码额外功能的文件

root:::
bin:::
daemon:::

GROUPNAME:PASSWORD:ADMINISTRATORS:MEMBERS

GROUPNAME: 组名

PASSWORD: 组密码

ADMINISTRATORS: 组长

MEMBERS: 组成员

除此之外用户管理还有一个简单的方法,那就是以root用户身份登录图形界面


cockpit

systemctl start cockpit

http://localhost:9090

管理密码的有效期限

Shadow除了会把密码数据隐藏到其他文件、提供许多账号管理工具外,还允许你为账号或密码设置有效期限,以提高Linux 的安全性。目前的 Shadow 可以设置下列两种期限:

密码过期

一旦超过密码过期日期,用户成功的登录Linux 时,会强迫用户设置一个新的密码。设置完毕后,才会开启用户的 Shell 程序。设置密码过期的目的,在于提高 Linux 的安全性。

账号过期

若超过账号过期日期,Linux 会禁止用户登录系统,即使输入正确的密码,也无法登录。当账号过期时,Linux 会提示用户联系管理员修改账号过期日期。

Your account has expired; please contact your system administrator
我们可以使用chage命令来查看或调整这些相关的期限

[root@manage01 ~]# chage -l hello
最近一次密码修改时间 :从不
密码过期时间 :从不
密码失效时间 :从不
帐户过期时间 :从不
两次改变密码之间相距的最小天数 :0
两次改变密码之间相距的最大天数 :99999
在密码过期之前警告的天数 :7

chage
-m 设置密码修改的最小天数
-M 设置密码修改的最大天数
-d 设置密码最后修改日期
-I 设置密码过期后,锁定账号的天数
-E 设置账号过期日期,0=立即过期,-1=永不过期
-W 设置密码过期前的警告天数
-l 查看指定用户的相关信息
-h 帮助

群组管理员

群组管理员可以

指派群组管理员,如果有多个管理员用“,”分隔,如果想删除群组管理员,保持位置为空
gpasswd -A USER GROUP
gpasswd -A hello test#将test组的管理员设置为hello
gpasswd -A ‘’ test #删除test组的管理员
加入与删除群组成员
gpasswd -a USER GROUP
gpasswd -d USER GROUP

组团学 用户管理(zutuanxue.com)相关推荐

  1. 学习笔记--用户管理

    2022.5.18 课程来源:​​​​​​[千锋教育]网络安全300集全套-黑客攻防/渗透测试/代码审计(从入门到精通)_哔哩哔哩_bilibili 本人才疏学浅, 写博客主要为了促进学习,如有疏漏欠 ...

  2. Oracle用户管理学习总结

    Oracle 用户管理 一.用户的概念 用户,即user,通俗的讲就是访问oracle数据库的"人".在oracle中,可以对用户的各种安全参数进行控制,以维护数据库的安全性,这些 ...

  3. 用户管理 之 Linux 用户管理工具介绍

    作者:北南南北 赞助: 来自:LinuxSir.Org 摘要: 本文主要介绍Linux系统的用户和用户组的查询.添加.修改及删除等管理工具: 目录索引 一.与用户管理相关的配置文件: 1./etc/p ...

  4. 使用IntelliJ IDEA开发SpringMVC网站(四)用户管理

    2019独角兽企业重金招聘Python工程师标准>>> 转载请注明出处:Gaussic . 注:在阅读本文前,请先阅读: 使用IntelliJ IDEA开发SpringMVC网站(一 ...

  5. 【每天play】为了学好python需要从脚下做起,Linux基础-用户管理 P70-80

    即使今天稍微乱了一点,想早回家,不能中断练习.所以吃粒奶酪条,接着打开页面.先复习上次的最后1P视频,也就是新建用户的熟悉练习. 03.用户管理 提示:创建用户 / 删除用户 / 修改其他用户密码 的 ...

  6. 视频教程-OmniPlan项目管理就该这样学-研发管理

    OmniPlan项目管理就该这样学 Adobe平面设计与影视剪辑专家讲师.微软Office办公软件专家讲师.资深IT图书作者/策划人/出版人.深度/终身学习研究与实践者.Python全栈工程师/Web ...

  7. Linux 基本管理命令(系统管理,用户管理,进程管理)

    目录 系统管理 man 介绍 语法 man常用的参数 shutdown(关机命令) shutdown文档 语法 参数说明 实例 reboot 介绍 语法 参数说明 实例 sudo命令 介绍 语法 参数 ...

  8. Oracle数据库 登录命令 用户管理 建表 修改字段 数据类型 约束 增删改查

    什么是数据库? 存储数据的仓库 优点: 1.可存储大量数据 2.方便检索 3.保持数据的一致性.完整性 4.安全,可共享 解决的问题? 数据的持久化(把数据写到磁盘中) 安装看安装文档: 口令管理: ...

  9. 【Linux用户管理】

    目录 前言 用户管理的基本命令 前言 Linux是一个多用户.多任务的操作系统,具有很好的稳定性与安全性,在linux系统中,root用户具有最高的权限,但该身份不当使用会带来一些不必要的麻烦和潜在的 ...

最新文章

  1. 为电商而生的知识图谱,如何感应用户需求?
  2. codeigniter在nginx安装配置及URL重写
  3. code block怎样导入整个文件夹_一文就能get!带你了解Python模块导入的真相,拿走不谢...
  4. python计算每月工资多少钱_[Python]CCF——工资计算(201612-2)
  5. php网站xml链接,xml图像超链接的制作代码
  6. Tree Constructer
  7. java 字谜_计算字谜的出现次数
  8. HDU 1711 Number Sequence(KMP模板)
  9. 算法总结之欧拉函数中国剩余定理
  10. XSSFWorkbook与HSSFWorkbook的区别
  11. linux拨号上网icp,如何用 Linux 拨号上网
  12. Activity——思维导图
  13. 石子合并简化版(区间DP)
  14. NFC:Arduino、Android与PhoneGap近场通信
  15. CDMA2000中的Walsh码,PN码,短码序列的初相位偏置(PN OFFSET)之間的差別與關係(1)
  16. mapguide使用介绍
  17. Git 的下载、安装、本地环境配置教程
  18. 分享,iOS国家手机区号代码.plist
  19. 业务系统安全工程在阿里的实践|阿里巴巴DevOps实践指南
  20. 如何使用Epicor Functions(一)

热门文章

  1. ACL国际计算机语言协会2019,我校夏睿团队获得自然语言处理国际顶级会议ACL2019杰出论文奖...
  2. 韶音AS800骨传导参数怎么样,跟南卡RunnerPro2比那个更好用?
  3. guava retry使用
  4. 彻底搞懂虚拟内存,虚拟地址,虚拟地址空间
  5. php yii框架优点,yii框架有什么优势
  6. 【MyBatis】分页插件pageHelper的简单使用
  7. R语言学习笔记--《R语言实战》
  8. 数字化诗人:这可能是第一位用算法写诗的诺贝尔文学奖得主
  9. 电脑错误错误0x80070422怎么解决?
  10. pandas二、索引、选择以及赋值