Linux平台下的文件权限安全基本管理

Linux平台下的文件权限安全基本管理

1.文件权限存在的意义

1.文件权限是系统最底层的安全设定方式之一;

2.保证文件可以被可用的用户来进行相应的操作。

2.文件权限的查看

对于文件:

ls -l file
ll file

对于目录:

ls -ld dir
ll -d dir

                            

对于一个大目录下的所有子目录和文件,我们可以采用递归的方法来查看文件权限:

ls -lR /mnt/
ll -R /mnt/

为了验证命令我们新建用户,并完成实验:

                                

3.文件权限的读取

以file的文件权限信息为例,我们对文件的权限作以解读:

                                               

        标   号                                                                   含                义
           [1]

文件的类型:“-”——空文件或者文本、“d”——目录、“l”——软链接、

                     “s”——socket套接字、“b”——block快设备、“c”——字符设备

           [2]

文件权限:  rw- |  r--  | r--

                     1      2     3

    1.[u]文件拥有者对文件能做什么操作

    2.[g]文件所有组对文件能做什么操作

    3.[o]其他人能对文件做什么操作

           [3]

对文件:文件硬链接的个数(文件内容被记录的次数)

对目录:目录中子目录的个数

           [4]

文件的所有人
           [5] 文件的所有组
           [6]

对文件:文件大小

对目录:目录中,子文件的元数据(matedate可以理解为文件的属性)大小

           [7] 文件的内容被最后一次修改的时间
           [8] 文件、目录名称

4.如何改变文件的所有人

改变所有人:chmod

改变所有组:chgrp

我们以改变/mnt/file1的所有组和所有人为例:

注意:改变所有人和所有组的前提是所有组和所有人必须已经存在

                                 

同时改变所有人和所有组:chmod    wen:renshi  /mnt/file1

                                  

对于目录来说,上述指令只改变目录本身:

我们在/mnt/test1/下新建hello1和hello2,以此验证实验。

                              

如果想要连同目录下的子目录和文件一起更改所有人和所有组,可以用chown -R 来更改:

                              

5.如何改变文件的权限

1.对权限的理解:

            r

对文件:是否可以查看文件中的内容                --->cat file

对目录:是否可以查看目录中有什么子文件或者子目录    -------> ls dir

           w

对文件:是否可以改变文件里面记录的字符

对目录:是否可以对目录中子目录或子文件的元数据进行更改

           x

对文件:是否可以通过文件名称调用文件内记录的程序

对目录:是否可以进入目录

2.更改方式:

chmod <u|g|o><+|-|=><r|w|x> file||dir
##例如:
chmod u-r file    ##去除文件所有人读的权限  
chmod g+w file    ##给文件所有组写的权限
chmod o=x dir     ##指定其他人对dir目录的权限为执行
chmod o=rwx dir   ##指定其他人对dir目录的权限为rwx

我们对/mnt/file1进行权限更改实验:

                              

对于所有人、所有组、其他人,我们可以通过数字来定义三者的权限:

 r      w     x
2^2    2^1   2^0
 4      2     1
rwx rwx rwx
 7   7   7
7:rwx
6:rw-
5:r-x
4:r--
3:-wx
2:-w-
1:--x
0:---
chmod 541 file  ---->   r-x|r--|--r

例如:给/mnt/file2的权限为rw-r-x-w-:

chmod 652 /mnt/file2

                           

6.umask

umask  系统建立文件时默认保留的权限

1.临时更改系统默认权限

umask 为022时,保留的权限为--- -w- -w-  所以新建目录的权限为 rwx r-x r-x  即755=777-022

新建文件的权限为777-755-111=644   即为rw- r-- r--

注:减111是文件系统所决定的。

umask        ##查看当前的umask值
umask  077   ##临时更改系统默认保留权限

                         

用umask只能临时更改系统默认保留权限,当关闭shell重开一个时,就会重置

2.永久更改系统默认保留权限

(1)系统配置

系统配置文件:/etc/profile

vim /etc/profile     ##打开配置文件

                    

60行的为普通用户的默认保留权限;62行为超级用户的默认保留权限

更改62行的umask值为077(我们用超级用户建立文件和目录来完成实验),:wq退出保存

(2)shell配置

shell配置文件:/etc/bashrc

                       

71行的为普通用户的默认保留权限;73行为超级用户的默认保留权限

更改73行的umask值为077(我们用超级用户建立文件和目录来完成实验),:wq退出保存

source /etc/profile  ##让文件立即生效
source /etc/bashrc   ##让文件立即生效

                                      

7.特殊权限

1.sticky  粘滞位

作用:只针对目录生效,当一个目录上有sticky权限时,在这个目录中的文件只能被文件的所有者删除

设定方式:

chmod  o+t  dir
chmod  1xxx  dir

验证sticky粘滞位的作用:

1)在/mnt/下建立/pub目录,并且在/pub目录中新建file1、file2、file3,给它们满权限

                                         

2)切换到student用户,删除/mnt/pub/file3

                                        

                                        删除成功!

3)给/mnt/pub目录设置粘滞位

                                             

                                       可以看到/pub的o位权限变成了rwt,表示设置成功。

4)再次切换到student用户,删除/mnt/pub/file2

                                       

                                        删除不成功,提示没有权限。

2.sgid  强制位

设定方法:

chmod g+s  file|dir
chmod 2xxx  file|dir

作用:  (1)对文件:指针对于二进制可执行文件,当文件上有sgid权限时,任何人使用此文件产生的进程都属于文件的所有组

  验证sgid  强制位对文件的作用:

1)ls -l /bin/watch,查看文件属性

                             

2)执行watch date命令,使用ps查看进程

watch date
ps ax -o comm,user,group | grep watch

                              

3)修改/bin/watch的所有组为student,对/bin/watch设置sgid强制位,再次执行watch date,使用ps查看进程

                              

作用:(2)对目录:当目录上有sgid权限时,任何人在此目录中建立的子文件都属于目录的所有组

验证sgid  强制位对目录的作用:

1)在/mnt目录下新建目录/jishu,给它满权限

                               

2)切换用户为student,在/mnt/jishu下新建文件,查看文件属性

                              

3)对目录/mnt/jishu设定强制位sgid权限,查看目录属性,'s'已经表示设定成功

                                   

4)再次切换用户为student,在/mnt/jishu下新建文件,查看文件属性

                              

3.suid  冒险位

作用:只针对于二进制可执行文件,当文件上有suid权限的时候,任何人执行这个文件程序产生的进程都属于文件的所有人

设定方式:

chmod  u+s  file
chmod  4xxx  file

验证suid权限:

1)执行watch命令,查看watch进程

                                 

2)修改/bin/watch文件的所有人为student,然后在对/bin/watch文件设置suid权限

                                    

3)再次执行watch命令,查看watch进程

                                   

注意:设置特殊权限后清除特殊权限:

chmod  0xxx  file|dir

8.acl 权限列表

1.作用:让特定的用户对特定的文件拥有特定权限。

2.acl列表查看

- rw- rwx r-- +  1  root  root  0 Jan 3 02:01  file
                  “+”: acl开启标志
getfacl file           ## 查看acl开启的文件的权限

#file: file  ## 文件名称
# owner: root  ## 文件拥有人
# group: root  ## 文件拥有组
user::rw-   ## 文件拥有人的权限
user:student:rwx ## 指定用户的权限
group::r--    ## 文件拥有组的权限
mask::rwx    ## 能赋予用户最大的权限阀值
other::r--    ## 其他人的权限

                                                       

3.acl列表的管理

setfacl -m  u:username:rwx file            ## 设定username对file拥有rwx权限
setfacl -m  g:groupname:rwx   file         ## 设定group组成员对file拥有rwx权限
setfacl -x  u:username  file               ## 从acl列表中删除username
setfacl -b  file                           ## 删除file上的acl权限列表

1)设定wen对/mnt/file有r和x的权限

                                 

2)设定shengchan用户组对/mnt/file1有r和w的能力,并验证:

                                

3)从/mnt/file的acl列表中删除wen

                                 

4)删除/mnt/file1的acl权限列表

                                   

4.mask值

      1.在权限列表中mask标示能生效的权力值。

      2.当用chmod减小开启acl的文件权限时,mask值会发生改变:

chmod g-w /mnt/file1

                          

      3.恢复mask值:

                          

5.acl的默认权限设定

   acl默认权限只针对目录设定。
   acl权限只针对设定完成之后新建立的文件或目录生效,而已经存在的文件是不会继承默认权限。

setfacl  -m  d:u:wen:rwx  /mnt/test

以例子说明acl默认权限列表的设定:

1)首先在/mnt下建立test目录,然后在test目录下建立hello目录和file1文件,进入wen用户,在test目录下的hello目录下新建文 件file2, 并且对/mnt/test/file1进行写入操作:

                              

                               均不被允许,请求被拒绝。

2)使用acl默认权限权限设定wen对/mnt/test/目录的满权限,设定后在test目录下建立目录hello1和文件file2 :

                                  

3)切换用户为wen,对设定前的/mnt/test中原有的子文件和子目录进行操作:

                                    

       对于在设定默认权限之前的已有的文件和目录,依旧没有操作权限

4)切换用户为wen,对设定后的/mnt/test中新建的子文件和子目录进行操作:

                                     

猜你喜欢

转载自blog.csdn.net/weixin_41975471/article/details/85595008
今日推荐