Linux中文件系统的权限管理(普通权限,特殊权限,文件的扩展属性,FACL)

文件系统的权限管理(DAC体系:自主访问控制体系):

普通权限

  特殊权限

  文件的扩展属性

  FACL(文件系统访问控制列表)

安全上下文:

任何在计算机中执行的任务都是由进程来实现的,所以进程就有必要访问和使用某些数据资源,进程和其要操作文件之间的关系可以叫做安全上下文;

在DAC模型中,定义安全上下文的方式很简单:

所有权:

任何启动进程的用户就是该进程的所有者,进程的所有者可以变更(需要特定的变更方式如su命令);

任何创建文件的用户就是该文件的所有者,文件的所有者是可以变更的;

使用权:

在文件上面定义的对该文件的特定使用过滤规则;

三个权限:所有者权限,所属组权限,其他人权限;

安全上下文的匹配规则:

当某个进程试图操作某个文件时,整个DAC将做如下规则匹配:

1、判断进程的所有者和文件的所有者是否为同一用户,如果是,则直接应用文件的所有者权限;

2、如果不是,则进一步判断进程的所有者是否为文件的所属组的成员,如果是,则直接应用文件的所属组的权限;

3、如果不是,直接应用其他人权限;

文件权限的构成:

使用权:MODE,也可以叫做permission

默认有三个基本权限:

r:readable,可读;

w:writeable,可写;

x:executable,可执行;

文件系统中文件两大类(目录文件和非目录文件)

目录文件:

r:可使用ls目录获取其中所包含的所有文件的文件名列表;

w:可在此目录中进行文件名修改(创建、删除和修改);即可用创建文件名,删除文件名及修改文件名;

x:可使用ls -l命令来查看各个文件的属性信息,在路径中引用该目录(cd /DIR 命令如果有x可执行权限,就可以切换到DIR中,反之不可以);

非目录文件:

r:可利用cat类命令获取文件中存放的数据信息;

w:可修改(添加,修改和删除)文件中存放的数据信息;

x:可以将文件发起为进程;

获取使用权和所有权的相关信息:

ls -l[d] /PATH/TO/SOMEFILW         用来查看目录文件或非目录文件的权限信息

路径

rwxr-xr-x:三个权限位(属主/所有者【左三】,属组/所属组【中三】,其他用户【右三】)

属主权限:rwx,此权限位标识为user,简写为u;

属组权限:r-x,此权限位标识为ugroup,简写为g;

其他用户权限:r-x,此权限位标识为other,简写为o;

所有的权限位都可以用all来标识,简写为a;

注意:“-”表示在该权限位上不具备指定权限;

rwx组合称为“权限标识三元组”;

数字权限标识:二进制权限标识,在对应的权限位上有权限则为1,无权限则为0;

---   表示000     0

--x   表示001     1

-w-   表示010     2

-wx   表示011     3

r--   表示100     4

r-x   表示101     5

rw-   表示110     6

rwx   表示111     7

使用符号标识权限和数字表示权限的区别:

1.使用符号标识法可以只标识某个特定的权限位,也可以同时标识所有的权限位;

示例:u=rx;ug=rwx;

2.使用数字标识法只能同时标识所有权限位;

示例:755;334;  7 == 007 ; 75 == 075 ;

修改文件的使用权:

chmod:修改使用权

作用:change file mode bits

格式:

chmod [OPTION]... MODE[,MODE]... FILE...

chmod [OPTION]... OCTAL-MODE FILE...    八进制模式

chmod [OPTION]... --reference=RFILE FILE...

MODE:符号权限标识法;

u,g,o,a: 表示权限位;

+,-,=:表示授权方式;

+:表示在指定的权限位上增加指定权限,如果新增的权限是已经存在的权限,则结果相比较授权之前无变化;

-:表示在指定的权限位上撤销指定权限,如果被撤销权限在原权限位并不存在,则结果相比较授权之前无变化;

=:表示在指定的权限位上精确授权,此种授权方式不考虑该原权限位原有的权限设定;

r,w。x代表具体的权限;

示例:

#  chmod u-x,g+rw,o+r txt.user3

命令               文件名

#  chmod u=r,g=r,o=rwx txt.user3

注意:

chmod  +|- r|x FILE:在所有的权限位上增加或撤销读或执行权限;

chmod  +|- w FILE:仅在所有者u权限位上增加或撤销读或执行权限;

注意:对于文件来说,执行权限是非常重要的安全上下文标识;因此默认情况下,所有的非目录文件都不应该有执行权限;因为一旦非目录具有了执行权限,则意味着该文件可以被执行,发起为进程,则可以按需要使用资源。

OCTAL-MODE:八进制数字权限标识法

示例:# chmod 640 root.txt

---   表示000     0

--x   表示001     1

-w-   表示010     2

-wx   表示011     3

r--   表示100     4

r-x   表示101     5

rw-   表示110     6

rwx   表示111     7

--reference=RFILE:

示例:# chmod --reference=/etc/shadow root.txt

//参考/etc/shadow文件的权限位root.txt设置相同权限;

常用选项:-R,--recursive:递归的设置目标文件或目录的权限(包括子目录子文件);

修改文件的所有权(chown和chgrp):

chown:change file owner and group,修改文件的属组和属主

格式:chown [OPTION]... [OWNER][:[GROUP]] FILE...

chown [OPTION]... --reference=RFILE FILE...

示例:

chown user3 test1  //代表修改了test1的所有者u;

chown user3: test2  //代表修改了test2的所有者u,而且所属组g也变成了user3的主要组(基本组);

chown :user3 test3 //代表修改了test3的所有组g;

chown user3:myuser test4 //代表修改了test4的所有者u为user3同时修改所属组g为myuser;

注意:在使用chown时,特别的,可以使用“.”代替“:”;

常用选项:

-R,--reference:递归的设置目标文件或目录的所有权;

注意:对于文件来说,普通用户可以修改所有者为自己的文件的使用权,但无法修改文件的所有权;修改文件所有权的操作只有root可以完成;

chgrp(不常用):仅仅只能修改所属组,change group ownership

格式:chgrp [OPTION]... GROUP FILE...

chgrp [OPTION]... --reference=RFILE FILE...

注意:chown和chgrp命令所指定的用户和组,既可以是用户名和组名,也可以是UID和GID;

mkdir:

-m MODE:在创建目录时为其指定权限;

install命令:

copy files and set attributes,复制文件并且设置属性;

格式:

install [OPTION]... [-T] SOURCE DEST  :单源复制,给复制后的文件增加执行权限;

install [OPTION]... SOURCE... DIRECTORY :多源复制,给复制后的文件增加执行权限;

install [OPTION]... -d DIRECTORY...   :相当于mkdir的功能,创建目录;

常用选项:

-g, --group=GROUP

set group ownership, instead of process‘ current group

:设定目标文件的所属组为指定组,而不是进程所有者的主要组;

-m, --mode=MODE

set permission mode (as in chmod), instead of rwxr-xr-x

:设定目标文件的权限,而不是rwxr-xr-x;

-o, --owner=OWNER

set ownership (super-user only)

:设定目标文件的所有者,仅root可用;

注意:install命令,不能复制目录,既不能以目录为源文件;如果其源文件是一个目录,则install命令会进入该目录,依次复制其中的所有非目录文件到目标位置。

特殊权限:

SUID,SGID,STICKY

SUID:SUID仅设置在可执行的文件上。

默认情况下,当用户执行此类可执行文件时,被发起的进程的所有者不是进程的发起者,而是可执行文件的所有者,换句话说:进程以文件所有者的身份运行;

SUID权限所显示的位置:文件的属主的权限位中的执行权限位上;如果属主原本就具有执行权限,则显示为“s”;如果属主本来没有执行权限,则显示为“S(大写)”;

管理SUID权限:

1.符号标识法:chmod u+s FILE

2.数字标识法:chmod 4755 DIR   ("4"表示SUID)

SGID:SGID可设置在可执行文件或目录的属组权限位的执行权限位上。

如果某个目录设置了SGID权限,而且对于某些用户有写权限,则所有在此目录中创建的新文件和目录的所属组均为其父目录的所属组,而并非进程发起者的主要组。

SGID权限的显示位置:文件的属组权限位上的执行权限上;如果属组本来就有执行权限,则显示为“s”,否则,就显示为"S";

管理SGID权限:

1.符号标识法:chmod g+s DIR

2.数字标识法:chmod 2770 DIR(“2”代表SGID)

STICKY:仅设置在目录的其他用户权限位的执行权限上。(粘滞位)

如果在某个目录上的权限设置为多个用户都拥有写权限,那就意味着凡是拥有写权限的用户都能直接管理该目录中的所有文件名,包括改名文件及删除文件名等操作;因此要在这样的目录上设置STICKY特殊权限;如果此类目录设置了STICKY,则所有用户即便拥有写权限,也仅能删除或改名所有者为其自身的文件;

STICKY权限的显示位置:在目录的其他用户的权限位的执行权限上;如果该权限位本来有执行权限,则显示为“t”,否则,显示为“T”;

管理STICKY权限:

1.符号标识法:chmod o+t DIR

2.数字标识法:chmod 1777 DIR

权限的遮罩码:umask

作用:在创建目录或文件时,被创建出来的目录或文件的默认权限上删除遮罩码所对应的权限;

注意:在创建目录或文件时,默认不设置特殊权限;

对于目录来说:默认的权限为:0777-umask

对于非目录文件:默认的权限为:0666-umask

umask [OCTAL-MODE]  查看当前用户的遮罩码;加上后面的[OCTAL-MODE]代表设置用户的遮罩码;(这种修改遮罩码的方法不是永久的,如果重新登录则会恢复默认值,想要永久保存遮罩码的值除非修改文件)

默认设置遮罩码的文件:/etc/bashrc

规则:如果用户的UID大于199并且用户的用户名和主要组的组名相同,则遮罩码为002,否则遮罩码为022。

文件的扩展属性:

lsattr:list file attributes on a Linux second extended file system,显示文件的扩展属性;

格式:lsattr [ -RVadv ] [ files...  ]

chattr:修改文件的扩展属性;

格式:chattr [ -RVf ] [ -v version ] [ mode ] files...

mode可以是:+-=[aAcCdDeEijsStTu]

a:在向文件写数据时,只能以附加的方式进行写操作;文件的内容不能被更改和删除;一般会为日志文件设置此属性;

A:atime,文件的访问时间戳控制属性;对于并发访问量较大或者并发访问频率较高的文件,应该设置此属性以降低IO成本;防止IO瓶颈;

c:设置是否自动压缩之后再存储;

C:是否开启“写时复制”;

d:使用dump备份文件系统时,跳过属性设置为d的文件;

D:设置文件在文件系统中的异步写操作;

i:设置文件不能被删除,改名及设定链接关系;

s:设置文件的保密性删除;

u:与s属性相反,如果此类文件被删除,则在存储器中会继续保存其内容;

FACL:Filesystem Access Control List,文件系统访问控制列表;

想要应用此功能,必须要让文件系统支持

FACL为文件系统的额外赋权机制;在原有的u,g,o权限位之外,让普通用户能够控制权限赋予另外的用户或组的一种赋权机制;

这种机制在centos或者RHEL7之后的发行版本中才逐渐成熟;

与FACL相关的命令:

getfacl:get file access control lists  获取查看额外权限控制列表

格式: getfacl [-aceEsRLPtpndvh] file ...

getfacl [-aceEsRLPtpndvh] -

setfacl:set file access control lists   设置额外权限控制列表

格式:setfacl [-bkndRLPvh] [{-m|-x} acl_spec] [{-M|-X} acl_file] file ...

setfacl --restore=file

常用选项:

-m acl_spec:为指定文件设置acl_spec;

-x acl_spec:将acl_spec从指定文件上移除;

acl_spec:acl_specification,acl规格,访问控制列表;

u:USERNAME:MODE

g:USERNAME:MODE

MODE一般是使用符号权限标识法标识的权限;

示例:为文件赋予指定用户的额外访问权限:

setfacl -m u:link:rwx /tmp/temp

撤销指定文件的额外访问权限:

setfacl -x u:link /tmp/temp

注意:如果设置了FACL之后,再修改目标文件的使用权限,你们FACL中设置的权限条目可能受到影响而导致授权失败;因此,为了保证没有干扰,应该先调整目标文件或目录的权限,再设置FACL;

时间: 2024-11-09 18:04:01

Linux中文件系统的权限管理(普通权限,特殊权限,文件的扩展属性,FACL)的相关文章

java权限管理与用户角色权限设计

java权限管理与用户角色权限设计 实现业务系统中的用户权限管理 B/S系统中的权限比C/S中的更显的重要,C/S系统因为具有特殊的客户端,所以访问用户的权限检测可以通过客户端实现或通过客户端+服务器检测实现,而B/S中,浏览器是每一台计算机都已具备的,如果不建立一个完整的权限检测,那么一个“非法用户”很可能就能通过浏览器轻易访问到B/S系统中的所有功能.因此B/S业务系统都需要有一个或多个权限系统来实现访问权限检测,让经过授权的用户可以正常合法的使用已授权功能,而对那些未经授权的“非法用户”将

20181126文件权限管理之:高级权限suid

文件权限管理之:高级权限suid [[email protected] ~]# touch /root/file1.txt[[email protected] ~]# ll /root/file1.txt-rw-r--r--. 1 root root 0 11月 9 09:02 /root/file1.txt [[email protected] ~]$ cat /root/file1.txtcat: /root/file1.txt: 权限不够问题:为什么会失败?[[email protecte

Linux基本命令(5)管理使用者和设立权限的命令

管理使用者和设立权限的命令 命令 说明 命令 说明 chmod 用来改变权限 useradd 用来增加用户 su 用来修改用户     5.1 chmod命令 chmod命令用来改变许可权限.读取.写入和执行是许可权限中的三个主要设置.因为用户在他们的账号被创建时就被编入一个组群,所以还可以指定那些组群可以读取.写入或执行某一文件.其中: r—文件可以被读取 w—文件可以被写入 x—文件可以被执行,如果文件是程序的话 可以使用带有-l的ls命令来仔细查看一个文件的许多细节. chmod命令用来设

【转】完美解读Linux中文件系统的目录结构

一.前 言 接触Linux也有一段时间了,不过这几天在编译开源程序时,才发现自己对linux文件系统的目录结构了解的不够透彻,很多重要目录都说不清楚是用来干嘛的,于是在网上百度了一下这方面的介绍,根据自己的使用习惯,整理出来一篇关于Linux文件系统的目录结构的文章,和大家一起分享. 文章对Linux下所有目录一一说明,对比较重要的目录加以重点解说,以帮助初学者熟练掌握Linux的目录结构.同时文章最后附录了一份Linux目录结构的简明手册,以便大家查阅. 二.目 录 1.什么是文件系统 2.文

Linux学习笔记<二>——Linux根文件系统和文件目录管理

文件系统中各目录的说明: /boot:系统启动相关的文件,如内核,initrd以及grub(bootloader) /dev:设备文件 设备文件: 块设备:随机访问,数据块,唔所谓顺序,如银盘 字符设备:线性访问,按字符为单位,有次序地一个接一个地输入/读取,如键盘,鼠                  标,显示器 设备号:主设备号(major)和次设备号(minor) /etc:配置文件 /home:用户的家目录,每一个用户的家目录默认为/home/USERNAME /root:管理员的家目录

linux中用户,组管理

操作系统管理和分配硬件资源向上层输出系统调用借口,从而简化了应用程序的设计.如果想要使用系统资源,则需要一个凭证:用户 linux上创建,修改,删除用户的命令详解: 创建用户useradd:在linux系统上和用户相关的文件有/etc/passwd,该文件用户存储用户的基本信息(用户名,UID,GID,注释信息,用户的家目录,用户的shell类型),/etc/passwd文件用于存放用户的密钥,密码过期时间等相关信息,/etc/group文件用于存放组相关信息(组名,GID,以该组为附加组用户的

通用权限管理设计 之 数据权限

阅读目录 前言 初步分析 通用查询机制 数据权限规则 实际应用 结语 前言 前一篇文章<通用权限管理设计 之 数据库设计方案>介绍了[主体]- [领域] - [权限]( who.what.how问题原型 ) 的设计思想 本文将对这种设计思想作进一步的扩展,介绍数据权限的设计方案. 权限控制可以理解,分为这几种 : [功能权限]:能做什么的问题,如增加产品.[数据权限]:能看到哪些数据的问题,如查看本人的所有订单.[字段权限]:能看到哪些信息的问题,如供应商账户,看不到角色. 部门等信息. 上面

linux中telnet 带外管理服务器的设置

带外操作就相当于交换机路由器中的管理一样的. 首先我们要先进入Linux中.我的Linux是虚拟机这是我首先告诉大家的. 1第一步:先把磁盘挂载到 /mnt中 rpm –qa|grep xinetd   (查看安装的安装包) telnet 的主程序安装包是 xinetd-2.3.14-10.e15 telnet-server-0.17-39.e15.i386.rpm x现在就安装好了 他的配置文件在/etc/xinetd.d/telnet/中 把配置文件中的diasble=yes 改为no 这样

第7章 权限管理(2)_文件特殊权限(SUID、SGID、SBIT)

2. 文件特殊权限 2.1 SetUID (1)SetUID的功能 ①只有可以执行的二进制程序才能设定SUID权限.用来临时提升执行程序(或某条命令)的用户身份. ②命令执行者要对该程序拥有x(执行)权限,即用户必须拥有执行该程序的权限. ③命令执行者在执行该程序时获得该程序文件属主的身份(在执行程序的过程中灵魂附体为文件的属主 ④SetUID权限只在该程序执行过程中有效,也就是说身份改变只在程序执行过程中有效. (2)以passwd命令为例分析SUID权限 ①所有用户密码都是写入/etc/sh