zoukankan      html  css  js  c++  java
  • linux基础知识-12

    一、目录权限

    前面学习了文件的权限rwx,对于文件来说可以阅读文件的内容(r),修改文件内容(w),把文件当作为脚本或应用程序执行(x)。对于目录呢?

    linux中目录也是一种文件,与常规文件不同:

    • r权限:表示可以浏览目录中的内容,即用ls可以查看目录中的内容。
    • w权限:表示可以在目录中添加文件和删除文件,即可写权限。
    • x权限:由于目录与执行没有关系,但为了统一我们也叫执行权限。表可可以搜索这个目录中的文件及可以进入目录中。

    没有了x权限,老陌测试中发现:进不了目录中,ls 目录时能看到目录中的文件名,但文件的属性(比如时间,权限等)都无法读取,也就是无法查找,相当于啥也干不了,所以目录必须有x权限才可以用。

    (一)新目录默认权限

    当我们新建立一个目录时,发现目录的权限是rwxrwxr-x,这表示:

    • 其它人有读取目录中的内容的权限
    • 其它人有搜索,进入目录的权限。
    • 只有文件所有者和组所有者有修改和删除目录中的内容的权限。

    (二)主目录的权限

    我用centos测试,创建一个用户后权限是rwx------,这说明主目录是受保护的,其它人是不可以查看和修改的,即使此主目录中的子目录权限是rwxrwxrwx,外面的用户也无法访问,相当于门关上了。

    在linux中只有在主目录里和/tmp目录中才可以创建文件夹,其它位置都没有权限,除非管理员在其它位置给用户分配一个目录。

    二、文件权限的八进制表示法

    rwx可以用八进制数表示,如图:

    每个位rwx对应一个数字,这些数字和就代表了rwx,如果是空位-,则用0表示。

    分析: rwxr-xr-x

    rwx = 4 + 2 + 1 = 7
    r-x = 4 + 0 + 1 = 5
    r-x = 4 + 0 + 1 = 5
    

    最终:rwxr-xr-x可以表示为755

    如果我们要设置file文件的权限为rwxr-xr-x,可以直接写成:

    chmod u=rwx,g=rx,o=rx  file
    chmod 755 file
    

    我们发现第二种方式很方便,而且对于chmod o-x file这种方式,字面上用户并不能知道整个文件的权限,而通过数字可以分析出文件的权限。

    分析:644的文件权限

    6 = 4 + 2 + 0 = rw-
    4 = 4 + 0 + 0 = r--
    4 = 4 + 0 + 0 = r--
    

    所以644的权限就是 rw-r--r--

    三、控制默认权限

    当我们新建立一个文件或目录时会有一个默认的权限,文件的默认权限是664(rw-rw-r--),目录的默认权限是775(rwxrwxr-x)。
    默认的权限:对于文件来说有读写权限,其它人只读。对于目录来说有读写权限,其它人只能读和搜索文件,不能在文件夹里创建和删除文件。

    文件及文件夹的默认权限通过umask来确定,umask的值决定着创建文件及文件夹时的默认权限。linux内核创建文件的默认最大权限是666(rw-rw-rw-),创建目录的默认最大权限是777(rwxrwxrwx), 之后用这个默认的最大权限减去umask得到最终的默认权限。

    • 最终文件权限为:666减去umask的值
    • 最终目录权限为:777减去umask的值

    注意这里的减法,有自己的运算规则。对于目录来说直接相减,对于文件来说则不同:

    • umask 的值是022(全是偶数),则用666-022 = 644
    • umask 的值是123(部分位是奇数),则666-123=644,本来应该是:543,但奇数位减完后要加1,所以结果是:644

    四、修改umask

    #显示当前的umask值
    umask  
    
    #设置umask的值
    umask  022   
    

    例:我想创建文件,得到的默认权限是:rw-rw----

    由于文件默认最大权限是666,而6就是rw-权限,所以umask的前两位是00,最后一位要把所有权限去掉,直接减去6就行了,所以umask的值应该是: 006

    设置完umask的值对创建目录也是有影响的,由于目录的最大默认权限是777,所以其它人的权限变成了1, 也就是--x。当然我不想这样,我的目录不想让别人看到,所以应该把umask设置为7, 这样文件和目录其它人都不可用了。

    当退出登录时umask设置的值就消失了,所以我们应该加到~/.bashrc中。这个文件当用户登录时调用, 把umask的值写到这个文件里,用户一登录就设置umask了。

    echo "umask 007" >> ~/.bashrc
    

    最后说一下系统默认的umask值是022

  • 相关阅读:
    Asp.net 文件下载,中文文件名出现乱码
    存储过程中执行动态Sql语句
    SQLServer : EXEC和sp_executesql的区别
    C# 从服务器下载文件代码
    在windows 7 上为 sqlserver 2008 启用远程访问
    数字求和
    大道至简第一章读后感
    作业
    SharePoint2013 App 开发中 自定义网站栏,内容类型,列表。
    SharePoint2013 App开发模式
  • 原文地址:https://www.cnblogs.com/myccloves/p/9316031.html
Copyright © 2011-2022 走看看