美文网首页Linux
28.linux文件权限讨论

28.linux文件权限讨论

作者: 扶桑啊啊 | 来源:发表于2018-05-16 17:27 被阅读0次

    一:普通权限

    1.umask查看缺省权限,一般默认为0022

    根据缺省权限来配置件的权限,777-022=755。

    1.1所以,创建目录的默认权限是755,rwxr_xr_x;

    ls -ld aaa  //查看当前目录aaa的信息

    ls -i   //查看节点号iNode

    1.2创建文件的默认权限是644,rw_r__r__;(为安全考虑,默认文件不具有可执行权限)

    1.3如何来理解这几种读写权限呢?r意味着对文件具有读权限,w意味着对文件具有写权限,x意味着对文件具有执行权限。所以对文件和目录分别来说,具体可执行的命令如下:

    对文件来说,

    r: cat  /more  /head  /tail  /less

    w: vim

    x: script  command

    对目录来说,

    r: ls

    w: touch  /mkdir  /rmdir  /rm

    x: cd

    2.关于权限几个小问题

    问:某用户建立的文件,另一个用户可不可以对其进行删除呢?

    答:可以的,删除一个文件的前提是,对这个文件所在的目录具有写权限,如果一个目录的权限是777,那么任何用户都对当前目录下的文件进行删除操作。


    问:某用户创建一个文件后,想将其所有者改为root,可不可以?

    答:不可以,只有root可以改变文件的所有者,文件的创建者都不可以。

    如下例,dazhutizi建立的abcd文件,只有root才可以将所有者改为root

    切换到root下,将刚刚普通用户创建的文件abcd的所有者改为root。


    删除一个非空目录时,虽然被终止了删除操作,但是终止之前的操作已经完成了,所以如下图我们可以看到文件a3和目录a4已经被删除了。


    二:特殊权限:ACL权限

    用处:身份不够用时(身份包括,所有者所属组合其他人三种),需用ACL权限

    1.查看acl权限是否开启

    2.可以看到本系统是默认开启的,如果没有开启,有两种方式来开启ACL权限

    2.1.mount -o remount,acl //用mount命令将根分区重新挂载,挂载的时候开启ACL权限,这种方法是临时生效的

    2.2.vi /etc/fstab  //在根分区的挂载行,defaults后面加,acl

    mount -o remount  //重新挂载文件系统或重启,使修改生效。

    3.设置acl权限

    实验:

    3.1新建两个普通用户,一个组,然后将这两个用户加入到新组里

    3.2创建本次测试的目录,观察其初始权限为755,将其权限改为770,此时作为当前目录的所有者root对目录具有7的权限,所属组root有7的权限,其他人没有任何权限

    3.3修改/tmp/project的所有者和所属组,使得刚刚新建的用户user1和user2(在组aclgroup里)能够拥有7的权限,此时其他人仍没有权限

    3.4新建一个其他人用户,因为他对这个/tmp/project目录没有任何权限。但其需要对目录进行读和执行的访问,所以为他设定acl权限。

    3.5查看/tmp/project目录的权限,可以看到所有者root具有7,普通用户dazhutizi有5,所属组aclgroup有7的权限,其他人没有权限。

    4.删除acl权限

    setfacl -b +目录 //删除当前目录的所有acl权限

    setfacl -x +目录 //删除当前目录的指定用户acl权限

    setfacl -g +目录 //删除当前目录的指定组acl权限

    5.递归与默认ACL权限

    setfacl -m u:user:rx -R /tmp/project  //递归,对子文件和子目录也生效

    setfacl -m d:u:user:rx /tmp/project  //设置默认参数,目录内的子文件继承父文件的acl权限

    6.mask:最大有效权限,一般设为rwx

    上图中出现了mask权限,mask为最大有效权限,它限制其他用户的权限

    acl与所属组对当前文件设定的权限,与mask相与之后,才是真正的权限。


    三:特殊权限:SetUID,SetGID...

    SetUID设置chmod 4755 xx,4表示SetUID

    只针对可执行文件,

    执行者需要有x的权限

    比如passwd命令,passwd命令修改密码时,会修改/etc/shadow文件,可以看到shadow文件的权限是000,只有root能对其进行读写执行操作,

    但是有passwd权限下suid,所以passwd命令在普通用户下执行时,普通用户相当于暂时变成超级用户,故能修改/etc/shadow文件。

    但cat命令是不具有suid的,所以它在普通用户下都不能查看/etc/shadow。

    给它加一个suid,那么普通用户在使用cat命令时会变身超级用户,此时可以查看/etc/shadow文件了。

    结束后删除suid权限

    定期查看系统中有哪些SUID和SGID文件:

    find / -type f \( -perm -4000 -o -perm -2000 \) -ls


    四、特殊权限:文件系统属性权限Chattr,用+-=来设置

    -i  ——文件,只能查看文件,不能删除修改重命名

            ——目录,不能在目录下建立和删除文件,但可以修改目录中的文件

    -a ——文件,可以用echo追加文件内容,不能删除和修改文件内容

        ——目录,可以在目录中建立和修改文件,不允许删除

    查看文件的chattr权限,用lsattr命令


    五、特殊权限:sudo+操作命令

    visudo  //通过配置/etc/sudoers文件,来实现sudo命令

    sudo+操作命令

    特殊用法:可以授权普通用户有重启服务器的权限,visudo命令在文件内写入

    user1  ALL=/sbin/shutdown -r now

    相关文章

      网友评论

        本文标题:28.linux文件权限讨论

        本文链接:https://www.haomeiwen.com/subject/kkvicftx.html