Linux 系统由 Linux 内核、shell、文件系统和第三方应用软件组成。Linux 文件权限与属性是学习 Linux 系统的一个重要关卡,必须理解这个部分内容的概念。

一,文件类型

1.1,概述

一个基本概念:任何装置在 Linux 下都是文件,数据沟通的接口也有专属的文件在负责,Linux 的文件种类繁多,常用的是一般文件(-)与目录文件(d)。

注意:Linux 文件类型和文件的文件名所代表的意义是两个不同的概念,在 linux 中文件类型与文件扩展名没有关系。它不像 Windows 那样是依靠文件后缀名来区分文件类型的,在 linux 中文件名只是为了方便操作而的取得名字。Linux 文件类型常见的有:普通文件、目录、字符设备文件、块设备文件、符号链接文件等。

查看文件类型方法,使用 ls -al 命令列出的信息中第一栏十个字符中,第一个字符为文件的类型。

1.2,正规文件(regular file)

就是一般我们在进行存取的类型的文件,在由 ls -al 所显示出来的属性方面,第一个字符为 -,例如 -rwxrwxrwx。另外,依照文件的内容,又大略可以分为:

  • 纯文本档(ASCII):Linux 系统中最为常见的一种文件类型,称为纯文本是因为文件内容为人类可以直接读取到的数据,例如数字、字母等。
  • 二进制文件(binary):Linux 系统仅认识且可以执行的二进制文件 binary file,Linux 系统中可执行的文件就是这种类型,例如 cat 就是一个 binary file。
  • 数据格式文件(data): 有些程序在运作的过程当中会读取某些特定格式的文件,那些特定格式的文件可以被称为数据文件 (data file)。举例来说,我们的 Linux 在使用者登入时,都会将登录的数据记录在 /var/log/wtmp 文件内,该文件是一个 data file,它能够通过 last 这个指令读出来,但是使用 cat 命令读取时会读出乱码,因为他是属于一种特殊格式的文件。

1.3,目录(directory)

第一个属性为 d,例如 drwx------

1.4,链接文件(link)

类似 Windows 系统下的快捷键,第一个属性为 l,例如 lrwxrwxrwx

1.5,设备与装置文件(device)

与系统周边设备及存储相关的一些文件,通常集中在 /dev 目录下,一般分为两种:

  • 区块(block)设备类型:就是一些储存数据, 以提供系统随机存取的接口设备,比如硬盘设备,第一个属性为 b
  • 字符(character)设备文件:一些串行端口的接口设备,例如键盘、鼠标、摄像头等。这些设备的特性是**一次性读取",不能够截断输出,第一个属性为 c

1.6,资料接口文件(sockets):

被用于网络上的数据连接了。我们可以启动一个程序来监听客户端的要求, 而客户端就可以透过这个 socket 来进行数据的沟通了。第一个属性为 s,最常在 /run/tmp 这些目录中可以看到这种文件类型。

1.7,数据输送文件(FIFO, pipe):

FIFO 也是一种特殊的文件类型,他主要的目的在解决多个程序同时存取一个文件所造成的错误问题。FIFOfirst-in-first-out 的缩写。第一个属性为 p

1.8,文件拓展名

注意 Linux 系统的文件是没有所谓的拓展名的。 一个 Linux 文件能不能被执行,与他的 ls -al 展示的文件信息的第一栏的十个属性有关, 与文件名根本一点关系也没有,这与 Windows 不同,在Linux 系统下,只要用户的权限有 x,文件就可以被执行。拥有了 x 权限,表示文件可以被执行,但是只有具有可执行的程序代码文件才能被执行,文本等文件即使有权限也是不能执行成功的。

二,文件属性与权限

2.1,Linux 文件属性

ls -al 命令:列出所有的文件详细的权限与属性 (包含隐藏文件-文件名第一个字符为『 . 』的文件)。 ls -al 展示的文件属性信息如下:

  • 第一列代表这个文件的类型与权限(permission);第一列的第一个字符代表这个文件是『目录、 文件或链接文件等等文件类型』:

    • 当为 d 则是目录,例如上图文件名为『.config』的那一行;
    • 当为 - 则是文件,例如上图文件名为『initial-setup-ks.cfg』那一行;
    • 若是 l 则表示为链接文件(link file);
    • 若是 b 则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
    • 若是 c 则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。
  • 第二列表示有多少文件名连结到此节点(i-node);
  • 第三列表示这个文件(或目录)的『拥有者账号』;
  • 第四列表示这个文件的所属群组
  • 第五列为这个文件的容量大小,默认单位为 bytes
  • 第六列为这个文件的建档日期或者是最近的修改日期;
  • 第七列为这个文件的文件名。

ls -al 命令展示的文件属性的七个字段的意义很重要,必须理解和熟记,这是掌握 Linux 文件权限与目录管理的基础知识。

2.2,Linux 文件权限

Linux 文件的基本权限就有九个,分别是 owner/group/others 三种身份各有自己的 read/write/execute 权限。在 Linux 中,对于文件的权限(rwx),分为三部分,第一部分是该文件的拥有者所拥有的权限,第二部分是该文件所在用户组的用户所拥有的权限,最后一部分是其他用户所拥有的权限

每个文件/文件夹的属性都用 10 个字符表示,第一个字符如果是 d:表示文件夹,如果是 -:表示文件。用(rwx)表示文件权限,其中r: 可读(4)w: 可写(2)x: 可执行(1)。举例,drwxr-xrw- 表示文件夹拥有者拥有可读可写可执行的权限,用户所在用户组和其他用户无任何权限,命令的详细解释如下。

  • 从第二到第四位 (rwx) 是文件所有者的权限:可读、可写、可执行。
  • 从第五到第七位 (r-x) 文件夹用户拥有者所在组的权限:可读、可执行。
  • 从第八位到第十位 (rw-) 其他人对这个文件夹操作的权限.:可读、可写。

Linux 系统查看文件/目录权限示例,如下:

root@5b84c8f05303:/data/project# ls -al
total 16
drwx------ 4 1018 1002 4096 Jul 20 02:59 .
drwx------ 8 1018 1002 4096 Jul 20 02:57 ..
drwx------ 6 1018 1002 4096 Jul 20 02:57 DeepPruner
-rw-r--r-- 1 root root 0 Jul 20 02:59 demo.py
drwx------ 8 1018 1002 4096 Jul 20 02:57 nn_tools-master

2.3,如何改变文件属性和权限

Linux/Unix 是多人多工操作系统,所有的文件皆有拥有者。利用 chown 命令可以改变文件的拥有者(用户)和群组,用户可以是用户名或者用户 ID,组可以是组名或者组 ID注意,普通用户不能将自己的文件改变成其他的拥有者,其操作权限一般为管理员(root 用户);同时用户必须是已经存在系统中的账号,也就是在 /etc/passwd 这个文件中有纪录的用户名称才能改变。

三个常用于群组、拥有者、各种身份的权限之修改的命令,如下所示:

  • chown : 改变文件的拥有者。如递归子目录修改命令: chown -R user_name folder/
  • chgrp : 改变文件所属群组。
  • chmod : 改变文件读、写、执行权限(权限分数 r:4 w:2 x:1)属性。如增加脚本可执行权限命令: chmod a+x myscript

添加用户和用户组的命令:adduser groupadd,其简单用法如下所示:

  • adduser harley:新建 harley 用户
  • passwd harley:给 harley 用户设置密码
  • groupadd harley:新建 harley工作组
  • useradd -g harley harley:新建 harley 用户并增加到 harley 工作组

改变所属群组 chgrp/chown/chmod 命令的用法如下

$ chgrp [-R] group dirname/filename  # -R : 进行递归(recursive)的持续变更,亦即连同子目录下的所有文件、目录都更新成为这个群组之意。
$ chown [-R] 账号名称 文件或目录
$ chown [-R] 账号名称:组名 文件或目录
$ chmod [-R] xyz 文件或目录 # xyz : 数字类型的权限属性分数值, 为 rwx 属性数值的相加。

chgrp 范例:将 test 的工作组从 harley 改为 root(前提是当前用户切换为 root 了,否则会提示权限不足的错误):

chmod 范例:将 .bashrc 这个文件所有的权限都设定启用。

root@17c30d837aba:~# ls -al .bashrc
-rw-r--r-- 1 root root 3479 Jan 8 03:14 .bashrc
root@17c30d837aba:~# chmod 777 .bashrc
root@17c30d837aba:~# ls -al .bashrc
-rwxrwxrwx 1 root root 3479 Jan 8 03:14 .bashrc

2.4,文件与目录的权限意义

我们可以利用 ls -al 命令查看文件属性及权限,已知了 Linux 系统内文件的三种身份(拥有者、群组与其他人),每种身份都有三种权限(rwx),再使用 chown, chgrp, chmod 去修改这些权限与属性。

文件是实际含有数据的地方,包括一般文本文件、数据库内容文件、二进制可执行文件(binary program)等等。因此,权限对于文件来说,他的意义是这样的:

  • r (read):可读取此一文件的实际内容,如读取文本文件的文字内容等;
  • w (write):可以编辑、新增或者是修改该文件的内容(但不含删除该文件);
  • x (eXecute):该文件具有可以被系统执行的权限。Linux 底下, 文件是否能被执行,是由 x 这个权限来决定的!跟文件名是没有绝对的关系,即使是能够执行成功的 .sh 脚本文件,如果没有 x 可执行权限,文件也不能被执行。

目录主要的内容是记录文件名列表,文件名与目录有强烈的关连。对一般文件来说, rwx 主要是针对『文件的内容』来设计权限,对目录来说, rwx 则是针对『目录内的文件名列表』来设计权限。权限对文件和目录重要性的理解汇总成如下表格:

三,Linux 文件属性与权限总结

利用 ls -al 命令查看文件属性及权限,已知了 Linux 系统内文件的三种身份(文件拥有者、文件所属群组与其他用户),每种身份都有四种权限(rwxs)。可以使用 chown, chgrp, chmod 去修改这些权限与属性。文件是实际含有数据的地方,包括一般文本文件、数据库内容文件、二进制可执行文件(binary program)等等。

四,参考资料

《鸟哥的Linux私房菜 基础篇 第四版》

Linux 基础-文件权限与属性的更多相关文章

  1. Linux基础文件权限

    一.基本权限 文件权限设置: 可以赋于某个用户或组 能够以何种方式 访问某个文件 权限对象:属主: u属组: g其他人: o 基本权限类型:读:r 4写:w 2执行: x 1 rwx rw- r-- ...

  2. 6、Linux基础--文件类型、属性信息、创建用户与用户组

    笔记 1.晨考 1.解析映射文件 /etc/hosts 2.磁盘挂载文件 /etc/fstab 3.设置开机自启动脚本的步骤 1.修改/etc/rc.local 2.设置可执行权限 chmod +x ...

  3. Linux文件权限与属性详解 之 chattr & lsattr

    Linux文件权限与属性详解 之 一般权限 Linux文件权限与属性详解 之 ACL Linux文件权限与属性详解 之 SUID.SGID & SBIT Linux文件权限与属性详解 之 ch ...

  4. Linux文件权限与属性详解 之 SUID、SGID & SBIT

    Linux文件权限与属性详解 之 一般权限 Linux文件权限与属性详解 之 ACL Linux文件权限与属性详解 之 SUID.SGID & SBIT Linux文件权限与属性详解 之 ch ...

  5. Linux文件权限与属性详解 之 一般权限

    目录 一般属性 1. iNode: 3152621 2. 文件类型 3.文件访问权限 4. 链接数目: 5. 文件所有者 6. 文件所属组 7. 文件大小 8. 修改时间 9. 文件名称 Linux文 ...

  6. Linux文件权限与属性详解 之 ACL

    Linux文件权限与属性详解 之 一般权限 Linux文件权限与属性详解 之 ACL Linux文件权限与属性详解 之 SUID.SGID & SBIT Linux文件权限与属性详解 之 ch ...

  7. Linux文件权限与属性详解 之 su & sudo

    Linux文件权限与属性详解 之 一般权限 Linux文件权限与属性详解 之 ACL Linux文件权限与属性详解 之 SUID.SGID & SBIT Linux文件权限与属性详解 之 ch ...

  8. 第六章、Linux 的文件权限与目录配置

    第六章.Linux 的文件权限与目录配置 1. 使用者与群组 2. Linux文件权限概念 2.1 Linux文件属性 2.2 如何改变文件属性与权限: chgrp, chown, chmod 2.3 ...

  9. Linux基础系统权限

    Linux基础系统权限 文件权限 Linux中,每个文件拥有三种权限 权限 对文件的影响 对目录的影响 r(读取) 可读取文件 可列出目录内容 w(写入) 可修改文件内容 可在目录中创建删除文件 x( ...

  10. 全面解析Linux数字文件权限

    全面解析Linux数字文件权限 来源:   时间:2013-09-04 20:35:13   阅读数:11433 分享到:0 [导读] 在刚开始接触Linux时对于文件权限的理解并不是很透彻,这里详细 ...

随机推荐

  1. 新开源HTML5单文件网页版ACME客户端,可在线申请Let's Encrypt、ZeroSSL免费HTTPS多域名通配符泛域名SSL/TLS证书(RSA/ECC/ECDSA)

    目录 开源项目的起源 项目地址 使用方法 第一步:选择Let's Encrypt.ZeroSSL或其他证书颁发机构 第二步:证书配置,填写域名 第三步:完成域名所有权的验证 第四步:下载保存证书PEM ...

  2. docker垃圾处理

    1 查找docker文件夹 find / -name docker 2 列举文件夹大小 du -h --time --max-depth=1 . df -h df -TH 3 Docker占用磁盘空间 ...

  3. Ceph 存储集群 - 搭建存储集群---教程走到osd激活这一步执行不下去了,报错

    目录 一.准备机器 [1. 修改主机名](所有节点)(https://www.cnblogs.com/zengzhihua/p/9829472.html#1-修改主机名) [2. 修改hosts文件] ...

  4. 2_Docker

    一. Docker介绍 1.1 引言 场景1: 我本地运行没问题啊 环境问题 场景2: 哪个哥们又写死循环了, 怎么这么卡 在多用户的操作系统下, 会相互影响 场景3: 淘宝在双11的时候, 用户量暴 ...

  5. Filter 筛选器(二)之 ExceptionFilter

    public class MyExceptionFilter : IAsyncExceptionFilter { private readonly ILogger<MyExceptionFilt ...

  6. VS Code For Web 深入浅出 -- 导读篇

    下一代 IDE 的形态究竟是什么呢?VS Code For Web 试图回答这个问题. 背景 众所周知,VS Code 是当前工业界最优秀的代码编辑器之一.它由<设计模式>的作者 Eric ...

  7. Scanner的用法 从键盘输入

    先导入包 import java.util.Scanner; 后输入 Scanner Sc=new Scanner(System.in); //(Sc可以自定义,无实质意义) int i; i=Sc. ...

  8. String简介

    String:字符串,使用一对""引起来表示. 1.String声明为final的,不可被继承 2.String实现了Serializable接口:表示字符串是支持序列化的.实现了 ...

  9. web share api 分享

    概述 Navigator.share()  方法通过调用本机的共享机制作为 Web Share API 的一部分.如果不支持 Web Share API,则此方法为 undefined. 此项功能仅在 ...

  10. 利用xtrabackup8完全,增量备份及还原MySQL8

    利用xtrabackup8完全,增量备份及还原MySQL8 1.环境准备 服务器 作用 数据库版本 xtrabackup版本 10.0.0.8 数据备份 mysql8.0.26 8.0.28 10.0 ...