Skip to content

Linux文件系统初识 #8

@junfeisu

Description

@junfeisu

文件类型

Linux文件系统的文件类型有很多种,具体的如下几种:

-  普通文件
d  目录
s  套接字文件
b  块设备文件
c  字符文件
l  符号链接文件
p  命名管道文件

当然前面的标志是什么意思呢?最直接的就是你在使用ls -l命令列出文件的时候的第一个标志位就是文件类型。具体看图:

文件类型

对于普通文件的解释就是说不是下面其他几种类型的文件就是普通文件

文件权限

文件的三种操作方式:读,写,执行(r, w, x)

然后者三种权限操作方式又对应三个不同的用户全体:文件属主(一般是文件创建者)u、文件属主所在的用户组的用户g、其他用户组的用户o

所以一个文件对应的权限操作列表就是

rwx rwx rwx
-u- -g- -o-

意思就是第一个rwx对应的是文件属主的操作权限,第二个rwx对应的是文件属主所在的用户组的用户的操作权限,第三个rwx对应的是其他用户组的用户的操作权限。
当然对应权限操作位上如果显示的是-就表示该用户没有对应的权限,如

rwxr-xr--

上面的权限列表就表示文件属主拥有读写执行的全部权限;属主所在的用户组的其他用户拥有读和执行的权限,但是不具备写的权限;其他用户组的用户就只拥有读的权限,写和执行的权限就不具备。如果想看一个文件或者目录的权限列表,使用ls -l命令即可。

目录文件的读、写、执行的意思

目录文件对应的读、写、执行操作和其他文件的读、写、执行理解起来是有点区别的。目录文件的读操作就是可以列出该目录下的文件,写操作就是可以在该目录下删除、添加文件,执行操作就是可以进入该目录。

修改文件权限(chmod)
  • 符号模式

    chmod [who] operator [permission] filename

    [who] 就是需要修改权限的用户(u/g/o)

    operator + - = (增加权限、取消权限、设定权限)

    [permission] r w x (s: 这个是特殊权限位,就是当你给某个文件属主的执行权限设为s,那么其他用户执行该文件时就相当于拥有改文件属主的权限,但是当文件执行完毕,就又失去这份权限,详细查看suid/guid)

    一个例子就是:

     chmod u+x g+rw o+r myfile
    

    上面的例子就是给属主添加执行权限,给属主所在用户组用户添加读写权限,给其他用户组用户添加读权限。

  • 绝对模式

    chmod [mode] filename

    mode是一个八进制数。

     400, 200, 100分别对应文件属主的读、写、执行权限
    
     040, 020, 010分别对应文件属主用户组的用户读、写、执行权限
    
     004, 002, 001分别对应其用户组的用户读、写、执行权限
    

    然后这些对应的值可以加起来,就表示对应的权限列表。如:654就表示u拥有读写权限,g拥有读和执行权限,o拥有读权限。那具体下面这个例子:

     chmod 751 myfile
    

    就是u拥有全部权限,g拥有读和执行权限,o具有执行权限

然后这俩模式的区别就是符号模式可以针对单独用户组,单独权限进行设定,但是绝对模式必须指定完整的用户列表。

修改文件属主或用户组(chown和chgrp)

chown用来更改文件的属主,chgrp用来更改文件所属的用户组

chown otherUser file / chgrp otherGroup file

上面就是俩个命令的使用方法。一旦文件属主更改或者用户组更改,是不可恢复的,只有系统管理员才能更改回来。

文件链接(ln)

ln [参数] 源文件路径 目标文件路径

具体效果看下面的图片:

文件链接

-s参数表示软链接,文件链接分为软链接和硬链接俩种。因为我也不太懂原理,所以具体区别可以看看这篇文章Linux软链接和硬链接的区别

然后其实这个命令对于我们新手来说就可以为对应的程序添加不同的命令行启动链接。然后一般系统自带的命令的链接存放的是在/usr/bin目录或者/usr/sbin目录。然后一些自己添加的应用程序链接或者应用程序安装时自动添加的链接是在/usr/local/bin目录下面。所以我们只要把应用程序的启动文件链接到这个目录下面某个文件就可以了,然后在命令行执行这个文件的名字的命令即可启动对应的程序。如:给sublime添加链接。

sudo ln -s sublime启动文件路径 /usr/local/bin/subl

这样就可以在命令行里输入subl就可以启动sublime了。效果如图:

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions