前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux笔记(一):文件权限

Linux笔记(一):文件权限

原创
作者头像
Ashen
修改2021-02-18 17:34:01
4320
修改2021-02-18 17:34:01
举报
文章被收录于专栏:Ashenの前端技术Ashenの前端技术

一、Linux文件属性

通过ls -al命令可以查看当前目录下的全部文件、文件夹信息:

每一个文件包含了七栏相关的信息:

  • 第一栏表示文件类型及权限,这里共包含10个字符:
    • 第一个字符表示文件的类型,【d】表示目录、【-】表示文件、【l】表示链接文件、【b】表示设备文件里的可供存储的周边设备、【c】表示设备文件里的串行端口设备(例如键盘、鼠标);
    • 剩下的9个字符以3个为一组,共3组,分别表示该文件拥有者的权限、加入此用户组的权限、没有加入本用户组其他人的权限。【r】表示可读、【w】表示可写、【x】表示可执行(execute)、【-】表示没有权限;
  • 第二栏表示有多少文件名字链接到此节点;
  • 第三栏表示该文件的拥有者账号;
  • 第四栏表示该文件所属用户组;
  • 第五栏表示该文件的容量,单位为bytes;
  • 第六栏表示该文件的创建日期或最近修改日期
  • 第七栏表示该文件的文件名,如果文件名前以【.】开头,则表示是隐藏文件;

二、修改文件属性及权限

常用命令有以下三个:

  • chgrp:修改文件所属用户组(change group)
  • chown:修改文件拥有者(change owner)
  • chmod:修改文件权限

2.1、chgrp

要被修改的组名必须存在于/etc/group文件中才行。

随便创建一个文件:

代码语言:text
复制
[root@VM-0-13-centos /]# touch myFile.txt

查看该文件的信息:

代码语言:text
复制
[root@VM-0-13-centos /]# ls -al myFile.txt
-rw-r--r-- 1 root root 0 Feb 18 10:17 myFile.txt

修改用户组:chgrp li -R myFile.txt,【-R】表示执行递归目标文件夹的子文件,再次查看文件信息:

代码语言:text
复制
-rw-r--r-- 1 root li 0 Feb 18 10:17 myFile.txt

尝试修改成一个不存在的用户组,如testUser:

代码语言:text
复制
[root@VM-0-13-centos /]# chgrp testUser -R myFile.txt
chgrp: invalid group: ‘testUser’

2.2、chown

同理,要被修改的用户必须存在于/etc/passwd文件中才行。

语法:

  • chown [-R] 账号名称 文件或目录
  • chown [-R] 账号名称:用户组名称 文件或目录
  • chown [-R] :用户组名称 文件或目录

修改myFile.txt的用户为li:

代码语言:text
复制
[root@VM-0-13-centos /]# chown li myFile.txt
[root@VM-0-13-centos /]# ls -al myFile.txt
-rw-r--r-- 1 li li 0 Feb 18 10:17 myFile.txt

修改myFile.txt的用户为li、用户组为root:

代码语言:text
复制
[root@VM-0-13-centos /]# chown li:root myFile.txt
[root@VM-0-13-centos /]# ls -al myFile.txt
-rw-r--r-- 1 li root 0 Feb 18 10:17 myFile.txt

修改myFile.txt的用户组为li:

代码语言:text
复制
[root@VM-0-13-centos /]# chown :li myFile.txt
[root@VM-0-13-centos /]# ls -al myFile.txt
-rw-r--r-- 1 li li 0 Feb 18 10:17 myFile.txt

2.3、chmod

权限的设置方式有2种:数字和符号。

2.3.1、数字类型修改文件权限

  • 【r】对应4
  • 【w】对应2
  • 【x】对应1

那么将myFile.txt文件的rw-r--r--设置为rwxrw----,对应的应该就是【4+2+1

】【4+2+0】【0+0+0】=760:

代码语言:text
复制
[root@VM-0-13-centos /]# chmod 760 myFile.txt
[root@VM-0-13-centos /]# ls -al myFile.txt
-rwxrw---- 1 li li 0 Feb 18 10:17 myFile.txt

2.3.2、符号类型修改文件权限

权限的拥有者user、用户组group、其他人other可以分别用u、g、o来表示、所有人all用a来表示;读、写、执行分别用r、w、x来表示;+表示加入权限、-表示移除权限、=表示设置权限。

那么移除拥有者的执行权限应该就是:

代码语言:text
复制
[root@VM-0-13-centos /]# chmod u-x myFile.txt
[root@VM-0-13-centos /]# ls -al myFile.txt
-rw-rw---- 1 li li 0 Feb 18 10:17 myFile.txt

添加用户组的执行权限:

代码语言:text
复制
[root@VM-0-13-centos /]# chmod g+x myFile.txt
[root@VM-0-13-centos /]# ls -al myFile.txt
-rw-rwx--- 1 li li 0 Feb 18 10:17 myFile.txt

设置拥有者rwx、用户组rw、其他人r权限:

代码语言:javascript
复制
[root@VM-0-13-centos /]# chmod u=rwx,g=rw,o=r myFile.txt
[root@VM-0-13-centos /]# ls -al myFile.txt
-rwxrw-r-- 1 li li 0 Feb 18 10:17 myFile.txt

三、目录与文件的权限意义

3.1、权限对文件的重要性

文件是实际含有数据的地方,包括文本文件、数据库文件、二进制可执行文件等。所以针对文件:

  • r(read):可读取此文件的实际内容
  • w(write):可编辑、新增或修改该文件的内容,但不可以删除该文件
  • x(execute):该文件具有可以被系统执行的权限

在windows中一个文件是否可以执行,取决于文件的拓展名(如.exe、.bat),而在Linux中文件是否可执行取决于有没有x(execute)权限。

对一个文件有w权限,则具有写入、编辑、新增、修改文件内容的权限,但并不具备删除文件本身的权限。对于文件的rwx来说,主要都是针对文件的内容而言的,与文件名的存在与否没有关系,因为文件记录的是实际的数据。

3.2、权限对目录的重要性

目录主要的内容是记录文件名列表,文件名与目录有强烈的关联性。所以针对目录:

  • r(read):表示具有读取目录结构列表的权限,所以当具有r权限时,则可以查询该目录下的文件名数据,但是无法获取内部文件除文件名以外的其它信息,也无法进入该目录。
  • w(write):表现具有改动该目录结构列表的权限,如:
    • 建立新的文件与目录
    • 删除已经存在的文件或目录
    • 将已存在的文件或目录更名
    • 移动该目录内的文件、目录位置
  • x(execute):表示用户具有进入该目录的权限

如果单独拥有r权限,则仅可以查看目录下的文件名;单独拥有w权限,则什么都干不了;单独拥有x权限,仅能进入目录,其它的什么也干不了。所以通常需要r-x、-wx、rwx这样组合使用。

四、Linux文件类型与扩展名

4.1、文件种类

【-】表示一般文件,【d】表示目录文件。

  • 常规文件:第一个属性为【-】
    • 纯文本文件
    • 二进制文件
    • 数据文件
  • 目录:第一个属性为【d】
  • 设备与设备文件:通常集中在/dev目录下
    • 区块设备文件(block),第一个属性为【b】,通常为硬盘、软盘之类的。
    • 字符设备文件(character),第一个属性为【c】,串行端口设备,通常为键盘、鼠标之类。
  • 数据接口文件(sockets):第一个属性为【s】,该类型的文件通常用于网络上的数据交换,通常出现在/run、/tmp目录下。
  • 数据传输文件(FIFO,pipe):第一个属性为【p】,FIFO是(first-in-first-out)的缩写,即流、管道的意思。
  • 链接文件(link):第一个属性为【l】,类似windows下的快捷方式。

4.2、Linux文件拓展名

基本上Linux没有所谓的扩展名,因为其能否执行取决于10个文件权限字符,和文件名没什么关系。

具有可执行的权限和具有可执行的代码是俩回事,比如一个file.txt即使赋予了x权限,也是没办法执行的。而cat命令,如果取消了x权限,则该程序将无法执行。x表示的仅仅是文件具有可执行的权限,具体能不能执行成功,当然还是要看文件的内容。

虽然如此,但很多时候还是需要通过文件的扩展名来知道这到底是个什么文件,数据常用扩展名:

  • *.sh:脚本或批处理文件
  • *.Z、*.tar、*.tar.gz、*.zip、*.tgz:经过打包的压缩文件
  • *.html、*.php:网页相关文件

基本上,Linux的扩展名主要用来告知文件类型而已,具体执行情况还是要看权限控制和其内部内容。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、Linux文件属性
  • 二、修改文件属性及权限
    • 2.1、chgrp
      • 2.2、chown
        • 2.3、chmod
          • 2.3.1、数字类型修改文件权限
          • 2.3.2、符号类型修改文件权限
      • 三、目录与文件的权限意义
        • 3.1、权限对文件的重要性
          • 3.2、权限对目录的重要性
          • 四、Linux文件类型与扩展名
            • 4.1、文件种类
              • 4.2、Linux文件拓展名
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档