Linux 基础-文件权限与属性
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
也是一种特殊的文件类型,他主要的目的在解决多个程序同时存取一个文件所造成的错误问题。FIFO
是 first-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 基础-文件权限与属性的更多相关文章
- Linux基础文件权限
一.基本权限 文件权限设置: 可以赋于某个用户或组 能够以何种方式 访问某个文件 权限对象:属主: u属组: g其他人: o 基本权限类型:读:r 4写:w 2执行: x 1 rwx rw- r-- ...
- 6、Linux基础--文件类型、属性信息、创建用户与用户组
笔记 1.晨考 1.解析映射文件 /etc/hosts 2.磁盘挂载文件 /etc/fstab 3.设置开机自启动脚本的步骤 1.修改/etc/rc.local 2.设置可执行权限 chmod +x ...
- Linux文件权限与属性详解 之 chattr & lsattr
Linux文件权限与属性详解 之 一般权限 Linux文件权限与属性详解 之 ACL Linux文件权限与属性详解 之 SUID.SGID & SBIT Linux文件权限与属性详解 之 ch ...
- Linux文件权限与属性详解 之 SUID、SGID & SBIT
Linux文件权限与属性详解 之 一般权限 Linux文件权限与属性详解 之 ACL Linux文件权限与属性详解 之 SUID.SGID & SBIT Linux文件权限与属性详解 之 ch ...
- Linux文件权限与属性详解 之 一般权限
目录 一般属性 1. iNode: 3152621 2. 文件类型 3.文件访问权限 4. 链接数目: 5. 文件所有者 6. 文件所属组 7. 文件大小 8. 修改时间 9. 文件名称 Linux文 ...
- Linux文件权限与属性详解 之 ACL
Linux文件权限与属性详解 之 一般权限 Linux文件权限与属性详解 之 ACL Linux文件权限与属性详解 之 SUID.SGID & SBIT Linux文件权限与属性详解 之 ch ...
- Linux文件权限与属性详解 之 su & sudo
Linux文件权限与属性详解 之 一般权限 Linux文件权限与属性详解 之 ACL Linux文件权限与属性详解 之 SUID.SGID & SBIT Linux文件权限与属性详解 之 ch ...
- 第六章、Linux 的文件权限与目录配置
第六章.Linux 的文件权限与目录配置 1. 使用者与群组 2. Linux文件权限概念 2.1 Linux文件属性 2.2 如何改变文件属性与权限: chgrp, chown, chmod 2.3 ...
- Linux基础系统权限
Linux基础系统权限 文件权限 Linux中,每个文件拥有三种权限 权限 对文件的影响 对目录的影响 r(读取) 可读取文件 可列出目录内容 w(写入) 可修改文件内容 可在目录中创建删除文件 x( ...
- 全面解析Linux数字文件权限
全面解析Linux数字文件权限 来源: 时间:2013-09-04 20:35:13 阅读数:11433 分享到:0 [导读] 在刚开始接触Linux时对于文件权限的理解并不是很透彻,这里详细 ...
随机推荐
- UEC++ 接口
词义广泛,用来陈述功能,选项,与其他程序结构进行沟通的方式.接口抽象出了交互结构,提供了两个未知逻辑交互的便捷性.对于编程中,如何更好的设计低耦合程序起到了至关重要的作用.设计者可以在互不关心的情况下 ...
- Docker 部署 RocketMQ 双主双从模式( 版本v4.7.0)
文章转载自:http://www.mydlq.club/article/96/ 系统环境: 系统版本:CentOS 7.8 RocketMQ 版本:4.7.0 Docker 版本:19.03.13 一 ...
- LINUX 新增的磁盘不建立分区,直接建立文件系统并挂载
假设新硬盘是 /dev/sdc fdisk操作的是/dev/sdc ,分区后才会有/dev/sdc1 /dev/sdc2 之类 一般mkfs.ext4 /dev/sdc1 来格式化一个分区,再moun ...
- MySQL数据表更新模板
-- ---------------------------- -- 新增表 -- ---------------------------- CREATE TABLE `biz_circle_lead ...
- [题解] Atcoder ABC 225 H Social Distance 2 生成函数,分治FFT
题目 首先还没有安排座位的\(m-k\)个人之间是有顺序的,所以先把答案乘上\((m-k)!\),就可以把这些人看作不可区分的. 已经确定的k个人把所有座位分成了k+1段.对于第i段,如果我们能求出这 ...
- [CG从零开始] 3. 安装 pyassimp 库加载模型文件
assimp 是一个开源的模型加载库,支持非常多的格式,还有许多语言的 binding,这里我们选用 assimp 的 python 的 binding 来加载模型文件.不过社区主要是在维护 assi ...
- P1886 滑动窗口 /【模板】单调队列 方法记录
原题链接 滑动窗口 /[模板]单调队列 题目描述 有一个长为 \(n\) 的序列 \(a\),以及一个大小为 \(k\) 的窗口.现在这个从左边开始向右滑动,每次滑动一个单位,求出每次滑动后窗口中的最 ...
- Sqoop 之 安装
Sqoop 之 安装 前言 安装 Sqoop 的前提是已经具备 Java 和 Hadoop 的环境. 一.下载并解压 1) 下载地址:http://mirrors.hust.edu.cn/apache ...
- 小白转行入门STM32----手机蓝牙控制STM32单片机点亮LED
@ 目录 引言导读 一.通信基础知识 1.1 通信到底传输的是什么? 1.2 比特率和波特率 习题 1.1 双工和单工 习题 1.2 串行和并行 1.3 异同通信和同步通信 习题 二.连接STM32单 ...
- 2022-08-14-esp32把玩记-③_轻轻松松显示个二维码(esp32+ssd1306显示图片)
layout: post cid: 9 title: esp32把玩记-③ 轻轻松松显示个二维码(esp32+ssd1306显示图片) slug: 9 date: 2022/08/14 09:22:0 ...