Linux文件系统之权限体系

目录

①文件属性mode

②文件权限判断逻辑

③Linux的进程安全上下文法则

④文件特殊权限SUID、SGID、SBIT

set uid

set gid

sticky bit

⑤文件默认权限:umask

⑥更改文件的权限:

更改文件属主和属组 :chown   

更改文件属组:chgrp(被chown替代,不常用)

更改文件的权限:chmod

更改文件的特殊属性:chattr(重要)

⑦文件权限实战

 


 

①文件属性mode

什么是文件的权限:

>>>Linux一切皆文件,多个用户登录操作系统,系统有默认文件,root文件,每个用户也有自己的文件,此时需要对文件系统进行
             权限分配和管理,如何分配管理? 在每个文件分配属主owner、属组group、其他other三个权限属性

>>>ls -al test :输入命令查看文件权限

drwxrwxrwx. 2 bei bei 4096 Sep 13 18:35 test

>>>属主:用户若是文件的主人,则匹配属主的权限,权限在文件的左三位,即第一个rwx
>>>属组:用户与属组在同一个组,则匹配属组的权限,权限在文件的中三位,即第二个rwx

>>>其他:用户既不是属主也不是属组,则匹配其他的权限,权限在文件的右三位,即第三个rwx

 

rwx进行说明

rwx对于文件而言

权限

说明

r

可以使用文件查看类工具获取文件中的内容

w

可以修改文件中的内容

x

可以把二进制可执行文件向内核申请,将文件启动为一个进程

rwx对于目录而言:

权限

说明

r

可以使用ls命令查看此目录中的文件列表

w

可以在此目录中创建、删除文件

x

可以cd进入此目录,可以使用ls -l查看目录中的文件列表

 


 

②文件权限判断逻辑

判断用户对文件的权限:

>>>前提条件:用户能够成功进入到文件所在的目录,即对操作的文件所在目录有x权限

例:这个test/目录,other即使有w权限(无x权限)不能在test/目录中删除、创建、修改文件

>>>删除文件:看用户是否具备对目录w权限

(1)先判断用户是以什么身份删除文件,按照owner->group->other顺序进行匹配

(2)若是目录的属主,目录权限的左三位有w权限,删除文件成功,无w权限,删除失败

(3)若不是目录属主,但在目录的属组中,如果目录权限的中三位有w权限,则删除文件成功,无则失败

(4)若不是目录属主,也不在目录的属组中,如果目录权限的右三位有w权限,则删除文件成功,无则失败

>>>创建文件:和用户删除文件判断逻辑一致

>>>修改文件:看用户是否具备对修改的文件w权限

(1)先判断用户是以什么身份修改文件,按照owner->group->other顺序进行匹配

(2)若是文件的属主,文件权限的左三位有w权限,修改文件成功,无w权限,修改失败

(3)若不是文件属主,但在文件的属组中,如果文件权限的中三位有w权限,则修改文件成功,无则失败

(4)若不是文件属主,也不在文件的属组中,如果文件权限的右三位有w权限,则修改文件成功,无则失败

 

判断用户对目录的权限

>>>前提条件:用户能够成功进入到目录所在的目录,即对操作的目录所在的目录有x权限

例:想要删除、创建、修改test/目录下的test/dir/目录,前提条件是对test/目录有x权限

>>>删除目录:看用户是否具备对上一级目录w权限

(1)先判断用户是以什么身份删除文件,按照owner->group->other顺序进行匹配

(2)若是上一级目录的属主,上一级目录权限的左三位有w权限,删除目录成功,无w权限,删除失败

(3)若不是上一级目录属主,但在上一级目录的属组中,

         如果上一级目录权限的中三位有w权限,则删除目录成功,无则失败

(4)若不是上一级目录属主,也不在上一级目录的属组中,

        如果上一级目录权限的右三位有w权限,则删除目录成功,无则失败

>>>创建目录:和用户删除目录判断逻辑一致(包括改名、改时间戳)

>>>修改目录(在目录下创建、删除文件):看用户是否具备对修改的目录w权限,与上一级目录是否有w权限无关

(1)先判断用户是以什么身份修改目录,按照owner->group->other顺序进行匹配

(2)若是目录的属主,目录权限的左三位有w权限,修改目录成功,无w权限,修改失败

(3)若不是目录属主,但在目录的属组中,如果目录权限的中三位有w权限,则修改目录成功,无则失败

(4)若不是目录属主,也不在目录的属组中,如果目录权限的右三位有w权限,则修改目录成功,无则失败

 


 

Linux的进程安全上下文法则

启动进程的权限问题:(先不讨论特殊权限SBIT

>>>能否启动一个可执行程序文件作为一个进程PID,取决于此用户是否对这个文件有可执行权限x

例:能否将/bin/cat执行为一个进程,取决于用户是否对此文件有x权限

/bin/cat的owner,group,other都具备x权限,所以都可以将此文件启动为一个进程

[root@localhost ~]# ls -al /bin/cat

-rwxr-xr-x. 1 root root 48568 Mar 22  2017 /bin/cat

>>>若进程启动成功,进程就拥有启动者对应的权限,进程对文件的访问(修改)权限,就是启动者对文件的访问(修改)权限

例:#/bin/cat /etc/sudoers :/bin/cat进程是否能读sudoers文件的内容,取决于进程是以谁的身份启动,
进程启动者若是owner或group,则可读取sudoers文件,若是other,则不可读取

[root@localhost ~]# ls -al /etc/sudoers

-r--r-----. 1 root root 3876 Aug  6 20:40 /etc/sudoers

 


 

文件特殊权限SUIDSGIDSBIT

>>>文件特殊权限有三种:set uidset gidsticky bit

 

set uid存在安全隐患,慎用)
>>>打破了进程安全上下文法则,针对二进制可执行文件,使执行者在执行文件时可以临时获得可执行文件owner的权限,以文件owner的身份去执行文件

>>>前提条件:用户具备此二进制可执行文件的x权限

[root@localhost ~]# ls -al executable_file

-rwxr--r--. 1 root root 0 Jul 11 20:44 executable_file

[root@localhost ~]# chmod u+s executable_file  :通过chmod命令赋予二进制可执行文件suid权限

[root@localhost ~]# ls -al executable_file

-rwsr--r--. 1 root root 0 Jul 11 20:44 executable_file

 

set gid
>>>针对目录,使任何用户在此目录下创建文件的group同该目录的group

>>>前提条件:用户具备此目录的x权限和w权限

[root@localhost ~]# ls -al dir/

drwxr-xr-x.  2 root root 4096 Sep 13 19:32 .

[root@localhost ~]#chmod g+s dir/ :通过chmod命令赋予目录sgid权限

[root@localhost ~]# ls -al dir/

drwxr-sr-x.  2 root root 4096 Sep 13 19:32 .

 

sticky bit
>>>防删除位,用户能添加文件,也可以删除自己的文件,
但不能删除该目录下其他用户的文件

>>>前提条件:用户具备此目录的x权限和w权限

[root@localhost ~]#chmod o+t dir/:通过chmod命令赋予目录sbit权限

[root@localhost ~]# ls -al dir/

drwxr-xr-t.  2 root root 4096 Sep 13 19:32 .

 


 

⑤文件默认权限:umask

>>>全称:user file-creation mode mask(用户文件创建掩码)是用户在创建文件或目录时默认权限的基础

>>>在没有umask时,文件的默认权限是0666(rw-rw-rw-),目录的默认权限是0777(rwxrwxrwx)

[root@localhost ~]# umask       :umask默认值为0022

0022

>>>默认权限(目录0777,文件0666- umask权限(0022 = 实际权限(目录0755,文件0644)

目录的权限为   “rwxrwxrwx”-“----w--w-”=“rwxr-xr-x”

文件的权限为    “rw-rw-rw-”-“----w--w-”=“rw-r--r--”

默认情况下,创建目录的权限值为755 即rwxr-xr-x ,创建普通文件的权限值为644 即rw-r--r--

 

如何设置umask

>>>当前登录窗口临时修改方式:(退出重新登录umask又变回0022

[root@localhost ~]# umask 0002 :修改umask值为0002

[root@localhost ~]# umask

0002

>>>永久有效的修改方式

[root@localhost ~]# vim /etc/profile  :输入此命令修改配置文件/etc/profile第64行

第一个umask不用修改,只需修改第二个umask,然后重新登录即可永久修改

 


 

⑥更改文件的权限:

更改文件属主和属组 chown

更改文件属组:           chgrp

更改文件的权限:        chmod

更改文件的特殊属性: chattr  (查看特殊属性 lsattr

 

更改文件属主和属组 chown   

chown - change file owner and group

>>>修改文件的属主  #chown username file

>>>修改文件的属组  #chown :groupname file (属组名前需要加: )

>>>修改文件的属主和属组 #chown username:groupname file (属组名前需要加: )

 

>>>可以用数字用户标识替代用户名,数字组标识替代属组名

>>>重要参数:-R :递归修改目录及目录下所有文件及其子目录的所有属主和属组

 

更改文件属组:chgrp(被chown替代,不常用)

 

更改文件的权限:chmod

1)字符修改方式 (推荐,不容易错)

>>>chmod u=rwx,g=r-x,o=r-- dir/ :将目录的权限设置为rwxr-xr--

>>>chmod u+w dir/ :给owner增加w权限

>>>chmod u-w dir/  :给owner减去w权限

2)数字修改方式

#chmod 664 file :将file权限设置为rw-rw-r--

 

更改文件的特殊属性:chattr重要

chattr - change file attributes on a Linux file system

重要属性

描述

A

表示文件或目录的atime不可修改

a

表示只能追加不能删除

[root@localhost tmp]# mkdir test           

[root@localhost tmp]# chattr +a test        :给test目录赋予a属性

[root@localhost tmp]# touch test/test.txt

[root@localhost tmp]# rm -f test/test.txt :由于有a属性,无法删除

rm: cannot remove `test/test.txt': Operation not permitted

s

表示会将数据同步写入磁盘中

c

表示自动压缩该文件,读取时会自动解压

i

表示文件不能写入、删除、重命名、设定链接、新增数据

 

查看文件的特殊属性:lsattr

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

>>>lsattr dir file :查看文件的特殊权限

 


 

⑦文件权限实战

1.不允许任何用户在root下添加定时任务

/var/spool/cron/root (-rwx------)赋予特殊属性i  即对此文件用chattr命令+i参数

 

2.Linux上所有用户都只能在dir目录下管理自己的文件,不允许管理其他用户的文件

#chmod o+w dir/  :目录所有人都可读可写可执行

#chmod o+t dir/ :用户不能管理该目录下其他用户的文件

 

3、把dir目录及目录下的文件和子目录的属主属组都修改为gentoo

#chown -R gentoo:gentoo :使用-R参数递归修改整个文件夹的属主属组

 

4.Linux系统中目录创建的默认权限是多少?文件的权限是多少?如何修改文件和目录的默认权限

目录创建的默认权限:rwxr-xr-x

文件创建的默认权限:rw-r--r--

修改默认权限:(1)#umask 数值 :临时修改umask的值

                        (2)vim /etc/profile:、永久修改umask的值

 

5.修改文件的权限,使得文件所有者可读可写可执行,文件属组可读可写,其他用户可写可执行

#chmod u=rwx,g=rw,o=wx file

#chmod 763 file

 

6.如何使得文件只能写不能删除?如何使得文件不能被写入、删除、重命名、设定硬链接和新增数据

#chattr +a file:文件只能写不能删除

#chattr +i file:件不能被写入、删除、重命名、设定硬链接、新增数据

 

7.疏理普通用户修改账号密码的过程,并对修改过程的权限判断进行梳理,说明密码修改成功的原因

/usr/bin/passwd是用户修改密码的二进制可执行文件

/etc/shadow是存放用户密码的配置文本

普通用户修改密码过程:执行passwd(rwsr-xr-x)二进制可执行文件时,用户有对passwd的x权限,并且passwd有set uid权限,
用户临时获得该passwd文件属主root的权限,可以去修改/etc/shadow(---------)的文本内容

 

 


说明:

>>>以上内容是本人学习的总结

>>>如还有错误,请留言,指正

>>>亦可分享自己的想法,互相学习

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值