来自 操作系统 2019-10-22 08:42 的文章
当前位置: 网上澳门金莎娱乐 > 操作系统 > 正文

Linux-文件权限

Linux文件权限管理

一.文件权限属性

(1) [root@pc root]# ls -l install.log

-rw-r--r-- 1 root root 26195 Dec 17 10:42 install.log

图片 1

image.png


(2) 文件属性操作

  • chown 设置文件的所有者:
    设置格式 'chown owner' 创建一个f1文件,它的所有者为root,通过chown 命令将f1 的所有者改为wangcai
![](https://upload-images.jianshu.io/upload_images/6851471-7f4609d274e58859.png)

image.png
  • chown也可以修改所属于组和所有者
    格式: chown owner:group file ——其中':'可以用'.'来代替,也可以':group file'只改变组
    创建一个f2文件,查看所有者和所属组,然后通过chown wangcai:sasles f2
    则将f2的属性改变

    图片 2

    image.png

chown -R 为递归: 'chown -R wang jerry/'
将jerry里的所有用户都改为wang用户

基本权限 UGO

文件权限设置: 可以赋于某个用户或组 能够以何种方式 访问某个文件

文件权限管理之: UGO设置基本权限(r、w、x)

rw-r--r-- alice hr install.log

权限对象:
属主:         u
属组:         g
其他人:       o

权限类型:
读:r          4
写:w         2
执行: x        1

注意: 普通用户无法执行 'chown'命令

  • chgrp 设置文件的属组信息
    格式: charg libai f2——将f2文件的所属组改为libai(前提libai这个组存在)
    charg -R:递归

==设置权限

注意:普通用户也可以执行 charg命令,当普通通用户属于该组时就可以执行。

1. 更改文件是属主、属组

=chown:
[root@localhost ~]# chown alice.hr file1              //改属主、属组
[root@localhost ~]# chown alice     file1             //只改属主
[root@localhost ~]# chown        .hr file1            //只改属组
=chgrp:
[root@localhost ~]# chgrp it file1                    //改文件属组
[root@localhost ~]# chgrp -R it dir1                  //改文件属组

二.文件权限

(1)首先文件的权限主要针对三类对象进行定义

owner: 属主 u group: 属组 g other: 其他 o
三类对象的权限:
r:对文件有读的权限
w:对文件有写的权限
x:对文件有执行的的权限

  • 文件:
    r: 可以查看内容,确定文件类型
    w: 可修改其内容
    x: 可以把此文件提请内核启动为一个进程 ,决定是否可以执行,对root也有效果
![](https://upload-images.jianshu.io/upload_images/6851471-4291cda76fead268.png)

image.png



查看f2文件:我们可以看出,f2的用户'wangcai'的权限为'rw-'说明它具有读和写的功能  
所属组为'sasles'的权限为'rw-' 也具有读和写的权限
而其他用户只有写的权限
  • 目录:
    只有'r'权限: 可以使用ls查看此目录中文件列表 ,但是不能访问 ,也不能执行cd命令(删除和查看)
    只有'w'权限: 可在此目录中创建文件,也可删除此目录中的文件(但需要x权限才能生效)
    只有'x'权限: 不可以使用ls -l查看此目录中文件列表,但可以访问目录下的文件(前提知道文件名),也可以cd进入此目录——执行权力是个基本能力
  • 目录:
    X:只给目录x权限,对文件:如果文件中有x权限,就可以增加赋予'x'权限,如果文件没有'x'权限就不赋予该权限

(2)文件权限操作命令

  • chmod:修改权限
    修改模式: chmod who opt per file
    who: 代表有谁——u ,g ,o a(所有人)
    opt: 代表操作——'+'(增加权限) '-'(减少权限) '='(赋予权限)
    per: 'r'权限 'w'权限 'x'权限

    图片 3

    image.png

chmod -R g+rwX
/testdir:递归模式,对用户组增加读写执行权限,然后对/testdir目录下的文件递归赋予权限  
chmod 660 file :给文件赋予了u=rw, g=rw ,o=

2. 更改权限

=a. 使用符号
                    对象        赋值符        权限类型
                    u                +                r
chmod             g                 -                w          file1
                    o                =                x
                    a
[root@localhost ~]# chmod u+x file1                 //属主增加执行
[root@localhost ~]# chmod a=rwx file1               //所有人等于读写执行
[root@localhost ~]# chmod a=- file1                 //所有人没有权限
[root@localhost ~]# chmod ug=rw,o=r file1           //属主属组等于读写,其他人只读
[root@localhost ~]# ll file1                        //以长模式方式查看文件权限
-rw-rw-r-- 1 alice it 17 10-25 16:45 file1          //显示的结果

=b. 使用数字
[root@localhost ~]# chmod 644 file1
[root@localhost ~]# ll file1
-rw-r--r-- 1 alice it 17 10-25 16:45 file1

(3)新建文件和目录的默认权限

===设置权限示例

针对hr部门的访问目录设置权限,要求如下:

  1. root用户和hr组的员工可以读、写、执行
  2. 其他用户没有任何权限

    [root@localhost ~]# groupadd hr [root@localhost ~]# useradd hr01 -G hr [root@localhost ~]# useradd hr02 -G hr [root@localhost ~]# mkdir /home/hr

    [root@localhost ~]# chgrp hr /home/hr [root@localhost ~]# chmod 770 /home/hr [root@localhost ~]# ll -d /home/hr/ drwxrwx---. 2 root hr 4096 3月 13 14:26 /home/hr/

重要: r、w、x权限对文件和目录的意义

图片 4

umask值 可以用来保留在创建文件权限

  • 初步算法: umask+default=file666/dir/777

    文件的最大权限为666(u=rw- g=rw- o=rw-)'不能给文件赋予执行的权利,否则会有危险',所以文件最大权限为666——当umask为022时,那么新创建的文件应该为666-022=644 结果如图:

    图片 5

    image.png


    目录的最大权限为777(u=rwx g=rwx o=rwx)——同理,创建一个新的文件夹(dir5)应该为777-022=755 结果如图:

    图片 6

    image.png


    *但是如果umask为015时,按照初步算法的结果应该为:651(rw- r-x --x)但是结果如图所示:

    图片 7

    image.png


    所以这里引出了umask的作用:它真正的算法是从对应中将umask的指定权限去掉
    例如以上图为例:666——对应二进制是:110110110,uamsk:000001101

    通过对位去权限的的原则得出结果为:110110010和上图结果一样
    权限: 666-umask 如果所得结果某位存在执行(奇数)权限,则将其权限+1 ,结果为偶数则不变
    新建DIR权限: 777-umask
    非特权用户umask是 002 
    root的umask 是 022 
    umask: 查看 
    umask #: 设定 umask 002 
    umask –S 模式方式显示 u=rw g=r o=
    umask –p 输出可被调用 显示umask结果 可以用'umask -p >>.bashrc'来代替nano的作用
    全局设置: /etc/bashrc
    用户设置:~/.bashrc

  • 小练习

1、当用户xiaoming对/testdir 目录无执行权限时,意味着无法做哪些操作?
答:用户对目录没有执行权限,意味着不能执行cd命令,也无法进入目录内,即使有读权限也无法进入,不能进入目录内查看文件列表,无法修改
2、当用户xiaoqiang对/testdir 目录无读权限时,意味着无 法做哪些操作?
答:没有读权限就无法查看目录列表的内容,除非之前就知道目录列表中的文件名
3、当用户wangcai 对/testdir 目录无写权限时,该目录下的 只读文件file1是否可修改和删除? 
答:没有写的权限就不能执行创建或是删除目录,因为该目录下的文件只有只读的权限
4、当用户wangcai 对/testdir 目录有写和执行权限时,该目 录下的只读文件file1是否可修改和删除? 
答:当具有写和执行的权限时,就可以实现对只读文件删除,但是不能修改,可以改名
5、复制/etc/fstab文件到/var/tmp下,设置文件所有者为 wangcai读写权限,所属组为sysadmins组有读写权限,其他 人无权限 
答:首先 groupadd sysadmins 创建一个组,然后

图片 8

image.png

图片 9

image.png

6、误删除了用户wangcai的家目录,请重建并恢复该用户家 目录及相应的权限属性
答:
方法一

图片 10

image.png

方法二
cp -r /etc/skel /home/mage chown -R mage:mage /home/mage chmod 700 /home/mage

示例1: 对文件的影响

[root@localhost ~]# mkdir /dir10
[root@localhost ~]# touch /dir10/file1
[root@localhost ~]# chmod 777 /dir10/file1 

[root@localhost ~]# ll -d /dir10/
drwxr-xr-x. 2 root root 4096 3月  11 18:37 /dir10/
[root@localhost ~]# ll /dir10/file1 
-rwxrwxrwx. 1 root root 0 3月  11 18:37 /dir10/file1

[alice@tianyun ~]$ cat /dir10/file1 
[alice@tianyun ~]$ rm -rf /dir10/file1 
rm: 无法删除"/dir10/file1": 权限不够

**三. Linux文件系统上的特殊权限 **

- suid

含义:影响所有者的权限,用户可以继承程序所有者的功能,作用在所有者上
作用:作用在可执行的二进制程序,将当前运行着的身份切换成该程序所有者的身份,权限也为该所有者的权限,但suid不能作用在目录上

图片 11

image.png


权限设定模式:
chmod u+s file
chmod u-s file
chmod 4777 file——'4'代表suid 就是给文件加上's'权限
s权限位在所有者的执行位上,当文件本身具有'x'权限时,增加's'位,则显示's',当文件本身没有执行权限时,增加's'权限则会显示'S'
需要注意的是:在某些执行程序中,如果加上's'权限,就意味着,任何发起者都继承了该文件的root权限,能够执行各种操作,这本身是不安全的,显示如如图
[root@centos7 ~]#ll /bin/nano
-rwxr-xr-x. 1 root root 205904 Jun 10 2014 /bin/nano
[root@centos7 ~]#chmod u+s /bin/nano
[root@centos7 ~]#ll /bin/nano
-rwsr-xr-x. 1 root root 205904 Jun 10 2014 /bin/nano

- sgid

含义:影响所属组的权限,作用在所属组上
作用:作用在可执行的二进制程序上,继承运行程序所属组的权限
权限设定模式:
chmod g+s file
chmod g-s file
原理类似suid
sgid也可以作用在目录上,对某目录有写权限的用户,在该目录下创建了一个新的文件,那么此文件就继承了该目录的属组
权限设定模式:
chmod g+s dir
chmod g-s dir
chmod 2770 dir
权限位的映射在所属组的执行位上,有关大小写的问题与suid相同

- sticky

作用:只作用在目录上,对文件无效,只有所有者或是root能删除自己的文件
在传统意义上,只要是具有写权限的目录,那么通常任何用户可以删除该目录中的任何文件,无论该文件的权限或拥有权 ,所以加入sticky,来保护目录下的文件
权限设定:
chmod o+t DIR
chmod o-t DIR
chmod 1770 DIR
权限位的映射在其他人的执行位上,有关大小写的问题与suid相同

图片 12

image.png

- 设定文件特定属性

(1)chattr +i 不能删除,改名,更改 对文件起到保护作用

图片 13

image.png

执行 chattr -i 可以还原
chattr +i shadow
[root@centos7 app]#lsattr shadow
----i----------- shadow
[root@centos7 app]#chattr -i shadow
[root@centos7 app]#lsattr shadow
---------------- shadow
[root@centos7 app]#lsattr f1
(2)chattr +a 只能追加内容 
(3)lsattr 显示特定属性* ## ACL访问控制列表
作用:除了文件的所有者,所属组和其它人,可以对更多的用户设置权限
ACL生效顺序:所有者,自定义用户,自定义组,其他人
CentOS7 默认创建的xfs和ext4文件系统具有ACL功能 
CentOS7 之前版本,默认手工创建的ext4文件系统无ACL功 能,需手动增加 tune2fs –o acl /dev/sdb1 mount –o acl /dev/sdb1 /mnt/test

  • 设置ACL权限——setfacl
    setfacl -m u:wangcai:rwx file|directory ——对wangcai这个用户设置权限,可作用在文件上,也可以作用在目录上setfacl -Rm g:sales:rwX directory ——配合递归功能对sales组以及成员都设置了rwX权限,只作用在目录上,把'X'改为'x'就可以作用到文件上了
    [root@centos7 app]#setfacl -Rm u:wangcai:rwx /app
    [root@centos7 app]#ll /app
    total 8
    drwxrwsr-x+ 2 root sasles 25 Jul 25 10:34 dir
    drwxrwxr-x+ 3 root root 31 Jul 25 11:52 dir1
    -rw-rwxr--+ 1 wangcai root 541 Jul 25 11:29 f1
    -r--rwx---+ 1 root root 1978 Jul 25 10:43 shadow
    [root@centos7 app]#getfacl f1
    # file: f1
    # owner: wangcai
    # group: root
    user::rw-
    user:wangcai:rwx
    group::r--
    group:sasles:rw-
    mask::rwx
    other::r--
    [root@centos7 app]#getfacl dir1/dir2
    # file: dir1/dir2
    # owner: root
    # group: root
    user::rwx
    user:wangcai:rwx
    group::r-x
    mask::rwx
    other::r-x
    setfacl -M file.acl file|directory —— 调用作用
    [root@centos7 app]#touch acl.txt
    [root@centos7 app]#echo "u:wangcai:rwx" >acl.txt
    [root@centos7 app]#cat acl.txt
    u:wangcai:rwx
    [root@centos7 app]#stefacl -M acl.txt f1
    setfacl -M acl.txt f1
    [root@centos7 app]#getfacl f1
    # file: f1
    # owner: wangcai
    # group: root
    user::rw-
    user:wangcai:rwx
    group::r--
    group:sasles:rw-
    mask::rwx
    other::r--
    setfacl -m g:salesgroup:rw file| directory ——对这个组设置权限
    setfacl -m d:u:wang:rx directory ——对该目录下新创建的文件设置权限,不影响旧文件,只是针对目录有效
    setfacl -x u:wang file |directory ——删除wang用户和权限
    setfacl -X file.acl directory—— 删除权限
    setfacl -b directory——清空目录里的所有文件的acl权限
    setfacl -k dir 删除默认ACL权限 
    setfacl –b file1清除所有ACL权限 
    setfacl -m mask::rx file ——除了other和所有者不能限制,其他的都被mask限制,相当于设置了一个高压线,不能超过mask!
    [root@centos7 app]#setfacl -m mask::r f1
    [root@centos7 app]#getfacl f1
    file: f1
    owner: wangcai
    group: root
    user::rw-
    user:wangcai:rw- #effective:r--
    group::r--
    group:sasles:rw- #effective:r--
    mask::r--
    other::r--

  • 显示ACL权限——getfacl
    getfacl file |directory
    [root@centos7 app]#getfacl f1
    file: f1
    owner: wangcai
    group: root
    user::rw-
    user:wangcai:rw-
    group::r--
    group:sasles:rw-
    mask::rw-
    other::r--
    getfacl file1 | setfacl --set-file=- file2 复制file1 的acl权限给file2
    getfacl -R /tmp/dir1 > acl.txt ——通过递归方式将ACL权限给acl.txt
    setfacl -R -b /tmp/dir1 ——以递归方式,清空该目录下的acl权限
    setfacl -R --set-file=acl.txt /tmp/dir1 ——恢复/tmp/dir的acl权限
    setfacl --restore acl.txt ——还原acl.txt权限
    getfacl -R /tmp/dir1——将acl权限递归给dir1目录下的文件

示例2: 对目录有w权限

[root@localhost ~]# chmod 777 /dir10/
[root@localhost ~]# chmod 000 /dir10/file1 
[root@localhost ~]# ll -d /dir10/
drwxrwxrwx. 2 root root 4096 3月  11 18:37 /dir10/
[root@localhost ~]# ll /dir10/file1 
----------. 1 root root 0 3月  11 18:37 /dir10/file1

[alice@tianyun ~]$ cat /dir10/file1 
cat: /dir10/file1: 权限不够
[alice@tianyun ~]$ rm -rf /dir10/file1 
[alice@tianyun ~]$ touch /dir10/file2

问题1:

[root@localhost ~]# ll /root/install.log
-rw-r--r--. 1 root root 46571 6月   1 23:37 /root/install.log
[alice@tianyun ~]$ cat /root/install.log
cat: /root/install.log: 权限不够

问题2: alice能删除/下的任何文件吗?

[root@localhost ~]# chmod 777 /
[root@localhost ~]# ll -d /
drwxrwxrwx. 27 root root 4096 6月   4 11:32 /
[alice@tianyun ~]$ rm -rf /etc

再次认识一下文件和目录:

图片 14

基本权限 ACL

文件权限管理之: ACL设置基本权限(r、w、x)
UGO设置基本权限: 只能一个用户,一个组和其他人
ACL 设置基本权限: r,w,x

=ACL基本用法=

设置:
[root@localhost ~]# touch /home/test.txt
[root@localhost ~]# ll /home/test.txt    
-rw-r--r-- 1 root root 0 10-26 13:59 /home/test.txt

[root@localhost ~]# getfacl /home/test.txt
[root@localhost ~]# setfacl -m u:alice:rw /home/test.txt              //增加用户alice权限
[root@localhost ~]# setfacl -m u:jack:- /home/test.txt                //增加用户jack权限
[root@localhost ~]# setfacl -m o::rw /home/test.txt

查看/删除:
[root@localhost ~]# ll /home/test.txt 
-rw-rw-r--+ 1 root root 0 10-26 13:59 /home/test.txt
[root@localhost ~]# getfacl /home/test.txt

[root@localhost ~]# setfacl -m g:hr:r /home/test.txt
[root@localhost ~]# setfacl -x g:hr /home/test.txt                     //删除组hr的acl权限
[root@localhost ~]# setfacl -b /home/test.txt                          //删除所有acl权限

=查看帮助=

[root@localhost ~]# man setfacl
/EXAMPLES
[root@localhost ~]# getfacl file1 |setfacl  --set-file=- file2       //复制file1的ACL权限给file2

=ACL高级用法=

mask:
用于临时降低用户或组(除属主和其他人)的权限
建议:为了方便管理文件权限,其他人的权限置为空
[root@localhost ~]# setfacl -m m::--- /home/file100.txt


default: 继承(默认)
要求: 希望alice能够对/home以及以后在/home下新建的文件有读、写、执行权限

思路:
步骤一: 赋予alice对/home读、写、执行权限
[root@localhost ~]# setfacl -m u:alice:rwx /home

步骤二: 赋予alice对以后在/home下新建的文件有读、写、执行权限 (使alice的权限继承)
[root@localhost ~]# setfacl -m d:u:alice:rwx /home

本文由网上澳门金莎娱乐发布于操作系统,转载请注明出处:Linux-文件权限

关键词: