zoukankan      html  css  js  c++  java
  • Linux文件与目录普通权限

    在Linux下可以使用ls -l命令查看文件的权限:

      

    可以看到,第一列就是文件或者目录的权限。总共有十个字符,意义如下:

    1. 第一个字符是类型,表明是文件还是目录等。

    常见的有以下几种:

    文件: -

    目录: d

    字符设备: c

    块设备: b

    链接文件: I

    2. 第2~4三个字符是文件所有者(u, user)的权限,r代表读(read),w代表写(write),x代表执行(execute)。有相应的权限就在相应的位置用rwx代表,没有相应的权限就用-代表。

    用户权限也可以用二进制数字0和1代表,100代表r--,表明有读权限而没有写和执行权限,对应数字6;011代表-wx,有写权限和执行权限,没有读权限,对应数字为2+1=3。这个数字在使用chmod命令来修改文件权限时很有用。

    3. 第5~7三个字符代表的是文件所属的群组(g, group)的权限,字符代表的意义同上。

    4. 第8~10三个字符代表的是非以上两者的其他人或组(o, other)的权限,字符的意义同上。

    ls -l命令查看的文件的信息,第三列就代表文件的拥有者,第四列代表文件所属的群组。示例如下:

    -rwxr-xr--  1 testuser    testgroup    5238 Jun 05 10:00 testfile

     上例中,testuser用户对testfile文件拥有读写执行权限,testgroup组的成员对testfile文件拥有读和执行的权限,而其他的用户就只有读的权限了。当然,对于root用户来说,他拥有机器中所有文件的所有权限,root用户是linux中拥有最高权限用户。

    Linux系统中文件的权限最大的用途是在于安全方面。没有权限的用户就无法访问指定文件,无法查看制定目录,这样在多用户的系统上就可以做到彼此一定程度隔绝,保障每个用户的数据的隐私性和安全性。

    例如/etc/shadow文件使用来存储所有用户的登录密码的。这个文件是不能任意让人读取的,尽管文件内容可能是加密的字符串。因此我们需要只有root或者指定用户可以访问。例如在我的机器中:

    -rw-r----- 1 root shadow 1225  7月 12 20:49 /etc/shadow

     有时我们又需要将文件共享给其他人来访问,譬如在团队协助开发项目或者共享一些数据资源等。那我们应该怎么做呢?方法有很多,譬如将文件权限开放给指定组成员,那么将需要共享的成员加入指定组即可;或者拷贝一份文件到公共目录,然后更改文件权限,将文件拥有者修改为指定成员;... 。

    那么我们怎么来修改文件权限呢?

    1. chgrp:改变文件所属的组

    系统中的所有组都存放在/etc/group文件中,使用chgrp可以在这些组中进行切换。例如:

    $ chgrp grp1 test1.txt

    如果试图切换到不存在的组,会提示错误。需要先创建组,然后再改变文件的组。

    2. chown:改变文件所有者

    系统中的用户帐号存放在/etc/passwd文件中,改变用户也需要首先存在这个用户。示例如下:

    $ chown usr1 test1.txt #改变test1.txt用户为usr1

    $ chown usr1:grp1 test1.txt #同时改变用户和组

    $ chown -R usr1 dir1 #递归改变用户,指定目录下的所有文件及其子目录中的文件都会被改变用户

    $ chown usr1.grp1 test1.txt #同时改变用户及组

    $ chown .grp1 test1.txt #改变组

    3. chmod:改变文件权限

    改变文件的权限可以使用代表权限的数字或者权限字符。如:

    $ chmod  123 test1.txt #使文件有---x-w--wx 权限

    $ chmod 777 test2.txt #赋权限 -rwxrwxrwx

    $ chmod -R 644 dir1 #递归赋权限

    使用权限字符来修改权限的方法如下表:

    chmod u(user)
    g(group)
    o(other)
    a(all)
    +(加入)
    -(除去)
    =(设定)
    r(read)
    w(write)
    x(execute)
    文件或目录

    Tips:

    1. Linux文件的权限:

        r:可读取文件内容

        w:可编辑,新增,修改文件的内容,不具有删除文件权限

        x:可执行文件

    2. Linux的目录的权限:

        r:读取该目录下的文件名数据

        w:有建立新文件与目录权限,有删除已有文件和目录权限,有重命名文件和目录权限,有移动文件和目录的权限

        x:有切换工作目录到当前目录的权限

    3. 用户拥有文件的w权限不意味着用户可以删除该文件;只有当用户拥有某个目录的w权限,才能删除该目录下的文件,且可删除任意权限的文件,包括root用户的文件。

    4. Linux下文件的扩展名其实意义不大,譬如文件具有x属性就可以执行,而与扩展名无关。当然也有一些惯用的扩展名,譬如:sh, py等。

    5. Linux下的文件和目录名称最后不要包含一些特殊符号,譬如:* ? > < ; & ! [ ] | ' " ` ( ) { } 

    6. Linux下的文件名前后都可以包含空格,这个是一个小陷阱。你可能无意间输入文件名前面有空格,Linux并不会像windows一样自动去掉空格。这样你后面操作文件可能就会发现,你明明看到了这个文件,输入命令却找不到。

    参考:

    http://vbird.dic.ksu.edu.tw/linux_basic/0210filepermission_2.php

    http://vbird.dic.ksu.edu.tw/linux_basic/0220filemanager_4.php

  • 相关阅读:
    HDU 5744
    HDU 5815
    POJ 1269
    HDU 5742
    HDU 4609
    fzu 1150 Farmer Bill's Problem
    fzu 1002 HangOver
    fzu 1001 Duplicate Pair
    fzu 1150 Farmer Bill's Problem
    fzu 1182 Argus 优先队列
  • 原文地址:https://www.cnblogs.com/daemon369/p/3247304.html
Copyright © 2011-2022 走看看