Linux 账号和权限管理

管理用户账号和组账号

与 Wndows 操作系统相比,Linux操作系统中的用户账号和组账号的作用在本质上是一样的,同样都是基于用户身份来控制对资源的访问,只不过在表现形式及个别细节方面存在一些差异。

用户账号和组账号概述

与 Windows 操作系统一样,Linux 操作系统的每一个用户账号也都有唯一的用户名与密码。用户在登录时输入正确的用户名和密码,就能够进入操作系统和自己的主目录。本小
节将介绍 Linux 操作系统中用户账号和组账号的相关概念。

1.用户账号

超级用户:root用户是 Linux操作系统中默认的超级用户账号,对本主机拥有至高无上的权限,类似于 Windows 操作系统中的 Administrator用户。只有当进行系统管理、维护任务时,才建议使用root用户登录系统,日常事务处理建议只使用普通用户账号。
普通用户:普通用户账号需要由root用户或其他管理员用户创建,拥有的权限受到一定限制,一般只在用户自己的宿主目录中拥有完整权限。
程序用户:在安装 Linux操作系统及部分应用程序时,会添加一些特定的低权限用户账号,这些用户一般不允许登录到系统,而仅用于维持系统或某个程序的正常运行,如 bin、daemon、ftp、mail 等。

2.组账号

基于某种特定联系(如都需要访问 FTP 服务)将多个用户集合在一起,即构成一个用户组,表示该组内所有用户的账号称为组账号。每一个用户账号至少属于一个组,这个组称为该用户的基本组(或私有组);若该用户同时还包含在其他的组中,则这些组称为该用户的附加组(或公共组)。例如,用户zhangsan 是技术部的员工,与部门内的其他同事同属于基本组tech,后来因工作安排需要,公司将 zhangsan 加入邮件管理员组 mailadm,则此时用户 zhangsan 同时属于 tech、mailadm 组,tech 组是其基本组账号,而 mailadm 组是其附加组账号。

3.UID和GID号

Linux 操作系统中的每一个用户账号都有一个数字形式的身份标记,称为 UID(UserIDentity,用户标识号),对于操作系统核心来说,UID 是区分用户的基本依据,原则上每个用户的 UID 号应该是唯一的。root 用户账号的 UID 号为固定值 0,而程序用户账号的 UID号默认为 1499,50060000 的UID 号默认分配给普通用户使用。与 UID 类似,每一个组账号也有一个数字形式的身份标记,称为GID(Group IDentity,组标识号)。root 组账号的 GID 号为固定值 0,而程序组账号的 GID 号默认为1到499,500到60000 的 GID 号默认分配给普通组使用。

用户账号管理

Linux 操作系统中的用户账号、密码等信息均保存在相应的配置文件中,直接修改这些文件或者使用用户管理命令都可以对用户账号进行管理。

1.用户账号文件
与用户账号相关的配置文件主要有两个,分别是/etc/passwd 和/etc/shadow。前者用于保存用户名称、宿主目录、登录 Shel 等基本信息,后者用于保存用户的密码、账号有效期
等信息。在这两个配置文件中,每一行对应一个用户账号,不同的配置项之间使用":(冒号)进行分隔。
(1)passwd文件中的配置格式

操作系统中所有用户的账号基本信息都保存在/etc/passwd 文件中,该文件是文本文件,任何用户都可以读取文件中的内容。例如,以下操作可分别查看/etc/passwd 文件开头、末尾的几行内容。
在这里插入图片描述
在 passwd 文件开头的部分,包括超级用户root 及各程序用户的账号信息,系统中新增加的用户账号信息将保存到 passwd 文件的末尾。passwd 文件的每一行内容中包含了七个用“:“(冒号)分隔的配置字段,从左到右各配置字段的含义分别如下所述。
第1字段:用户账号的名称,也是登录系统时使用的识别名称。
第2字段:经过加密的用户密码字串,或者密码占位符“x”
第3 字段:用户账号的 UID 号。
第4字段:所属基本组账号的 GID 号。
第5字段:用户全名,可填写与用户相关的说明信息。
第6字段:宿主目录,即该用户登录后所在的默认工作目录。
第7字段:登录 She等信息,用户完成登录后使用的Shell。

(2)shadow文件中的配置行格式

shadow 文件又被称为“影子文件”,其中保存有各用户账号的密码信息,因此对 shadow文件的访问应该进行严格限制。默认只有root 用户能够读取 shadow 文件中的内容,且不允许直接编辑该文件中的内容。例如,以下操作可分别查看/etc/shadow 文件开头、末尾的几行内容。
在这里插入图片描述
shadow 文件的每一行内容中包含了九个用":”(冒号)分隔的配置字段,从左到右各配置字段的含义分别如下所述。
第1字段:用户账号名称。
第 2 字段:使用 SHA-512(哈希算法中的一种)加密的密码字串信息,当为"““或”!!"时表示此用户不能登录到系统。若该字段内容为空,则该用户无须密码即可登录系统。
第3字段:上次修改密码的时间,表示从 1970年 01月01日算起到最近一次修改密码时间隔的天数。
第4字段:密码的最短有效天数,自本次修改密码后,必须至少经过该天数才能再次修改密码。默认值为 0,表示不进行限制。
第5字段:密码的最长有效天数,自本次修改密码后,经过该天数以后必须再次修改密码。默认值为 99999,表示不进行限制。
第6字段:提前多少天警告用户密码将过期,默认值为7.
第7字段:在密码过期之后多少天内禁用此用户。
第8字段:账号失效时间,此字段指定了用户作废的天数(从1970年01月01日起计算),默认值为空,表示账号永久可用。
第9字段:保留字段,目前没有特定用途。

2.添加,修改,删除用户账号
(1)useradd命令——添加用户账号

useradd 命令用于添加用户账号,其基本的命令格式如下:在这里插入图片描述
最简单的用法是,不添加任何选项,只使用用户名作为useradd命令的参数,按系统默认配置建立指定的用户账号。在 CentOS 系统中,使用 useradd 命令添加用户账号时主要完成以下几项任务。
》在/etc/passwd 文件和/etc/shadow 文件的末尾增加该用户账号的记录。
》若未明确指定用户的宿主目录,则在/home 目录下自动创建与该用户账号同名的宿主目录,并在该目录中建立用户的各种初始配置文件。
》若没有明确指定用户所属的组,则自动创建与该用户账号同名的基本组账号,组账号的记录信息将保存到/etc/group 和/etc/gshadow 文件中。
如果结合 useradd 命令的各种选项,可以在添加用户账号的同时对 UID 号、宿主目录、登录 Shell 等相关属性进行指定。以下列出了 useradd 命令中用于设置账号属性的几个常见选项。
-u:指定用户的 UID 号,要求该 UID 号码未被其他用户使用。
-d:指定用户的宿主目录位置(当与-M 一起使用时,不生效)。
-e:指定用户的账户失效时间,可使用 YYYY-MM-DD 的日期格式。
-g:指定用户的基本组名(或使用 GID 号)。
-G:指定用户的附加组名(或使用 GID 号)。
-M:不建立宿主目录,即使/etc/ogin.defs 系统配置中已设定要建立宿主目录。
-s:指定用户的登录 Shell。

(2)passwd命令——为用户账号设置密码

通过 useradd 命令新增用户账号以后,还需要为其设置一个密码才可以正常使用。使用 passwd 命令可以设置或修改密码,root用户有权管理其他账号的密码(指定账号名称作为参数即可)。例如,执行"passwd bdqn zeng"命令可为 bdqn zeng 账号设置登录密码,要根据提示重复输入两次,具体操作如下:
在这里插入图片描述
对于普通用户自行设置的密码,要求具有一定的复杂性(如不要直接使用英文单词,长度保持在六位以上),否则系统可能拒绝进行设置。普通用户设置自身的登录密码时,需要先输入旧的密码进行验证。例如,以下操作是用户 bdqn zeng 更改登录密码的过程。在这里插入图片描述
使用 passwd 命令除了可以修改账号的密码以外,还能够对用户账号进行锁定、解锁,也可以将用户的密码设置为空(无须密码即可登录)。与上述功能相关的几个选项如下所示。
-d:清空指定用户的密码,仅使用用户名即可登录系统。
-l:锁定用户账户。
-S查看用户账户的状态(是否被锁定)。
-u:解锁用户账户。
通过 passwd 命令锁定的用户账号,将无法再登录系统(shadow 文件中的对应密码字串前将添加"!!"字符),只能由管理员来解除锁定。例如,以下操作分别用于锁定、解锁用户账号 bdqn zeng.
在这里插入图片描述

(3)usermod命令——修改用户账号属性

对于操作系统中已经存在的用户账号,可以使用usermod 命令重新设置各种属性。usermod 命令同样需要指定账号名称作为参数。usermod 命令中较常使用的几个选项如下所述。
-u:修改用户的 UID 号。
-d:修改用户的宿主目录位置。
-e:修改用户的账户失效时间,可使用YYYY-MM-DD 的日期格式。
-g:修改用户的基本组名(或使用 GID 号)。
-G:修改用户的附加组名(或使用 GID 号)。
-s:指定用户的登录 Shell。
-l:更改用户账号的登录名称(Login Name)。
-L:锁定用户账户。
-U:解锁用户账户。
使用 usermod 命令时,其大部分的选项与 useradd 命令的选项是对应的,作用也相似。除此以外,还有两个选项"-L"和“-U",分别用于锁定、解锁用户账号。这两个选项与 passwd
命令的"-l"“和”-u"选项的作用基本相同,但是存在大小写区别。

(4)userdel命令——删除用户账号

当操作系统中的某个用户账号不再使用时(如该员工已经从公司离职等情况),可以使用 userdel命令将该用户账号删除。使用该命令也需要指定账号名称作为参数,结合"-"选项可同时删除宿主目录。例如,执行以下操作将删除名bdqn_zeng 的用户账号,同时删除其宿主目录/home/bdqn_zeng。
在这里插入图片描述在这里插入图片描述

3.用户账号的初始配置文件

添加一个新的用户账号后,useradd 命令会在该用户的宿主目录中建立一些初始配置文件。这些文件来自于账号模板目录/etc/skel,基本上都是隐藏文件,较常用的初始配置文件包括".bash logout"、“.bash profile"和”.bashrc"。其中,“.bash profile"文件中的命令将在该用户每次登录时被执行:“.bashrc"文件中的命令会在每次加载”/bin/Bash"程序(当然也包括登录系统)时执行;而".bash logout"文件中的命令将在用户每次退出登录时执行。理解这些文件的作用,可以方便我们安排一些自动运行的后台管理任务。
在“.bashrc"等文件中,可以添加用户自己设置的可执行语句(如 Linux 命令行、脚本控制语句等),以便自动完成相应的任务。如果希望为所有用户添加登录后自动运行的命令程序、自动设置变量等,可以直接修改/etc 目录下的类似文件,如/etc/bashrc 文件、/etc/profile文件。例如,执行以下操作可以为所有用户自动设置 myls 命令别名。在这里插入图片描述

组账号管理

前面学习了管理 Lnux 操作系统中用户账号的相关命令,接下来继续学习组账号管理的相关命令。组账号管理命令的使用相对较少,主要包括 groupadd、groupdel、gpasswd 等
对于用户账号来说,对应的组账号可分为基本组和附加组两种类型。每一个用户账号可以是多个组账号的成员,但是其基本组账号只有一个。在/etc/passwd 文件中第4字段记录的即为该用户的基本组 GID号。而对于该用户还属于哪些附加组,则需要在对应组账号的文件中体现。

1.组账号文件

与组账号相关的配置文件也有两个,分别是/etc/group 和/etc/gshadow。前者用于保存组账号名称、GID号、组成员等基本信息,后者用于保存组账号的加密密码字串等信息(但是很少使用到)。某一个组账号包含哪些用户成员,将会在group 文件内最后一个字段中体现出来(基本组对应的用户账号默认可能不会列出),多个组成员之间使用",”(逗号)分隔。例如,执行以下操作可分别获知root组包括哪些用户成员、哪些组中包含 root 用户
在这里插入图片描述

2.添加,管理,删除组账号
(1)groupadd命令——添加组账号

使用 groupadd 命令可以添加一个组账号,需要指定 GID 号时,可以使用“-g"选项。例如,执行如下的“groupadd class01"命令可以添加一个名为 class01 的组账号。
在这里插入图片描述

(2)gpasswd命令——添加,设置,删除组成员

gpasswd 命令本来是用于设置组账号的密码,但是该功能极少使用,实际上该命令更多地用来管理组账号的用户成员。需要添加、删除成员用户时,可分别使用“-a"和"-d"选项。例如,以下操作分别用于向root组中添加成员用户 mike、删除成员用户 webmaster。
在这里插入图片描述
如果需要同时指定组账号的所有成员用户,可以使用"-M"选项。例如,以下操作可以指定组账号 adm 中的成员为root、adm、daemon、webmaster、mike 这五个用户。
在这里插入图片描述

(3)groupdel命令——删除组账号

当系统中的某个组账号已经不再使用时,可以使用 groupdel 命令将该组账号删除。而添加指定的组账号名称作为参数。例如,若要删除组账号 class01,可以执行以下操作。
在这里插入图片描述

查询账号信息

在用户管理工作中,虽然直接查看用户账号、组账号的配置文件也可以查询相关信息但是并不是很直观。在 Linux 操作系统中,还可以使用几个常用的查询命令工具,如id、groups、finger、users 等,本小节中主要介绍几个查询命令的使用。

1.groups命令——查询用户账号所属的组

使用 groups 命令可以查看指定的用户账号属于哪些组。例如,以下操作分别显示当前用户(root)和 daemon 用户所属的组账号信息。在这里插入图片描述

2.id——查询用户账号的身份标识

使用id 命令可以快速査看指定用户账号的 UID、GID 等标识信息。例如,执行如下的"idroot"命令可以査看 root 账号的用户 |D 号、组 ID 号,以及所在的附加组 ID 号。在输出结果中,gid 和 groups 部分第一个组账号对应该用户的基本组,groups 部分的其他组账号为该用户的附加组。
在这里插入图片描述

3.finger 命令——查询用户账号的登录属性

使用 finger 命令可以查询指定的用户账号的登录属性等详细信息,包括登录名称、完整名称、宿主目录、登录 Shell 等。例如,执行如下的“finger root"命令可以显示 root 账号的详细信息。若系统中没有该命令,可以从系统光盘镜像的Packages日录下找到finger-0.17-52.el7.x86_64.rpm 进行安装。
在这里插入图片描述

4.w命令——查询当前主机的用户登录情况

使用w命令可以查询当前主机中的用户登录情况,列出登录账号名称、所在终端、登录时间、来源地点等信息,具体操作如下:在这里插入图片描述

管理目录和文件的属性

在 Linux 文件系统的安全模型中,系统中的文件(或目录)具有两个属性:访问权限和文件所有者,简称权限和归属。其中,访问权限包括读取、写入、可执行三种基本类型,归属包括属主(拥有该文件的用户账号)、属组(拥有该文件的组账号)。Linux 操作系统根据文件或目录的访问权限、归属来对用户访问数据的过程进行控制。
下面讲解的内容中,查看或更改权限、归属的命令对目录和文件同样适用。需要注意的是,由于root用户是系统的超级用户,拥有完全的管理权限,因此在练习相关命令操作时建议不要以 root 用户作为限制对象,否则可能看不到效果。

查看目录和文件的属性

使用带"-!“选项的ls 命令时,将以长格式显示文件或目录的详细信息,其中包括该文件的权限和归属等参数。例如,执行以下操作可以列出/etc 目录和/etc/passwd 文件的详细属性。
在这里插入图片描述
在上述输出信息中,第 3、4字段的数据分别表示该文件(或目录)的属主、属组,上例中/etc 目录和/etc/passwd 文件都属于root 用户、root组:而第1字段的数据表示该文件(或目录)的访问权限,如“drwxr-xr-x"和“-rw-r- -r- -”。权限字段由四部分组成,各自的含义如下所述。
第1个字符:表示该文件的类型,可以是d(目录)、b(块设备文件)、c(字符设备文件)、“”(普通文件)、字母”"(链接文件)等。
第2~4个字符:表示该文件的属主用户(User)对该文件的访问权限。
第 5~7 个字符:表示该文件的属组内各成员用户(Group)对该文件的访问权限。
第 8~10 个字符:表示其他任何用户(Other)对该文件的访问权限。
第 11 个字符:这里的“."与 SELinux 有关,目前不必关注。

在表示属主、属组内用户或其他用户对该文件的访问权限时,主要使用了三种不同的权限字符:r、w、x,分别表示可读、可写、可执行。
权限字符r、w、x用于文件表示可读、可写、可执行,但是对于目录来说,它们的具体含义是存在一些差别的。在这里插入图片描述
若用户在对要访问的文件或目录中不具备相应的权限,则操作将被拒绝。例如,当普通用户 mike 尝试査看/etc/shadow 文件时,将会提示"Permission denied(因权限不足而被拒绝访问)”,具体操作如下:在这里插入图片描述

设置目录和文件的权限

需要设置文件或者目录的权限时,主要通过 chmod命令进行。在设置针对每一类用户的访问权限时,可以采用两种形式的权限表示方法:字符形式和数字形式。、w、x权限字符可分别表示为八进制数字 4、2、1,表示一个权限组合时需要将数字进行累加。例如,"rwx采用累加数字形式表示成"7”,“r-x”采用累加数字形式表示成“5”;而“rwxr-xr-x"由三个权限段组成,因此可以表示成“755”,“rw-r–r–“可以表示成"644”。

使用 chmod 命令设置文件或目录的权限时,基本的命令格式如下:在这里插入图片描述
或者
在这里插入图片描述
上述格式中,字符组合“[ugoa…][+ - =][rwx]“或数字组合"nnn"的形式表示要设置的权限模式。其中,“nnn"为需要设置的具体权限值,如“755””644"等:而“[ugoa…][+ - =][rwx]"的形式中,三个组成部分的含义及用法如下所述。
》“ugoa"表示该权限设置所针对的用户类别。"u"代表文件属主,"g"代表文件属组内的用户,“o”代表其他任何用户,“a"代表所有用户(u、g、o的总和)。
》“±=“表示设置权限的操作动作。“+”代表增加相应权限,”-“代表减少相应权限,”=”代表仅设置对应的权限。
》“nwx"是权限的字符组合形式,也可以拆分使用,如“r”“rx"等。
下面的操作将 mkdir 命令程序复制为 mymkdir,并通过去除 mymkdir 文件的"x”权限来验证可执行权限的变化。在这里插入图片描述

设置目录和文件的归属

需要设置文件或者目录的归属时,主要通过 chown 命令进行。可以只设置属主或属组,也可以同时设置属主、属组。使用 chown 命令的基本格式如下:
在这里插入图片描述
同时设置属主、属组时,用户名和组名之间用":“进行分隔。若只设置属组,则需使用”:组名”的形式。
如果只需要设置目录或文件的属主,直接以用户名表示归属即可,递归修改目录归属同样可以使用"-R”选项。例如,执行以下操作可将var/ftp/pub/日录的属主由root 改为ftp(调整后用户 tp 将拥有“rwx”的权限)。
在这里插入图片描述
如果同时设置目录和文件的属主、属组,则需要用到分隔符":"。例如,执行以下操作可将 mymkdir 文件的属主更改为 daemon、属组更改为 wheel。
在这里插入图片描述

在 Linux 操作系统中,设置文件访问权限、归属是目录和文件管理常见的工作内容,很多网络服务或应用程序的安全强化工作实际上都包括了文件权限和归属的修改。因此,在具体工作中应慎重进行,不当的权限设置可能会导致系统故障,甚至带来一些安全隐 患。

设置目录和文件的默认权限

现在我们知道了如何改变一个文件或目录的属性了,不过,你知道当你新建一个新的文件或目录时,它的默认权限是什么吗?这个是与umask有关。
umask 就是默认指定目前用户在新建文件或目录时的权限默认值。执行“umask 022即可以设置当前用户的默认权限。直接执行“umask"命令就是查看当前系统的默认权限。需要注意的是,umask 的分数指的是“该默认值需要减掉的权限"。因此「、w、x分别是 4、2、1,如果执行“umask 022"代表 group 和 other 被拿掉了权限"2",也就是被拿掉了“写”权限。
如果执行命令“umask 000",代表文件的默认权限是“777”在这里插入图片描述

  • 17
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值