前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >第七章 权限管理

第七章 权限管理

作者头像
晓天
发布2019-07-04 14:17:43
7220
发布2019-07-04 14:17:43
举报
文章被收录于专栏:Linux、云计算技术交流

第七章 权限管理

7.1 用户使用资源限制文件

Linux中,对于用户使用系统资源,如:CPU、内存、磁盘空间等,都可以做出限制,需要在相关的配置文件中做设置:

vi /etc/security/limits.conf ---编辑资源限制文件,可写入

zhang soft nproc 70

---soft 设置软限制,即警告值, nproc表示该用户运行起的进程数

zhang hard nproc 100 ---hard 设置硬限制,即上限最大值

以上案例可以实现对用户zhang限制其运行进程的数量,到达soft软限制时,会有警报,但仍可继续使用,到达hard硬限制时,将不允许再使用了。

注:该文件注释中的<item>项对可设定限制的资源项有解释。

7.2 文件访问权限设置

7.2.1 文件详细信息介绍

之前我们学习过,ls –l 或 ll后可见到目录下文件的详细信息,那么具体这些信息都是什么呢?我们来详细介绍下:

ls -l ---显示目录内容的详细信息,会显示7项信息

从左至右依次为:文件权限 硬链接数 文件的所属者(属主) 文件的所属组(属组) 文件大小(单位:B) 上一次修改时间 文件名

对应下图:

其中:文件权限部分由10个字符组成,意义如下:

- rwx rwx rwx

文件类型 所属者权限u 所属组权限 g 其他用户权限 o

注:三类用户统一表示用 a

第一个字符的文件类型,由不同字符表示不同类型的文件,具体如下:

- 二进制文件,即文档类 d 目录 l 软链接 b 块设备,如磁盘 c 字符设备,如磁带

注:块设备、字符设备的原理,我们将在后续章节中介绍

每类用户的权限,都由rwx组成,表示了该类用户的访问权限:r读取 w写入 x执行,例如:-rw-r--r-- 表示文档类文件,属主具备读写权限,属组成员具备只读权限,其他用户具备只读权限。

权限的10个字符后的数字1 表示该文件的硬链接数,之前已经讲过。在后面的两个root,前一个表示文件的所属者即属主,后一个表示文件的所属组即属组。二者的权限对应权限中的u和g块。

7.2.2 权限配置

我们先来看一个案例:

图中,以root用户创建并写入一个文件f1,切换到zhang用户下,可查看但不可写入,原因是对于f1文件来讲,属主是root,属组是root,而zhang用户属于其他用户类别,所以只有读权限,没有写权限。那么如果想要允许zhang用户能够写入f1,则需要做权限的更改。更改权限的命令是chmod,它有三种设置方式:

chmod u+x,g+w,o-r f1 ---增减方式配置权限

chmod a+x f1 ---三类用户统一设置

注:增减的方式是在原有权限的基础上做增加或减去

chmod u=rw,g=r,o=r f1 ---赋值方式

chmod a=rw f1

注:赋值方式是全新赋值,覆盖原有权限

chmod 644 f1 ---数字赋值方式,即u=6,g=4,o=4

解释:把rwx三个权限视为一组3bit的二进制数字,有该权限,对应位置1;没有该权限,对应位置0,再转回十进制

例:rw- => 110 => 6 rwx=> 111 =>7 r-x => 101 => 5

所以:chmod 644 f1即 u=rw g=r o=r

chmod 66f1 ---位数不足三位,采用高位补零,即066,称为:右匹配原则

7.2.3 目录的rwx对应的意义

对于文件,我们很容易判断rwx三种权限的功能,即r读取文档,w写入文档,x执行该程序。但是对于目录,我们可能不太清楚rwx的功能,下面具体介绍一下:

r ---显示目录下的内容,即ls功能

w ---允许在目录下创建子目录、子文件

x ---进入目录的功能,即cd功能

可参考如下实验:

由图中可见,只有单x权限的目录,其他用户只能cd进去,却ls查看不了;只有单r权限的目录,其他用户只能ls查看其内容,但cd不进去。而w权限对于目录应该是比较好理解的,表示能够在目录下创建、删除、改名子目录或子文件。

7.2.4默认权限

由前面的案例可见,root创建目录后的默认权限是755,创建文件后的默认权限是644,原因是Linux中有一个权限参数变量:umask 默认值是0022,先关注后三位,即022。可用umask命令查看到其值:

umask ---查看umask变量的值

文件的默认权限其实是由满权限减去umask的后三位的值得到的,如下:

文件默认权限:满权限 - umask = 默认权限

666 - 022 = 644

目录默认权限:满权限 - umask = 默认权限

777 - 022 = 755

注:普通文件因为一般无需执行,所以满权限被认为是666;目录因为必须有x权限才可进入,所以满权限被认为是777

其实umask的值也不是固定的,不同身份的用户umask值也不同,管理员root umask=0022 普通用户 umask=0002,读者可自行查看。

另外,umask的应用除了系统中会有使用,很多文件传输类服务,如:FTP,在上传文件时也会设置umask以制定默认权限,这里暂不展开讲解,先行记住即可。

7.2.5安全位 ---set位

安全位的概念有些复杂,比较难以理解,读者需要多做实验,加以印证。

功能:可以给u 或 g 增加安全位 即 u+s 或 g+s,并且安全位是加给某个程序的,

则运行该程序时,程序所访问到的文件,以此文件的所属者或所属组身份访问

案例:chmod u+s /usr/bin/cat ---给cat命令程序增加用户安全位

su zhang

cat f1 ---则此时,访问f1时,以f1文件的所属者身份访问

ll /usr/bin/cat

注:查看显示程序信息,安全位s显示在x权限的位置,大写S说明之前无x权限,小写s说明之前有x权限

案例如下图:

如图,给cat命令的执行程序增加安全位后,zhang用户使用cat命令时,读取f1的内容,按f1文件的属主身份访问,但是如果使用head、tail、more等命令读取f1时仍应该是拒绝的。

同样道理,如果给cat命令增加了g+s即组的安全位,则cat访问f1时,会以f1的属组身份访问的。

7.2.6 粘贴位 ---sticky位,又称粘连位

我们可以想象一下,如果我们以一个用户的身份进入系统,在某目录下创建了自己的目录和文件,当其他用户也登录进系统,如果权限允许,是可以删除我们所创建的文件的,这样对于我们的个人资料就不安全了,为了保护用户的个人资料,可以使用目录粘贴位的方式加以保护。

介绍:可以给目录增加粘贴位,粘贴位只能加到o 上,即 o+t,增加了粘贴位的目录,目录中的内容只有创建者有权删除

案例如图:

上图中,我们首先给/mnt的o增加了w权限,因为默认/mnt目录的权限是755,即其他用户无权写入。查看是用ll –d /mnt是只显示/mnt目录的信息,不显示/mnt目录下内容的信息。之后我们使用zhang用户进入/mnt中,创建了目录和文件,但是切换到moon用户下时,是可以删除的。下面我们来看一下增加了粘贴位的效果:

上图中可见,给/mnt增加了粘贴位后,zhang所创建的目录及文件,moon用户无权删除了,这就是粘贴位的功能。

7.2.7 权限配置进阶

有了安全位、粘贴位的概念,我们再来看一下四位数字赋值的方式

chmod 5755 d1

解释:第一位数字表示 u g 的安全位和o的粘贴位组成的3bit的二进制,如:5表示 s-t,即 u+s o+t

umask 中的第一位数字,也代表的也是文件默认的u g 的安全位和o的粘贴位。

另外,我们可以做实验证明,当给目录设置权限以后,目录内的子目录、子文件是不跟着一起变化的,那么如果我们想要实现改变目录的权限,其内部文件一起变,即配置的继承功能,则需要增加–R 参数,我们称之为递归操作,案例如下:

chmod -R 755 /mnt/d1 --- -R 表示递归操作

7.3 所属信息配置

我们在ls -l 查看的结果中,第三、第四项表示文件的所属者、所属组。当创建文件、目录后,默认当前的创建者即是文件的所属者,所属者所在的私有组即是该文件的所属组。可以想象一下,在权限为644的文件上,如果禁止更改权限,却仍想要允许zhang用户写入文件,可以采用的方法是更改文件的所属者为zhang用户,则zhang即可有写入权限了。

7.3.1 所属信息配置命令

更改文件所属的命令是chown,具体格式如下:

chown zhang f1 ---更改文件的所属者

注:更改后可验证zhang用户对f1有写入权限了

chown .zhang f1 ---更改所属组, 用 . 前面空白,表示略过属主,设置属组,注:用.或:都可以,如 chown:zhang f1

chown root.root f1 ---同时改两项, 等同于:chown root:rootf1

其实更改所属组,还有一个命令是 chgrp,但我们日常使用并不多,所以这里仅仅提示一下。如:chgrp zhang f1

另外,如果我们更改所属的对象是一个目录,默认仅是更改了目录的所属,而目录内的子文件、子目录并未跟着一起更改,若想实现目录内容继承更改,则需要增加递归参数–R,命令如下:

chown -R zhang.zhang dd ---更改目录及其内容的所属信息,-R 递归

最后再来看一下文件复制对文件所属信息的影响:

如图可见,复制目录后,文件的所属发生了变化,变回root属主root属组了。那么如果想要复制后保持原所属信息不变,可增加 –p 参数,如下图:

7.4 访问控制列表ACL

7.4.1 ACL的功能

我们可以试想一下,如果我们有一个文件,属主root,属组root,权限644,现不希望更改文件所属,却想仅允许用户zhang可以写入,该怎么办呢?如果用o+w的操作,虽然zhang可以写了,但是除了zhang以外的其他用户,如:lisi等,也具备了写的权限,这与我们的初衷不符,这时候,就可以使用acl来解决此问题。

ACL的功能就是:针对文件,设置特权用户,即允许特定用户访问

如:f1文件权限644,属主root,属组root,则zhang无权写入,可给zhang设定特权,仅允许zhang写入

7.4.2 ACL命令

具体的配置命令如下:

getfacl f1 ---查看文件的acl信息

setfacl -m u:zhang:rw f1 --- 针对文件,设置用户的acl, -m表示设置 u: 表示设置用户的acl

如图所见,用户zhang即对f1有rw权限了,可尝试编辑f1文件加以验证。

另外针对文件,也可以做组的ACL,命令如下

setfacl -m g:zu11:rw f1 --- g:表示设置组的acl

若要撤销acl,可使用-x或-b参数,具体如下:

setfacl -x u:zhang f1 ---撤销单个acl

setfacl -b f1 ---撤销文件的所有acl

7.5 文件属性设置

关于文件属性,其实日常工作中使用较少,这里我们只是简单介绍下,读者能够知道其功能即可。

属性,即文件的某些特性。使用lsattr命令查看,案例如下

lsattr -aR /root ---查看 /root 下的文件及目录权限

-a: 显示指定目录下的文件及目录的属性

-R: 递归显示

文件的常用属性有:

i: 只读属性

A:不更新文件的访问时间 .可减少磁盘 IO 操作

a:可追加数据,但无法修改、删除、重命名

c:压缩, 文件使用时自动解压, 离开文件 / 目录时自动压缩,以节省使用空间

d: 忽略 dump 备份 , 文件有此属性将不允许备份

S: sync 同步

s:安全删除属性 , 文件不可恢复

u:文件删除后,可恢复

其中我们比较容易理解的是:i a c 等属性

我们可以用 chattr命令,使用 + - 号来给文件增加或删除属性:

如图所示,在给f1增加i属性前,是可以写入的,给f1增加了i属性后,f1即处于只读状态,可用lsattr查看到,便不可再写入了。之后去除i属性后,f1又可写了。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-04-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 教主小筑 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档