• Linux的文件权限(简单易懂)


    学习这个章节,必须明白以下三个概念:

    1.所有者

    2.所属组

    3.其他人

    明白这三个概念后,接下来就学习文件的属性,那么文件的属性有什么呢?如何查看文件的属性?

    在命令行下,执行 ls -l

    可以得到以下的信息(仅已一条信息来分析)

    -rw-r--r--. 1 root root 41312 Dec 10 02:48 install.log
    ...

    解释:
        第一列代表文件的类型和权限
        
            第一个字符是"-":表示文件为普通文件。
            
            Linux下的文件类型有如下几种:

                -:普通文件,包括文件文件和二进制文件
                d:目录文件
                c:字符设备文件
                b:块设备文件
                s:套接字文件(socket)
                l:链接文件
                p:管道文件(FIFO,pipe)
                或许还有其他文件类型,以后学习到再补充
                
            接下来的9个字符,3个为一组,分别表示所有者,所属组和其他人的权限
        
            权限有三种 r(read)读,w(write)写,x(execute)执行
            
        第二列表示有多少文件名链接到此节点(i-node),即文件的硬链接数,以后详细介绍
        
        第三列表示这个文件的所有者
        
        第四列表示这个文件的所属组
        
        第五列表示这个文件的容量大小,单位是B
        
        第六列表示这个文件的创建日期或者最近修改如期
        
        第七列表示文件名
        
    ------------------------------------------------------------------------------------------
        
    改变文件属性和权限

    需要用到的命令有

        chgrp:修改文件的所属组

        chown:修改文件的所有者

        chmod:修改文件的权限

    改变用户所属组chgrp命令的介绍

    用以下的文件为例子

    -rw-r--r--. 1 root root 41312 Dec 10 02:48 install.log        

    由上述知道install.log文件所有者是root,所属组是root,权限为rw-r--r--

    若想要修改这个文件所属组,可以这么做

    假设在/etc/group下已经定义了一个组super

    #chgrp     super install.log 修改所属组

    #ls -l

    -rw-r--r--. 1 root super 41312 Dec 10 02:48 install.log 文件的所属组被改变为super

    ---------------------------------------------------------------------------------

    改变文件的所有者chown命令

        假设在/etc/passwd已经存在用户hello

        当要修改上述的install.log这个文件所有者,可以这么做

        #chown hello install.log 修改文件的所有者为hello

        #ls -l
        -rw-r--r--. 1 hello super 41312 Dec 10 02:48 install.log 文件的所有者被修改为hello

    chown命令还能修改文件的所属组

        比如要把文件的所有者和所属组修改为原来的root,可以这么做

        #chown root:root install.log

        #ls -l
        -rw-r--r--. 1 root root 41312 Dec 10 02:48 install.log
        文件的所有者和所属组都修改了

    chown命令也可以只修改所属组

    #chown :super install.log

    #ls -l

    -rw-r--r--. 1 root super 41312 Dec 10 02:48 install.log

    大多情况下用冒号“:”分隔所有者和所属组,也可以用小数点“.”分隔。

    什么情况下需要修改文件的所有者或所属组?

        比如,我们用cp命令复制一个文件到另一个用户的家目录,但是文件的属性并没有
    修改,也就是说,另一个用户就算得到了文件,也无法操作文件。这时候就需要修改文件的属性

    ------------------------------------------------------------------------------------

    修改文件的权限chmod命令

        还是用上述的文件为例子

    -rw-r--r--. 1 root root 41312 Dec 10 02:48 install.log

    分析:
        文件所有者对文件具有rw的权限,即读和写,不能够执行

        文件所属组的用户对文件具有r的权限,即只有读的权限

        其他人对文件具有r的权限,即只有读的权限

    修改文件的权限有两种方法:

    1.数字类型修改文件权限

    r(4)
    w(2)
    x(1)

    可以有这么多种表示方法
        ---     0
        --x     1
        -w-     2
        -wx     3
        r--       4
        r-x       5
        rw-       6
        rwx       7


    命令使用示例
        若想把文件的权限修改为
        rwx r-x r-x
          7   5   5

        #chmod 755 install.log
        #ls -l

        可以得到如下的结果
        -rwxr-xr-x. 1 root root 41312 Dec 10 02:48 install.log

    这种方式不是很直观,需要转换,个人比较喜欢用字符类型修改文件权限

    字符类型修改文件权限

    命令使用如下

    ----------------------------------------------------------
        u    + (加入)    r
    chmod    g    -(除去)    w    文件或目录
        o    =(设置)    x
        a

    ----------------------------------------------------------

    u(user):表示所有者

    g(group):表示所属组

    o(others):表示其他人

    a(all):表示上述三者

    使用示例

    -rwxr-xr-x. 1 root root 41312 Dec 10 02:48 install.log

    若要修改上述的文件权限为rw-r-xr-x,即所有者除去执行(x)权限,可以这么做

    #chmod u-x install.log

    若要修改上述的文件权限为rw-rwxr-x,即所属组加上写(w)权限,可以这么做

    #chmod g+w install.log

    若要修改上述的文件权限为rw-rwxrw-,即其他人有读写(rw)权限,可以这么做

    #chmod o=rw install.log

    若要修改上述的文件权限为rwxrwxrwx,可以这么做

    #chmod a+x install.log

    当然,也可以这么使用

    #chmod u-x,g-x,o-r install.log

    不知道我是否说清楚了。。


    ---------------------------------------------------------------------------------

    目录与文件的权限意义

    权限对文件的重要性

        r(read):可读取此文件的实际内容,比如可以用cat等命令查看文件内容
        
        w(write):可以编辑、新增或者是修改文件的内容,但是不能删除该文件

        x(execute):该文件具有可以被系统执行的权限。

        顺便说说扩展名。在LInux中是没有扩展名的概念的,与windows不同。所以文件是否
        可以执行,是靠权限x来决定的,但是要清楚一点,可以执行,不代表可以成功执行,
        这要取决于文件的内容。

        总结:对于文件来说,rwx主要都是文件内容的的权限,而跟文件名是灭有绝对的关系


    权限对目录的重要性

    r(read contents in directory)
        
        表示具有读取目录结构列表的权限,也就是说可以用ls查看目录里有哪些文件

    w(modify contents of directory)

        表示具有更改该目录结构列表的权限,也就是说可以
        1.创建文件或者目录
        2.删除已经存在的文件或目录(不论该文件的权限为何)
        3.对文件或目录进行重命名
        4.转移该目录内的文件、目录位置

    总之,目录的w权限就与该目录下面的文件名变动有关

    x(access directory)

        表示用户能否进入该目录成为工作目录

    额外补充,查看当前目录下文件(tree)

    root@wuheng-virtual-machine:/home/wuheng/public# tree -p
    .
    ├── [-rw-r--r--]  a.txt
    ├── [-rw-rw-r--]  b.html
    └── [drwxrwxr-x]  demo
        ├── [-rw-r--r--]  aa.txt
        └── [-rw-r--r--]  b.html

    1 directory, 4 file

  • 相关阅读:
    select 标签的数据绑定
    JQ选择器-选择符合条件的元素,获取对应关系元素
    Velocity中判断表达式是不是为空
    重要的serialVersionUID
    编译nginx的时候报错 需要安装PCRE
    Mac 允许安装任何来源的app
    Charles
    Excel_日期和时间函数、EDATE、EOMONTH
    项目9: 成绩中国式排名(难度:中等)
    Mysql:IFNULL的使用说明
  • 原文地址:https://www.cnblogs.com/wuheng1991/p/5309676.html
Copyright © 2020-2023  润新知