zoukankan      html  css  js  c++  java
  • Linux入门:文件权限、用户、用户组(比较清楚)

    单个文件名或目录名长度不超过255字符;
    文件或目录的绝对路径长度不超过4096字符;
     

    一、文件所有者与用户组

     
     
    一个文件有很多属性,包括文件类型、文件权限、文件隐藏权限、文件所有者、用户组、文件大小、创建日期、修改日期、访问日期等,比如下面是/etc/inittab文件的属性:
     
    1.文件类型
     
    (1)d:目录;find / -type d 查询;
    (2)-:一般文件;find / -type f 查询;
    (3)l:链接文件;find / -type l 查询;
    (4)b:块设备,即存储设备,比如/dev/sda;find / -type b 查询;
    (5)c:字符设备,即串行端口设备,如键盘,比如/dev/zero;find / -type c 查询;
    (6)s:socket,比如/var/run/acpid.socket;find / -type s 查询;
    (7)p:pipe文件,比如我们可以通过mknod mypipe p 创建pipe文件;find / -type p 查询;
     
    2.文件所有者与用户组
     
    首先说明一点:文件所有者与用户组本身没有什么关系,比如用户组可以是root,但是文件所有者为xiazdong;
    案例分析:
    (1)一个文件的文件所有者为xiazdong,用户组为root,当前登录用户为xiazdong,如果想要让文件的所有者变成root,能成功吗?不能;
    (2)一个文件的文件所有者为xiazdong,用户组为root,当前登录用户为root,如果想要让文件的所有者变成root,能成功吗?能;
    总结一点:改文件的所有者、用户组应该是root的职责;
     
    再说明一点:一个用户总会归属于一个或多个用户组,一个用户组里可以有多个用户,比如root用户归属于root用户组,但是我们也可以创建一个用户xzdong,及归属于group1用户组,又归属于group2用户组;
     
    3.文件的mtime、atime、ctime
     
    mtime:文件内容修改时间;
    atime:文件访问时间;
    ctime:文件权限、所有者被修改的时间;
     
    ls --time=atime/ctime
     
     
    命令
     
    chgrp、chown命令用来设置文件的所有者、用户组;
    (1)chgrp xiazdong test.txt:将test.txt的文件用户组设置为xiazdong;
    (2)chgrp xiazdong dir:将dir的文件用户组设置为xiazdong;
    (3)chown xiazdong test.txt:将test.txt的文件所有者设置为xiazdong;
    (4)chown xiazdong:root test.txt:将test.txt的文件所有者设置为xiazdong,用户组设置为root;
     
     
    二、文件权限
     
     
    文件权限规定了文件所有者对文件/目录的权限、文件所属用户组的成员对文件/目录的权限、其他人对于文件/目录的权限;
    (1)r:可读权限;
    (2)w:可写权限;
    (3)x:可执行权限;
     
    对于目录和文件来说,这些权限代表的意义是不同的。
    对于文件来说:
    (1)r:可以读取文件的内容;
    (2)w:可以写入文件内容,但是不能删除文件,如果要赋予删除文件的权限,则需要指定目录权限;
    (3)x:执行文件,不是每个文件都需要这个权限的,比如txt文件不需要;
     
    对于目录来说:
    (1)r:可以读取目录下的目录结构,即能够执行ls查看目录下的文件名;
    (2)w:能够改变目录的结构,即添加、删除目录下的文件、对文件重命名;
    (3)x:能够进入目录,即cd到该目录;
    但是请注意:如果目录只有r,但没有x权限,则只能ls出文件名,而不能显示文件属性,如下图所示:
     
     
    注:如果dir目录下存在test.txt文件,如果xiazdong用户没有dir的写权限,则就算对test.txt有rwx权限,也不能删除test.txt;
     
    最要注意的是:不管文件权限设置成什么样了(此处只讨论一般的权限,特殊权限不算),root都能够对文件或目录rwx;
     
    案例:-rwxr--r-- 表示(1)文件所有者能够对该文件可读、可写、可执行;(2)所属用户组能够对该文件可读;(3)其他人能够对该文件可读;
     
    命令
     
    chmod命令可以设置文件的权限;
    注意:我们可以通过数字或符号设置权限;
    如果是数字,则4代表r,2代表w,1代表x,如果是5代表r-x,6代表rw-,7代表rwx;
    如果是符号,则a代表全部人,u代表owner,g代表group,o代表others,r就是r,w就是w,x就是x,什么都不写表示一个权限都没有;
    (1)chmod 755 test.txt:赋予test.txt rwxr-xr-x
    (2)chmod u=rwx,go=r test.txt:赋予test.txt  rwxr--r--
    (3)chmod a=r test.txt:赋予test.txt  r--r--r--
    (4)chmod a+x test.txt:给test.txt全部的人添加x权限;
    (5)chmod a-x test.txt:给test.txt全部的人删除x权限;
    (6)chmod u=rwx,go= test.txt:赋予test.txt  rwx------
     
    以下的部分均为ext文件系统专属特性
     
     
    三、文件隐藏属性
     
     
    (1)a:文件只能添加,不能修改、删除;常用于日志文件;
    (2) i:文件不能修改、删除,即使root也不行,用于固定不变的文件;
     
     
    命令
     
    1、lsattr
    list attribute,即列出文件或目录的隐藏属性;
     
    lsattr file:列出文件的隐藏属性;
    lsattr -d dir:列出目录的隐藏属性;
     
    2、chattr
     
    change attribute,即修改文件或目录的隐藏属性;
    (1)i:如果设置了此属性,则目录或文件不能被修改(即使root也不能修改或删除他)。
    (2)a:如果设置了此属性,只能添加内容,而不能修改或删除内容;
     
    chattr +ai file:添加属性;
    chattr -ai file:删除属性;
    chattr =a file:设置属性;
     
     
    四、文件特殊权限
     
     
    文件有3个特殊属性:
    (1)SUID:在用户所有者的x权限位置为“s”,如/usr/bin/passwd;
    (2)SGID:在用户组的x权限位置为“s”,如/usr/bin/locate;
    (3)SBIT:在其他的x权限位置为“t”,如/tmp;
     
     
    SUID
     
    SUID只能赋予二进制文件,并且用户对该文件具有x权限时,赋予SUID才有效果;
    SUID效果:当一般用户对二进制文件b有x权限,并且b文件已经设有SUID权限,当一般用户执行b时,则此用户会具有文件所有者的权限;
     
    SGID
     
    SGID能够赋予目录或文件,执行者必须具备x权限;
    SGID用途:团队开发,并且一个目录是团队的共享目录,任何人在此目录中创建文件,文件的用户组都是团队,而不是个人用户组;
    SGID效果:
    (1)当赋予文件SGID时:当执行者执行时,此执行者会有用户组的权限;
    (2)当赋予目录SGID时:执行者进入目录后,有效用户组为目录的用户组,比如用户创建一个文件,则此文件的用户组为目录的用户组;
    比如创建chmodtest目录,权限为drwxrwsrwx,则用xiazdong进入该目录后创建test.txt,则test.txt的文件所有者为xiazdong,但是用户组为root;
     
     
    SBIT
     
    只能赋予目录,如果对目录赋予SBIT之后,则用户A在此目录下创建的文件或目录只有root和用户A能删除,其他人不能删除;
     
    命令
     
    设置SUID、SGID、SBIT,通过chmod设置;
     
    SUID:4
    SGID:2
    SBIT:1
     
     
    (1)-rwsrw-r--:
    数字表示 :chmod 4764 file,第一个数字4就是设置了SUID;
    符号表示:chmod u=rwxs,g=rw,o=r file
    (2)-rwxrwsr--:
    数字表示 :chmod 2764 file,第一个数字2就是设置了SGID;
    符号表示:chmod u=rwx,g=rwxs,o=r file
    (3)-rwxrwxr-t:
    数字表示 :chmod 1764 file,第一个数字1就是设置了SBIT;
    符号表示:chmod u=rwx,g=rwx,o=rt file
     
    u+s:加上SUID;
    g+s:加上SGID;
    o+t:加上SBIT;
     
    http://blog.csdn.net/xiazdong/article/details/7926672
  • 相关阅读:
    js静态成员和实例成员
    js构造函数
    js创建对象
    js演示面向对象
    JavaScript特点
    像素鸟游戏
    图片瀑布流
    微信聊天模拟
    飞机游戏动画特效
    SpringBoot 核心理论
  • 原文地址:https://www.cnblogs.com/findumars/p/5509708.html
Copyright © 2011-2022 走看看