Linux安全实践-Linux Hacking 课件 第3章 用户与权限_第1页
Linux安全实践-Linux Hacking 课件 第3章 用户与权限_第2页
Linux安全实践-Linux Hacking 课件 第3章 用户与权限_第3页
Linux安全实践-Linux Hacking 课件 第3章 用户与权限_第4页
Linux安全实践-Linux Hacking 课件 第3章 用户与权限_第5页
已阅读5页,还剩66页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第3章用户与权限3.1用户管理3.2权限管理3.3特殊权限3.4细粒度访问控制(ACL)3.5SUID提权

3.1用户管理

3.1.1用户分类

Linux系统使用用户ID号(UID)来管理不同类别的用户,使用组ID号(GID)来管理不同类别的用户组。对于用户来说更多的是易于理解和识别的名字字符串,但操作系统关心的不是用户名,而是UID。Linux系统在创建用户或用户组时会分配一个标识值给该用户,该标识值为一个0~60000的整数,用于Linux系统对用户进行识别。根据UID的取值范围,可以将用户分为超级用户root、系统用户和普通用户三类,如图3-1所示。图3-1用户分类

3.1.2用户管理文件

1./etc/passwd文件

Linux系统的用户信息存放在“/etc/passwd”文件中。文件所有者是root用户,只有root用户可以对其内容进行修改,对普通用户和其他用户来说,该文件仅是可读的。

从上面的内容可以看出,“/etc/passwd”文件的每一行对应一个用户,且每行用冒号(:)作为分隔符将一行内容分为7个字段,具体格式如图3-2所示。图3-2用户信息字段

每个字段的具体含义如下:

(1)用户名:创建用户时,用户输入的用户名字,是一个字符串。

(2)口令:即密码,在该字段的内容统一为x。因为以前的Linux系统是用该字段来存储明文密码的,考虑到安全性的问题,现在真正的密码存在于“/etc/shadow”文件中,且以哈希(Hash)值的形式存在。因此,此字段在这里仅仅作为一个标识。

(3)UID:Linux系统分配给该用户的ID值。它的取值范围为0~60000,其中0为root用户使用,1~499为系统用户使用,500~60000为普通用户使用。

(4)GID:Linux系统中用户组的ID值。每创建一个新的用户时,若没有手工为其指定一个已经存在的用户组,那么Linux系统会自动为其创建一个与用户名同名的用户组名,且使用与UID相同的GID值进行标识。

(5)UID信息:该字段中可以写入对该用户的一些注释性信息,如住址、电话、邮箱等信息。

(6)主目录:也称为家目录,是用户登录系统后的默认工作目录,通常都是在“/home”目录下创建的以用户名作为家目录名。

(7)登录shell:该字段的设置决定用户登录系统后使用的shell环境,包括能否正常登录系统都是通过该字段来设置。

2./etc/shadow文件

用户的口令信息存放在“/etc/shadow”文件中,其存储格式采用哈希值的形式。该文件仅root用户可读、可写,普通用户和其他用户没有读写权限。下面使用cat命令来查看文件的内容(仅列出一部分):

从上面的内容可以看出,“/etc/shadow”文件以行为单位描述一个用户的信息,且每行用冒号分为8个字段,具体格式如图3-3所示。图3-3用户口令信息字段

每个字段的具体含义如下:

(1)用户名:用户登录时的账户名称。

(2)加密口令:若该字段为空,则表示该用户未设置密码;若该字段为“*”,表示账户被锁定;若该字段为“!”,表示密码被锁定,感叹号之后为原有密码;若以$6$开头表示使用SHA-512加密;若以$1$开头表示用MD5加密;若以$2$开头表示使用Blowfish加密;若以$5$开头表示使用SHA-256加密;若以$y$开头表示用yescrypt加密算法。

(3)最后修改时间:最近一次修改密码的时间,时间以天为单位,从1970年1月1日起计算。0表示用户下次登录需要修改密码,空串表示禁用该功能。

(4)最小时间间隔:表示用户修改完密码之后,至少要等待多长时间才允许再次修改密码,空串或0表示没有限制。

(5)最大时间间隔:保持当前密码有效的最长时间。到期之后,用户在登录时会被要求更改密码,但用户仍然可以通过当前密码登录。空串表示没有限制。如果最大时间间隔小于最小时间间隔,则用户将无法修改密码。

(6)警告时间:密码过期之前,发出警告的天数。0或空串表示无警告时间。

(7)闲置时间:密码过期之后,仍然接受改密码的最长天数。超过该天数,用户将无法通过密码登录。空串表示无限制。

(8)账户失效时间:账户的有效期,从1970年1月1日算起。空串表示永不过期。

3.1.3用户管理

1.创建用户

在Linux中添加用户可以通过useradd或adduser命令来实现。虽然都能完成用户创建,但在使用上还是有所区别的。

1)useradd命令的使用格式

useradd命令的使用格式如下:

useradd[options]login

使用useradd命令的常用配置选项如下:

(1)-ggroup_name:指定用户所属的用户组。注意,用户组名必须已经存在于系统中。

(2)-sshell:指定用户登录shell,若不指定,则根据“/etc/default/useradd”的预设值设置。

(3)-uuid:手动设置UID值,而且必须是唯一的。

(4)-dhome_dir:指定用户主目录。

(5)-r:建立系统用户,创建后的用户UID会比“/etc/login.defs”文件中定义的UID_MIN小。默认此种方式创建的用户UID取值范围为100~999,且不会为新用户创建主目录。

(6)-D:查看用户环境变量默认配置。

(7)-ppasswd:指定用户的密码。注意,与上面几条选项不同,需将用户名写在参数前。例如,使用useradd命令创建一个用户“Tom”,指定该用户的UID为1500,主目录为“/home/tomcat”(此处首先创建该目录):

2)adduser命令的使用格式

adduser命令的使用格式如下:

adduser[options]user

adduser命令实际上是一个Perl脚本文件。在添加用户时如果不加参数选项,则会进入一个交互式的命令行,根据提示填写相关信息,若不需要填写时,可以直接按Enter

键。

adduser命令的常用配置选项如下:

(1)--uid:指定新用户的UID。

(2)--gid:指定新用户组的GID。

(3)--home:指定用户的主目录。

(4)--shell:指定用户默认的登录shell。

(5)--disabled-login:不为新用户设置密码,意味着用户不能登录系统,除非为他设置密码。

(6)--disabled-password:用户不能使用密码认证,但可以通过其他方式认证。

2.查看用户信息

查看用户相关信息的命令主要有以下4种。

(1)id:显示用户的ID相关信息。常用参数有以下几种。

•-g:显示用户组GID。

•-G:显示所有的GID号,包括附加组的GID。

•-u:显示用户UID。

3.切换用户

用户间的切换主要使用su命令。其具体使用格式如下:

su[options][user]

例如,从ubuntu用户切换到testuser用户,切换前后

在使用su命令时应注意以下事项:

(1)“su用户名”即切换到对应用户后仍旧使用原来用户的环境变量。

(2)“su-用户名”即切换到对应用户后使用切换后用户的环境变量,这也是标准规范的操作方法。

(3)普通用户使用“su-用户名”即切换到其他用户时需要输入对应用户的密码才能完成切换。

(4)root用户使用“su-用户名”即切换到其他用户时不需要输入密码,可直接完成切换。

(5)如果仅希望在某用户下执行命令,而不直接切换到该用户时,可使用“su-用户名-c待执行命令”来实现。

4.sudo特权

在前面部分的操作示例中,细心的读者会注意到sudo的身影。通常情况下,对于普通用户来说,不可避免的会碰见需要使用某些只有root用户才能够执行的命令。但是root用户的权限过大,若将其密码告知普通用户可能会导致某些不安全问题的产生,这时候就需要使用sudo命令来完成这些操作。

sudo命令的基本使用格式如下:

sudo[options]command

sudo命令的常用配置选项有:

(1)-l:列出当前用户可以执行的命令。

(2)-b:在后台执行指定命令。

(3)-u:以指定用户身份执行命令。

sudo命令的配置文件为“/etc/sudoers”,且该文件只有超级用户root才可以修改它,并且对sudo的配置文件不建议用户直接使用vim等编辑器修改,而是建议使用visudo命令来编辑。使用visudo命令有以下两个原因:

(1)能够防止两个用户同时修改它。

(2)能进行一定的语法检查,即使只有一个超级用户root在修改,也最好使用visudo来检查修改后的配置语法是否正确。

若root用户登录,在命令行中直接输入visudo则会打开“/etc/sudoers”文件,具体提升权限配置说明如图3-4所示,图中的用户“hujianwei”可以在本机所在的系统中切换至所有用户角色,并执行所有的命令。图3-4sudoers配置说明

3.1.4修改用户属性

1.修改用户密码

passwd命令可用来修改用户的密码以及用户登录的相关设置。root用户可使用此命令修改Linux系统中任何用户的密码,但普通用户只可以更改自己的密码。其具体使用格式如下:

passwd[options][username]

passwd命令的常用配置选项如下:

(1)-a:显示所有用户的状态,需要和-S选项一起使用。

(2)-S:显示用户状态信息。

3)-d:清除用户密码。

(4)-e:设置用户密码立即过期。

(5)-i:设置用户密码过期后指定天数禁用该账户。

(6)-l:锁定用户,在用户密码前加入一个感叹号。

(7)-u:解锁用户,解锁之后用户能够正常登录。

2.修改用户信息

Linux系统中使用usermod命令来修改系统现有用户的相关信息。其具体使用格式如下:

usermod[options]username

usermod命令的常用配置选项如下:

(1)-a:将用户加入到指定的附加组,只能和-G一起使用。

(2)-c:修改用户注释字段的值。

(3)-d:指定用户主目录。

(4)-f:密码过期后,账户被彻底禁用之前的天数。

(5)-g:修改用户的主用户组。

(6)-G:指定用户的附加用户组。

(7)-s:修改用户的默认登录shell。

(8)-u:指定用户新的UID。

3.修改登录shell

在Linux系统中,当用户成功登录时,系统会为所登录的用户指定一个登录shell,那么该登录用户的所有后续操作都是以该shell为默认环境变量进行的。关于登录shell的设置,在默认情况下,Linux系统为普通用户分配的都是/bin/bash,但若需要修改该shell,则可以使用usermod命令和chsh命令。另外,也可以使用useradd的-s选项在创建用户时直接指定对应的登录shell。

3.1.5用户登录过程分析

Linux系统中的用户账户在创建时,会从“/etc/skel”目录下复制一份默认的环境变量到其主目录中,给新创建的用户设置对应的环境变量。了解用户登录过程中环境变量的设置流程,有助于使用者更好地管理Linux系统,而不会出现由于在众多文件中修改后导致配置混乱的局面。

用户在登录时,这些环境变量的具体设置顺序如下:

(1)用户通过远程SSH或图形化界面登录。

(2)读取“/etc/profile”文件中的环境变量设置。

(3)读取“/etc/profile.d/*”目录下的环境变量设置。

(4)依次选择读取“~/.bash_profile”“~/.bash_login”“~/.profile”三个文件之一

的环境变量设置。

(5)读取“~/.bashrc”中的环境变量设置。

(6)读取“/etc/bash.bashrc”文件中的环境变量设置。

3.1.6用户组

用户组是具有相同特征用户的逻辑集合。有时我们需要让多个用户具有相同的权限,比如查看、修改某一个文件的权限。一种方法是分别对多个用户进行文件访问授权,如果有10个用户的话,就需要授权10次,如果有100、1000甚至更多的用户呢?显然,这种方法不合理。最好的方式是建立一个组,让这个组具有查看、修改此文件的权限,然后将所有需要访问此文件的用户放入这个组中。那么,所有用户就具有了和组一样的权限,这就是用户组。将用户分组是Linux系统中对用户进行管理及控制访问权限的一种手段,通过定义用户组,在程序上简化了对用户的管理工作。通过图3-5可以直观地理解用户与组的关系。图3-5用户与组

3.2权限管理

一个文件或目录的常用属性可以通过ll命令来查看:

hujianwei@localhost:~$ll

drwxrwxr-x2ubuntuubuntu40968月1621:33direct/

-rw-rw-r--1ubuntuubuntu00008月1621:32file在上述文件中,可以看到文件常见属性的具体格式如图3-6所示。图3-6文件常见属性

Linux系统中,常见的文件类型有以下几种:

(1)-:表示一般文件,如使用touch命令创建的普通文件。

(2)d:表示目录,目录也是一种特殊的文件,只不过存放的是该目录下的文件和目录名。

(3)b:表示块设备文件,可随机存取,如磁盘。

(4)c:表示字符设备文件,一次性读取,如鼠标、键盘等。

(5)l:表示链接文件,如符号链接、硬链接等。

(6)s:表示套接字文件。

3.2.1修改文件所属者与所属组

在上述通过ll命令查看的文件属性中,第3个字段“ubuntu”为文件的所属用户,第4个字段“ubuntu”为所属组。使用chown命令可以更改所属用户和所属组,chgrp命令可以更改所属组。

chown命令的具体使用格式如下:

chown[options][OWNER][:GROUP][file]

chown命令的常用配置选项如下:

-R:递归更改文件或目录所属关系。

通过以下示例的三个步骤操作,为读者展现chown命令的三种使用方式。

(1)用ubuntu用户创建一个名为file的文件,先查看其所属关系,然后将其所属用户信息修改为testuser用户:

3.2.2修改文件权限

在本小节主要关注的是文件类型与权限字段,具体表示如图3-7所示。图3-7文件类型与权限字段分解

在chmod命令的[mode]部分,可以有两种选择,即采用权限字符(r、w或x)或采用数字设置。通过权限字符修改的具体配置方式如图3-8所示。图3-8chmod权限配置方式

3.2.3目录权限及其配置建议

权限对于一个操作系统来说具有至关重要的作用,所以加深对权限在具体应用中的理解,有助于读者更好地管理和使用Linux系统。权限的表示,即是通过“r”(读)、“w”(写)、“x”(执行)等形式标识出来,但具体对于文件和目录来说,由于其在Linux系统中所发挥的作用不同,所以在具体含义上稍有些许差异,具体如下:

(1)内容:文件对应的是其中的数据,目录对应的是文件或者子目录。

(2)读权限:文件对应的是读取文件的内容,目录对应的是读取目录中的文件或者其中的子目录。

(3)写权限:文件对应的是修改文件的内容,目录对应的是可以修改其中的文件或者目录名字。

(4)执行权限:对于文件是执行,对于目录则意味着可以进入目录,这是文件和目录差异比较大的一个点。

关于权限的具体配置与应用,下面给出一些实际的配置示例:

(1)共享目录中的文件时,至少应开放“r”“x”权限,但“w”权限不可轻易配置。

(2)使用cd等命令进入某个目录时,至少需要“x”权限。

(3)修改一个文件中的内容,至少需要“w”。

(4)在某个目录中创建文件或子目录,至少需要“w”“x”。

(5)进入某个目录并执行该目录下的某个基本指令,至少需要“x”权限。

3.3特殊权限

3.3.1默认权限在Linux系统中创建一个文件或目录时都会有默认权限,并且普通用户和root用户创建的文件或目录所对应的默认权限是不同的。

文件的最大默认权限是666,即“rw-rw-rw-”,也就是任何用户都没有执行权限;然后利用上述计算公式得到666-002=664,对应的就是上述testfile的权限。

目录的最大默认权限是777,即“rwxrwxrwx”,利用计算公式得到777-

002=775,也就是上述testDir目录的权限。然后修改umask权限掩码为0022后,再创建一个文件和目录查看其默认权限:

3.3.2扩展权限

在使用umask命令配置时实际上是有4位数值的,例如使用umask查看用户ubuntu的权限掩码为0002。其中的234位表示的是八进制对应的所属用户、所属组以及其他用户的权限,而第1位0对于文件或目录设置是具有特殊作用的。这就是本小节要介绍的三种扩展权限,分别为SUID、SGID、SBIT,基本含义如下:

(1)SUID(SetUserID):也称强制位UID,当一个文件(仅对二进制文件有效)设置了SUID时,则所有用户在执行该文件时,都以这个文件的所有者的权限来执行,而且必须有“x”执行权限设置才能生效。

(2)SGID(SetGroupID):也称强制位GID,只对目录设置。在设置SGID的目录中,任何用户在该目录下建立的文件的所属组都会是该目录的所属组,而且必须有“x”执行权限设置才能生效。

(3)SBIT(StickyBIT):也称冒险位,对目录设置后,在相应目录下的文件只有文件所有者和root用户才能删除,而且必须有“x”执行权限设置才能生效。

这三种扩展权限在文件或目录的属性中标识时,其具体位置与基本权限的所属者、所属组、其他用户权限叠加,如图3-9所示。其中,若设置了SUID,则所属者的“x”位表示为“s”;若设置了SGID,则所属组的“x”位表示为“s”;若设置了SBIT,则其他用户的“x”位表示为“t”。若不存在“x”权限,那么在相应位置上会以大写的“S”或“T”来表示,且由于没有执行权限,该扩展权限无效。图2-2图3-9扩展权限位

以上三种扩展权限的修改也使用chmod命令完成。这三种类型的扩展权限,也是当存在该权限时用二进制表示为1,不存在时用二进制表示为0,所以转换为八进制后,同样以0~7的取值范围表示,其中,SUID为4,SGID为2,SBIT为1。这也是使用umask查看权限掩码时四位八进制数中的第1位八进制数。

下面分别对其进行举例说明。

1.创建目录设置SGID位,验证该扩展权限

2.查看设置SUID的文件

3.3.3隐藏属性

文件或目录除了“r”“w”“x”以及SUID、SGID、SBIT等主要的权限之外还有隐藏属性。常见的现象,例如显示有权限删除某个文件但无法删除,或仅能为某个文件添加内容而不能删除文件内容时就需要考虑文件隐藏属性是否被设置。

相关操作命令是chattr,其进行隐藏属性的设置选项主要有:

(1)-i:无法对文件进行修改和删除,即便root用户也不行。

(2)-a:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论