百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 优雅编程 > 正文

linux用户管理(Linux用户管理)

sinye56 2024-11-17 01:34 2 浏览 0 评论

UNIX 本身是一个多人多任务的操作系统,也就是说 UNIX 可以在同一时间提供给很多人使用;而且每一个用户同时间又可以执行多项工作。为了避免不合法的用户滥用 UNIX 的系统资源,于是 UNIX 一开始就发展出账号的机制,以便让 UNIX 系统能够辨识用户的身份,以及决定用户在 UNIX 系统上的权限。而Linux 又是一个与类Unix操作系统,因此 Linux 也会提供账号的机制。本章我们将介绍 Linux 的账号概念,以及如何管理各种账号数据的技术。


课程目标:

  • 能够说出用户和组的概念
  • 能够说出如何管理用户和组
  • 能够说出如何进行密码管理
  • 能够说出日常使用的相关工具

==知识点==

  • 用户和组的相关概念
  • 用户账号管理
  • 组账号管理
  • 密码管理
  • 相关工具

一、用户和组的相关概念


账号的概念和分类

账号:是一种用来记录单个用户或是多个用户的数据。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:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x: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:x:0:
bin:x:1:
daemon:x: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:$6$T52Xvk7zu84.tDXp$nfXcm6LTfUx.ZviEo7Eq1bPjDO...::0:99999:7:::
bin:*:18027:0:99999:7:::

/etc/shadow文件的格式与/etc/passwd类似,也是每一行代表一个账号的数据,使用:进行分隔

USERNAME:PASSWORD:LAST_CHANGED:MIN_DAYS: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

章总结

用户和组的概念及分类

用户账号管理

组账号管理

密码管理

相关工具

重点:账号的概念和分类,账号管理相关的配置文件和命令,其它与账号管理相关的工具

难点:区分开不同类型账号的功能,记住不同文件的作用及含义,熟练使用各种管理命令

相关推荐

Linux在线安装JDK1.8

首先在服务器pingwww.baidu.com查看是否可以连网然后就可以在线下载一、下载安装JDK1.81、在下载安装的同时做好一些准备工作...

Linux安装JDK,超详细

1、了解RPMRPM是Red-HatPackageManager(RPM软件包管理器)的缩写,这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的,现在包括OpenLinux...

Linux安装jdk1.8(超级详细)

前言最近刚购买了一台阿里云的服务器准备要搭建一个网站,正好将网站的一个完整搭建过程分享给大家!#一、下载jdk1.8首先我们需要去下载linux版本的jdk1.8安装包,我们有两种方式去下载安装...

Linux系统安装JDK教程

下载jdk-8u151-linux-x64.tar.gz下载地址:https://www.oracle.com/technetwork/java/javase/downloads/index.ht...

干货|JDK下载安装与环境变量配置图文教程「超详细」

1.JDK介绍1.1什么是JDK?SUN公司提供了一套Java开发环境,简称JDK(JavaDevelopmentKit),它是整个Java的核心,其中包括Java编译器、Java运行工具、Jav...

Linux下安装jdk1.8

一、安装环境操作系统:CentOSLinuxrelease7.6.1810(Core)JDK版本:1.8二、安装步骤1.下载安装包...

Linux上安装JDK

以CentOS为例。检查是否已安装过jdk。yumlist--installed|grepjdk或者...

Linux系统的一些常用目录以及介绍

根目录(/):“/”目录也称为根目录,位于Linux文件系统目录结构的顶层。在很多系统中,“/”目录是系统中的唯一分区。如果还有其他分区,必须挂载到“/”目录下某个位置。整个目录结构呈树形结构,因此也...

Linux系统目录结构

一、系统目录结构几乎所有的计算机操作系统都是使用目录结构组织文件。具体来说就是在一个目录中存放子目录和文件,而在子目录中又会进一步存放子目录和文件,以此类推形成一个树状的文件结构,由于其结构很像一棵树...

Linux文件查找

在Linux下通常find不很常用的,因为速度慢(find是直接查找硬盘),通常我们都是先使用whereis或者是locate来检查,如果真的找不到了,才以find来搜寻。为什么...

嵌入式linux基本操作之查找文件

对于很多初学者来说都习惯用windows操作系统,对于这个系统来说查找一个文件简直不在话下。而学习嵌入式开发行业之后,发现所用到的是嵌入式Linux操作系统,本想着跟windows类似,结果在操作的时...

linux系统查看软件安装目录的方法

linux系统下怎么查看软件安装的目录?方法1:whereis软件名以查询nginx为例子...

Linux下如何对目录中的文件进行统计

统计目录中的文件数量...

Linux常见文件目录管理命令

touch用于创建空白文件touch文件名称mkdir用于创建空白目录还可以通过参数-p创建递归的目录...

Linux常用查找文件方法总结

一、前言Linux系统提供了多种查找文件的命令,而且每种查找命令都具有其独特的优势,下面详细总结一下常用的几个Linux查找命令。二、which命令查找类型:二进制文件;...

取消回复欢迎 发表评论: