权限及文件访问控制

首先,还是要从用户账户的作用出发;

用户账户的作用:证实操作者的身份

不允许任何人都以管理的身份来对计算机资源进行使用,这样会使计算机的安全性特别低。

其次,用户账户通过之后,我们要对于不同的用户账户进行不同的授权(权限)

例如:超级用户(root),拥有对于计算机的资源拥有所有权

普通账户(user1,user2,...),拥有指定赋予的权限。

文件系统的权限管理:

普通权限

特殊权限

文件的扩展属性

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

我们把这4个部分组成的一套体系称为:DAC(自主访问控制)

说到这套体系就必须说到另一个概念

安全上下文:

任何在计算机中执行的任务都是由进程实现的;

进程有必要访问和使用文件或某些数据资源;

简单理解起来就是:张三的车只有张三能开,

李四不能够开,除非张三允许李四开张三的车

张三,李四分别对车之间就有权限的关系;

就相当于: 张三对应进程1

李四对应进程2

车相当于计算机资源1

进程1能够使用资源1

进程2不能使用资源2

补充:人操作计算机就是:人使用一个用户账户登陆到计算机,计算机操作就是用户账户通过

“识别”的人体手动操作打开对应的进程,而这些进程就会去对相应的文件进行执行和

处理或使用。

进程和其要操作的文件之间的关系,就定义为安全上下文;

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

所有权

任何启动进程的用户就是该进程的所有者;进程的所有者可以变更;

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

使用权

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

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

安全上下文的匹配规则:

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

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

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

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

在Linux中查看某个文件的权限可以使用:ls -l[d] /PATH/TO/SOMEFILE

接下来就是要介绍与权限相关的和其命令操作:

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

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

属组权限:r-x,此权限位标识为group,简写为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; u=rwx,g=rx,o=r; a=rwx

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

示例:

755; 644; 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-x,g-x,o-wx txt.user3

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

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

注意:

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

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

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

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

示例:

# chmod 640 root.txt

--reference=RFILE:

示例:

# chmod --reference=/etc/shadow root.txt

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

常用选项:

-R, --recursive:递归地设置目标文件或目录的权限;

修改文件的所有权:

chown

chown - change file owner and group //修改文件的属主和属组

格式:

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

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

示例:

~]# chown user3 test1   //只修改这个文件的所有者,所属组不变

~]# chown user3: test2  //把这个文件所有者改成user3,并把user3的主要组改成此文件的所属组

~]# chown :user3 test3  //把此文件的所属组改成user3,而所有者/属主不变

~]# chown user3:myuser test4  //直接把此文件的属主和属组改成user3和myuser

注意:在使用chown命令时,特别的,可以使用"."代替":";

常用选项:

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

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

chgrp(不常用)

chgrp - change group ownership

格式:

chgrp [OPTION]... GROUP FILE...

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

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

mkdir:

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

install命令:

install - copy files and set attributes

格式:

install [OPTION]... [-T] SOURCE DEST

单源复制,为复制后的文件增加执行权限;

install [OPTION]... SOURCE... DIRECTORY

多源复制,为复制后的文件增加执行权限;

install [OPTION]... -d DIRECTORY...

创建目录;

常用选项:

-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

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

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

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

管理SUID权限:

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

2.数字标识法:chmod 4755 FILE

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

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

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

管理SGID权限:

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

2.数字标识法:chmod 2770 DIR

3.STICKY:STICKY仅设置在目录的其他用户权限位的执行权限上。

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

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

管理STICKY权限:

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

2.数字标识法:chmod 1777 DIR

权限遮罩码:umask

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

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

对于目录文件:默认的权限为:0777-umask   0777-0033 = 0744

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

umask [OCTAL-MODE]

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

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

文件的扩展属性:

lsattr:

lsattr - list file attributes on a Linux second extended file system

格式:

lsattr [ -RVadv ] [ files...  ]

chattr:

chattr - change file attributes on a Linux file system

格式:

chattr [ -RVf ] [ -v version ] [ mode ] files...

mode可以是:+-=[aAcCdDeijsStTu]

+

-

=

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:

getfacl - get file access control lists

格式:

getfacl [-aceEsRLPtpndvh] file ...

setfacl

setfacl - set file access control lists

格式:

setfacl [-bkndRLPvh] [{-m|-x} acl_spec] file ...

setfacl --restore=file

常用选项:

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

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

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

u:USERNAME:MODE

g:GROUPNAME:MODE

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

示例:

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

[[email protected] ~]$ setfacl -m u:link:rwx /tmp/temp/

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

[[email protected] ~]$ setfacl -x u:link /tmp/temp/

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

时间: 2024-10-11 00:34:48

权限及文件访问控制的相关文章

用户和组管理权限及文件访问控制

与用户账户和组帐户相关的文件: 1./etc/passwd 2./etc/group 3./etc/shadow 4./etc/gshadow 5./etc/default/useradd 6./etc/login.defs 7./etc/skel(Directory) 1./etc/passwd: root:x:0:0:root:/root:/bin/bash 1  2 3 4  5   6    7 1:用户账户登录名称: 2:使用"x"表示密码占位符: 3:用户账户的UID: 4

特殊权限位及文件访问控制列表

一.特殊权限位 1.SUID: 运行某程序时,相应进程的属主是程序文件自身的属主,而不是启动者 chmod u+s FILE chmod u-s FILE 如果FILE本身原来就有执行权限,则SUID显示为s:否则显示S 2.SGID: 运行某程序时,相应进程的属组是程序文件自身的属组,而不是启动者所属的基本组 3.Sticky: 在一个公共目录,每个都可以创建文件,删除自己的文件,但不能删除别人的文件 二.文件访问控制列表 利用文件扩展保存额外的访问控制权限 1.setfacl--设置文件访问

文件权限二(特殊权限、隐藏属性、文件访问控制列表、切换用户方式)

文件特殊权限:SUID:将文件执行者临时获取所以者权限:U=user 用户命令格式:chmod u + s 文件SGID:临时获取所有组权限:G=group 组命令格式:chmod g + s 文件SBIT:只能自己删除自己的文件,因为SBIT保护位将文件保护起来命令格式:chmod o + t 文件 注意:文件/目录用数字4位表示,其中第一位表示是否有特殊权限,第2-4位表示一般权限或特殊权限转换后的值.通过用数字的方式表示权限可以使设置用户(或文件.目录)权限时,更加方便,不用去记9位的rw

facl:文件访问控制列表

假如我们有两个用户:tom and jerry,我们用tom建立一个文件 ,想让jerry也可以访问,那我们一般会给这个文件的其它人权限,但是一但给了其它人权限,那不权jerry可以访问,其它用户也可以访问,这样是不合理不安全的. 根据上述情况,我们就要引入文件访问控制列表了. facl: filesystem access control list 利用文件扩展保存额外的控制权限,其它人的权限可以不改变,但是我们可以明确规定一个文件可以被哪些用户访问. setfacl: 这里显示的是基本权限,

Linux入门之facl文件访问控制列表

Linux入门之facl文件访问控制列表 简介: linux默认的3中基本权限(rwx)以及3中特殊权限(suid,sgid,sticky)在平常情况下做适当调整即可,但是如果出现多个组多个成员情况下对某些文件或目录做权限配置就会发现不够分配,所以为了解决此类情况linux内核出现了acl(访问控制列表)模块来进行分层管理 版本对功能支持度: 在readhat7.centos7默认创建的xfs.ext4文件系统会有acl功能,如果redhat5.6等版本 新格式化的文件系统可能需要命令去添加:

特殊权限及文件系统访问控制列表笔记及习题答案

特殊权限 passwd:s SUID  : 运行某程序时,相应进程的属主是程序文件自身的属主,而不是启动者 chmod u+s FILE chmod u-s FILE 如果FILE本身原有执行权限,则SUID显示为s:否则显示S SGID  : 运行某程序时,相应进程的属组是程序文件自身的属主,而不是启动者所属的基本组 chmod g+s FILE chmod g-s FILE Sticky:  在一个公共目录,每个人都可以创建文件,删除自己的文件, 但不能删除别人的文件 chmod o+t D

文件访问控制列表

引入场景: tom创建的文件:属主为tom:属组为tom的基本组 Jerry想要访问tom创建的文件:则需要other有rw-的权限:这样做是很危险的 另一个方法就是将该文件的属主改为Jerry,但是普通用户tom是不能执行命令chown 这就引入了FACL的概念 FACL:文件访问控制列表 利用文件扩展属性保存额外的访问控制权限 setfacl:设置facl -m:设定额外的访问控制列表 u:UID:perm g:GID:perm -x:取消定义的额外的访问控制列表 u:UID g:GID -

getfacl,setfacl命令--ACL文件访问控制

getfacl显示文件访问控制列表 getfacl语法参数 getfacl [-dRLPvh] file... getfacl [-dRLPvh] --omit-header 过滤文件系统默认权限 -R 递归操作 示例: [[email protected] ~]# getfacl file # file: file # owner: ley # group: ley user::rwx group::--- other::--- 说明:带#号的是系统默认权限,下面的才是ACL控制权限 [[em

java访问控制权限和C++访问控制权限的对比

1.java修饰符权限 这里有一个包的概念,所谓同一个包是指*.java文件处于同一个文件夹下 2.C++修饰符权限 public:这是公有的成员,允许类外直接访问,当然,这要加上类作用域符::, protected:这是保护成员,只允许该类及其派生类访问 private:这是私有成员,只允许在该类中进行访问,当然,在类外只可以通过设定的公有函数进行访问. java访问控制权限和C++访问控制权限的对比