Linux文件权限和目录配置

Linux文件权限和目录配置Linux 文件权限和目录管理用户和用户组 Linux 文件权限 Linux 文件属性 Linux 文件权限的重要性 Linux 用户身份和用户组记录的文件 Linux 修改文件属性和权限 chgrp 修改所属组 ch

大家好,欢迎来到IT知识分享网。

Linux文件权限和目录配置

用户和用户组

文件拥有者(Owner)

文件拥有者是指创建文件的用户,拥有者可以对文件进行读取、写入和执行等操作。设置文件的拥有者可以保护个人隐私和文件安全,确保只有文件拥有者能够查看或修改文件内容。

用户组(Group)

用户组是将多个用户组织在一起的概念,通过用户组可以实现协同工作和权限管理。用户组可以设置不同的权限,允许组内成员相互访问和修改文件,同时限制其他用户对文件的访问权限。

其他人(Others)

其他人是除文件所有者和文件所属组之外的所有用户,这些用户被认为是文件的“其他人”,只能根据文件的“其他人”权限来访问文件或目录。

image-20240225173621025

如上图所示:

以用户1来说,用户1创建的文件拥有者为用户1,它属于用户组1,而用户3相对于用户1来说,则他只是其他人。

如果你想让用户3进来查看共享的文件,只需要将用户3拉进用户组1即可。用户可以加入多个组

root(超级管理员)

在Linux系统中,root是一个特殊的用户,通常被称为“超级用户”或“管理员用户”,拥有系统上最高的权限。root用户具有对系统中所有文件和进程的完全控制权,可以执行任何操作,包括创建、删除和修改文件,安装软件,更改文件权限以及管理其他用户和用户组等

Linux文件权限

Linux文件属性

使用【ls -al】列出指定目录下的所有文件的详细信息

image-20240225182117192

  • ls是列出文件和目录内容的命令。
  • -a参数表示显示所有文件,包括以.开头的隐藏文件。
  • -l参数表示使用长格式列表输出,这意味着会显示文件或目录的详细信息,包括权限、所有者、所属组、大小、创建日期等。

image-20240225192541582

第一栏: 文件类型权限

【-rw- — —】代表这个文件类型权限

第一个字符【-】代表这个文件是目录、文件或链接文件等

当为【d】则是目录,例如【.config】那一行

当为【-】则是文件,例如我上图【anaconda-ks.cfg】这个文件

当为【l】则是链接文件,如下图

image-20240225184636833

当为【b】则是设备文件里面的可供存储的设备

image-20240225184745086

当为【c】则表示为设备文件里面的串行端口设备,例如鼠标、键盘(一次性读取设备)

image-20240225185132331


接下来字符中,以三个为一组,且均为【rwx】的三个参数组合。

image-20240225191315989

其中【r】代表可读 (read)、【w】代表可写(write)、【x】代表可执行(execute)

这三个权限的位置不会变,如果没有权限,就会出现【-】,有该权限就会显示对应权限的字符

以【anaconda-ks.cfg】文件为例,文件拥有者拥有读和写的权限,文件所属用户组没有权限,其他人没有权限。

第二栏:链接数

第二栏数字在文件或目录中表示链接数

  • 当链接数为 1 时:表示只有一个链接指向此文件。这经常发生在普通的文件上,因为通常情况下一个文件只有一个入口链接。
  • 当链接数大于等于2时:表示目录,如果一个目录的链接数为 2,表示除了当前目录(.)本身外,还有一个链接指向上一级目录(..

    image-20240225194127455

例如:【.cache】这个目录

image-20240225193714385

【.】代表当前目录【..】代表父目录,【.cache】当前目录有7个链接文件,父目录也有7个

第三栏:文件的所有者

第四栏:文件的所属用户组

第五栏:文件的大小(默认是Bytes,1G=1024MB,1MB=1024KB,1KB=1024B)

第六栏:文件的最后修改时间(通常以月 /日 时间表示,如果这个文件修改时间距离太久,时间则换成年来表示)

image-20240225194855298

如果想显示完整时间,可以利用ls的选项

[root@chenshiren ~]# ls -al --full-time / 总用量 28 dr-xr-xr-x. 18 root root 235 2024-02-24 15:56:21. +0800 . dr-xr-xr-x. 18 root root 235 2024-02-24 15:56:21. +0800 .. dr-xr-xr-x. 2 root root 6 2021-08-10 06:13:01.000000000 +0800 afs lrwxrwxrwx. 1 root root 7 2021-08-10 06:13:01.000000000 +0800 bin -> usr/bin dr-xr-xr-x. 5 root root 4096 2024-02-24 16:00:08. +0800 boot drwxr-xr-x. 18 root root 3300 2024-02-25 17:29:43. +0800 dev drwxr-xr-x. 133 root root 8192 2024-02-25 17:29:44. +0800 etc drwxr-xr-x. 3 root root 17 2024-02-24 16:00:40. +0800 home lrwxrwxrwx. 1 root root 7 2021-08-10 06:13:01.000000000 +0800 lib -> usr/lib lrwxrwxrwx. 1 root root 9 2021-08-10 06:13:01.000000000 +0800 lib64 -> usr/lib64 drwxr-xr-x. 2 root root 6 2021-08-10 06:13:01.000000000 +0800 media drwxr-xr-x. 3 root root 18 2024-02-24 15:58:10. +0800 mnt drwxr-xr-x. 2 root root 6 2021-08-10 06:13:01.000000000 +0800 opt dr-xr-xr-x. 340 root root 0 2024-02-25 17:29:40. +0800 proc dr-xr-x---. 7 root root 4096 2024-02-25 19:19:19. +0800 root drwxr-xr-x. 46 root root 1180 2024-02-25 18:20:10. +0800 run lrwxrwxrwx. 1 root root 8 2021-08-10 06:13:01.000000000 +0800 sbin -> usr/sbin drwxr-xr-x. 2 root root 6 2021-08-10 06:13:01.000000000 +0800 srv dr-xr-xr-x. 13 root root 0 2024-02-25 17:29:42. +0800 sys drwxrwxrwt. 19 root root 4096 2024-02-25 18:43:01. +0800 tmp drwxr-xr-x. 12 root root 144 2024-02-24 15:56:21. +0800 usr drwxr-xr-x. 20 root root 4096 2024-02-24 16:05:25. +0800 var 

第七栏:文件的名称

第七栏就是文件的名称,比较特殊的是

文件名称是【.】表示当前目录【..】表示上一级目录

文件名称以【.cache】类似以【.】开头的文件是隐藏文件,之所以能看见是因为,【ls】命令的【-a】参数

image-20240225195244928

Linux文件权限的重要性

  1. 数据保护:文件权限可以阻止未经授权的用户或进程访问敏感数据。设置正确的文件权限可以确保只有授权用户才能读取、写入或执行文件,有助于保护隐私信息和重要数据。
  2. 系统安全:通过设置正确的文件权限,可以防止恶意用户或恶意软件修改系统关键文件,从而保护系统的安全性。例如,关键系统文件只能由root用户进行修改,其他用户无法访问或修改这些文件。
  3. 权限管理:文件权限是对系统资源进行访问控制和管理的重要手段。通过正确设置文件权限,可以确保用户只能访问他们需要的文件,并避免对系统的不必要干扰和风险。
  4. 文件完整性:文件权限还有助于确保文件的完整性,防止文件被非法篡改或破坏。只有具有足够权限的用户才能对文件进行修改,这有助于确保文件内容的可信度。
  5. 避免意外修改:正确的文件权限设置可以避免用户或程序意外修改或删除关键文件,从而降低系统发生意外故障的风险。

Linux用户身份和用户组记录的文件

Linux系统中,用户身份和用户组信息通常记录在以下文件中:

  • /etc/passwd:这个文件包含了系统上所有用户的基本信息,每行对应一个用户。每行包含了用户名、加密后的密码(现在通常为 “x”,密码以加密形式保存在 /etc/shadow 文件中)、用户ID(UID)、用户组ID(GID)、用户的全名、家目录和默认shell等信息。
  • /etc/shadow:这个文件包含了用户的加密密码及密码相关的信息。只有root用户具有读权限。密码部分被加密存储,使用 shadow 文件可以增加对密码文件的安全性。
  • /etc/group:这个文件包含了系统上所有用户组的信息。每行对应一个用户组,包含了用户组名、加密后的密码(现在通常为空)、用户组ID(GID)和属于该用户组的成员列表。

Linux修改文件属性和权限

chgrp:修改所属组

这个命令就是 change group的缩写,要修改用户组之前,确保所指定的用户组在 /etc/group 文件中已存在

用法

chgrp [选项] 用户组 文件 选项: -R:递归操作文件和目录 

示例

将 csq 及其子目录下所有文件的属组更改为”zhw”

[root@chenshiren ~]# ls -l csq/ # 修改用户组前 总用量 0 -rw-r--r--. 1 root root 0 225 20:19 csq.txt [root@chenshiren ~]# chgrp -R zhw csq/ [root@chenshiren ~]# ls -l csq/ # 修改用户组后 总用量 0 -rw-r--r--. 1 root zhw 0 225 20:19 csq.txtchgrp -R zhw csq/ # 如果改一些不存在于 /etc/group的组 [root@chenshiren ~]# chgrp -R zzz csq/  chgrp: 无效的组:“zzz” # 报错 
chown:修改文件拥有者

这个命令就是change owner的缩写,要修改之前,用户必须是/etc/passwd已存在的有效用户才能成功将文件或目录的所有者修改为该用户

chown还可以用于修改用户组

用法

chown [选项] [所有者][:[]] 文件 选项: -R:递归操作文件和目录 

示例

将 csq 及其子目录下所有文件的文件拥有者更改为”zhw”

[root@chenshiren ~]# chown -R zhw csq/ [root@chenshiren ~]# ls -l csq/  总用量 0 -rw-r--r--. 1 zhw zhw 0 225 20:19 csq.txt 

将 csq 及其子目录下所有文件的文件拥有者更改为”zhw”,所属组更改为”root”

[root@chenshiren ~]# chown -R zhw:root csq/ [root@chenshiren ~]# ls -l csq/ 总用量 0 -rw-r--r--. 1 zhw root 0 225 20:19 csq.txt 
chmod:修改文件的权限

权限设置方法有两种,分别可以使用数字或是符号来进行权限修改

语法

chmod [选项] 模式[,模式] 文件 选项: -R:递归操作文件和目录 模式:用数字或符号表示权限修改的方式 

数字模式

  • 数字模式为 3 个数字表示的权限,每个数字代表了不同的用户类别(文件拥有者、用户组、其他用户),分别对应读取、写入和执行权限。
  • 权限数字为 0~7,其中每个数字的二进制表示为 4(读取权限)、2(写入权限) 和 1(执行权限)的和。

例如:将【anaconda-ks.cfg】文件权限设置为文件拥有者可读可写,用户组可读,其他用户没权限

[root@chenshiren ~]# chmod 640 anaconda-ks.cfg  [root@chenshiren ~]# ls -l 总用量 4 -rw-r-----. 1 root root 1437 224 16:00 anaconda-ks.cfg 

符号模式

  • 符号模式使用符号来表示权限的更改,包括 :+(添加权限)、-(去除权限)和 =(设置权限)、r (读取权限)、”w(写入权限)、x(执行权限)等。
  • u:表示文件拥有者
  • g:表示用户组
  • o:表示其他用户
  • a:表示所有用户

例如:将【anaconda-ks.cfg】文件权限设置为文件拥有者可读可写可执行,用户组可读可写,其他用户可读

[root@chenshiren ~]# chmod u=rwx,g=rw,o=r anaconda-ks.cfg  [root@chenshiren ~]# ls -l 总用量 4 -rwxrw-r--. 1 root root 1437 224 16:00 anaconda-ks.cfg 

例如:将【anaconda-ks.cfg】文件权限设置为文件拥有者可读可写可执行,用户组和其他用户没权限

[root@chenshiren ~]# chmod u=rwx,g-rwx,o-rwx anaconda-ks.cfg  [root@chenshiren ~]# ls -l 总用量 4 -rwx------. 1 root root 1437 224 16:00 anaconda-ks.cfg 

Linux目录与文件的权限意义

在Linux系统中,文件的权限用于控制对文件的访问和操作权限,其中对于一般文件和目录文件的权限有不同的含义和影响:

  • 一般文件:对于一般文件,读取权限(r)表示可以查看文件内容,写入权限(w)表示可以修改文件内容(不含删除),执行权限(x)表示该文件具有可以被系统执行的权限
  • 目录文件:对于目录文件,读取权限(r)表示可以列出目录中的文件列表,写入权限(w)表示可以在目录中创建、删除或重命名文件以及移动文件、目录位置,执行权限(x)表示可以进入该目录

Linux文件种类、扩展名和文件名限制

Linux文件种类

在Linux文件属性中已经说到了文件种类,下面是更全面的文件种类

普通文件(Regular Files)

  • 文件类型标识符: -
  • 描述: 包含纯文本、二进制文件、数据文件等
  • 示例: .txt 文本文件、.sh 图片文件、/var/log/下的日志文件等

目录文件

  • 文件类型标识符: d
  • 描述: 目录
  • 示例: 例如通过 【ls -l】查看文件权限属性,【drwxrwxrwx】d开头就是目录。

符号链接文件

  • 文件类型标识符: l
  • 描述: 文件的符号链接,指向另一个文件或目录
  • 示例:image-20240226000108793

字符设备文件

  • 文件类型标识符: c
  • 描述: 提供串端口的接口设备
  • 示例: 终端接口文件 /dev/tty

    鼠标键盘

    image-20240226000421385

块设备文件

  • 文件类型标识符: b
  • 描述: 提供块为单位的设备访问的设备文件
  • 示例: 硬盘驱动器文件 /dev/nvme0n1.(通常是sda sdb之类,我是因为在选择磁盘类型时候选择了NVMe)

套接字文件(Socket Files)

  • 文件类型标识符: s
  • 描述: 用于进程间通信的文件类型。
  • 示例: image-20240226000705135

管道文件

  • 文件类型标识符: p
  • 描述: 用于进程间通信的一种特殊文件。
  • 示例:

    image-20240226001226673

Linux文件扩展名

在Linux系统中,文件的扩展名不像在Windows系统中那样起着决定性的作用。Linux系统主要根据文件的内容和权限来确定文件类型,而不是仅仅依赖于文件扩展名。然而,为了帮助用户快速识别文件类型,有时会在文件名中包含一些表示文件类型或用途的扩展名。

以下是一些常见的在Linux系统中使用的文件扩展名以及它们通常表示的文件类型:

  • .txt: 文本文件
  • .sh:Shell 脚本文件
  • .conf: 配置文件
  • .log:日志文件
  • .html, .css, .js,.php: 网页文件
  • .zip, .tar.gz, .tar: 压缩文件
  • .cpp, .c, .java:源代码文件

Linux文件名长度限制

单一文件或目录的最大容许文件名为 255 字节,以一个 ASCIl英文占用一个字节来说,则大约可达 255 个字符长度。若是以每个汉字占用 2字节来说,最大文件名就是大约在 128个汉字之间

Linux文件名限制

设置Linux下面的文件名时,最好可以避免一些特殊字符比较好

+ - * ? > < ; & ! [ ] | \ ' " ` ( ) { 
    } 

因为这些符号在命令行模式下,是有特殊意义的

文件名开头为小数点【.】时,代表这个文件为隐藏文件

Linux目录配置

Linux目录配置的依据——FHS

了Linux系统中的文件系统层次标准(FHS,Filesystem Hierarchy Standard),旨在规范不同目录下应该放置什么类型的数据,以帮助用户、开发者和维护者更好地管理系统。

FHS定义了四种目录形态

可分享 不可分享
不变 /usr(软件存放处) /etc(配置文件)
/opt(第三方辅助软件) /boot(启动与内核文件)
可变动 /var/mail(用户邮箱) /var/run(程序相关)
/var/spool/news(新闻组) /var/lock(程序相关)

FHS针对目录树架构定义出三层目录下面一个放置什么数据

  • /(root,根目录):与启动系统有关
  • /usr(Unix Software Resource):与软件安装/执行有关
  • /var(Variable):与系统运行过程有关

根目录(/)的意义与内容

以账号的角度来看,所谓的root就是系统管理员的身份;以目录的角度来看,所谓的root指的是根目录,也就是/

根目录的重要性无疑是不言而喻的,它是整个文件系统的起点和核心

根目录不仅包含系统运行所需的关键文件,还与系统的启动、还原和修复等操作密切相关

FHS要求:根目录不要放在非常大的分区内,因为越大的分区你会放入越多的数据,如此一来根目录所在分区就可能会有较多发生错误的机会

FHS建议:根目录(/)所在分区应该越小越好,且应用程序所安装的软件最好不要与根目录放在同一个分区内,保持根目录越小越好。如此不但性能较佳,根目录所在的文件系统也较不容易发生问题。

第一层:FHS要求必须存在的目录

目录 应放置的文件内容
/bin 存放系统启动和正常运行过程中必需的基本用户命令,/bin 目录中的命令通常是所有用户(包括普通用户和系统管理员)都可以执行的命令,无需特权权限
/boot 放置启动会使用的文件,包含用于启动系统的内核和引导加载程序文件
/dev 任何设备与接口设备都是以文件的形式存在于这个目录当中
/etc 系统主要配置文件放在这个目录内
/lib 放置启动时会用到的函数库
/media 通常用于挂载可移动介质,如USB驱动器、光盘等
/mnt 手动挂载临时文件系统的目录
/opt 存放第三方软件放置目录
/run 系统引导过程中存放系统运行时的临时文件
/sbin 存放系统启动和维护过程中必需的系统管理命令,这些命令通常是用于系统修复、恢复以及在紧急情况下维护系统的关键工具
/srv 包含特定服务相关数据或文件的目录
/tmp 用于存放临时文件
/usr 第二层FHS设置,后续介绍
/var 包含经常变化的文件,如日志文件

第一层:FHS建议可以存在的目录

目录 应放置的文件内容
/home 包含用户的主目录,每个用户会有一个独立的子目录在其中存放个人文件
/lib64 用于存放与/lib不同格式的二进制函数库
/root 超级用户root的主目录,root用户的个人文件通常会存放在此目录下

需要了解的目录

目录 应放置的文件内容
/lost+found 这个目录是使用标准的 ext2、ext3、ext4 文件系统格式才会产生的一个目录,目的在于当文件系统发生错误时,将一些遗失的片段放置到这个目录下,不过如果使用的是 xfs 文件系统的话,就不会存在这个目录
/proc 包含当前正在运行的进程的信息,是一个虚拟文件系统,提供有关内核和进程的信息
/sys 同样是一个虚拟文件系统,提供有关系统硬件及内核模块的信息

/usr的意义和内容

很多人误以为 usr 是 user 的缩写,但实际上,usr 是 UNIX Software Resource 的缩写

根据 FHS的基本定义,/usr 目录包含的数据被认为是可分享的(shareable)和不可更改的(static)。这意味着,/usr 目录中的内容可以被共享给局域网内的其他主机使用,包括通过网络文件系统(如NFS服务器)进行挂载。

FHS 建议:软件开发者应该合理地将他们的数据放置在 /usr 目录的子目录中,而不是创建自己独立的目录。因为所有系统默认的软件(由发行版发布者提供的软件)都会被安装在 /usr 目录下

第二层:FHS要求/usr 目录下必须要存在的目录

目录 应放置的文件内容
/usr/bin/ 一般用户能够使用的命令放在这里
/usr/lib/ 与/lib功能相同放置启动时会用到的函数库,lib就是链接到此目录中的
/usr/local/ 用于安装本地系统管理员自行安装的软件,通常可以包含/usr/local/bin、/usr/local/lib等子目录
/usr/sbin/ 用于存放系统管理员(root用户)所需的系统管理命令,而非系统正常运行所必需的系统命令
/usr/share/ 放置只读的数据文件,包括共享文档

第二层:FHS建议可以存在的目录

目录 应放置的文件内容
/usr/game/ 游戏程序和游戏数据文件
/usr/include/ 头文件(用于编译程序时包含的头文件)
/usr/libexec/ 系统特定的程序或脚本
/usr/lib/ 放置启动时会用到的函数库
/usr/src/ 源代码文件

/var的意义和内容

/var 目录通常用于存放经常变化的文件,包括日志文件、缓存文件、临时文件以及其他动态生成的数据,这些数据是系统在运行过程中产生的,并且可能随着时间的推移而变化。

第二层:FHS要求存在的目录

目录 应放置的文件内容
/var/cache/ 缓存文件,用于存放各种应用程序的缓存数据
/var/lib/ 应用程序运行时需要的动态信息或状态信息的文件,如数据库文件等
/var/lock/ 锁文件,用于确保同一时刻只有一个进程能够访问某个特定资源
/var/log/ 系统和应用程序日志文件,记录系统活动和事件的日志信息
/var/mail/ 用于存放用户的电子邮件
/var/run/ 存放正在运行的系统进程和服务的PID文件
/var/spool/ 用于存放需要排队等待其他程序处理的数据,这些数据一般是在被处理之前会先存放在这个目录中。一些常见的用途包括存放邮件队列、打印队列、数据传输队列等。一旦数据被处理完毕,通常会自动删除或移动这些数据,以便为新的数据腾出空间

Linux目录树

Linux系统的目录结构就像一棵倒挂的大树,所有文件和文件夹都从顶部的树根向下延伸

  • 目录树起点为根目录(/)
  • 每一个目录不止能使用本地分区的文件系统,也可以使用网络上的文件系统,举例来说,可以使用Network File System(NFS)服务器挂在某特定目录
  • 每一个文件在此目录树中的文件名(包含路径)都说独一无二的

使用 【ls -l /】命令来查看跟目录

[root@chenshiren ~]# ls -l / dr-xr-xr-x. 2 root root 6 810 2021 afs lrwxrwxrwx. 1 root root 7 810 2021 bin -> usr/bin dr-xr-xr-x. 5 root root 4096 224 16:00 boot drwxr-xr-x. 18 root root 3300 226 15:01 dev drwxr-xr-x. 133 root root 8192 226 15:02 etc drwxr-xr-x. 3 root root 17 224 16:00 home lrwxrwxrwx. 1 root root 7 810 2021 lib -> usr/lib lrwxrwxrwx. 1 root root 9 810 2021 lib64 -> usr/lib64 drwxr-xr-x. 2 root root 6 810 2021 media drwxr-xr-x. 3 root root 18 224 15:58 mnt drwxr-xr-x. 2 root root 6 810 2021 opt dr-xr-xr-x. 370 root root 0 226 11:53 proc dr-xr-x---. 7 root root 4096 226 14:59 root drwxr-xr-x. 46 root root 1160 226 11:53 run lrwxrwxrwx. 1 root root 8 810 2021 sbin -> usr/sbin drwxr-xr-x. 2 root root 6 810 2021 srv dr-xr-xr-x. 13 root root 0 226 11:53 sys drwxrwxrwt. 21 root root 4096 226 15:02 tmp drwxr-xr-x. 12 root root 144 224 15:56 usr drwxr-xr-x. 20 root root 4096 226 00:08 var 

目录树架构

image-20240226151245122

Linux绝对路径与相对路径

在Linux系统中,有绝对路径和相对路径这两种方式来指定文件或目录的位置:

  • 绝对路径是一个完整的文件或目录的路径,从根目录(/)开始一直到目标文件或目录的路径。它提供了文件或目录的完整位置信息,不依赖于当前工作目录。比如,/home/user/Documents/file.txt就是一个绝对路径,从根目录开始沿着目录树一直指向文件 file.txt
  • 相对路径:相对路径则是相对于当前工作目录来指定文件或目录的路径。

    例如:假设当前工作目录是/home/user,要指向同级目录下的文件notes.txt,可以使用相对路径./notes.txt,如果要指向上一级目录/home,可以使用相对路径【../】

    在Linux文件属性中的文件名称里,讲到Linux当前目录下隐藏了【.】和【..】俩个目录

    image-20240226152458897

  • 【.】:代表当前的目录,也可以使用【./】表示
  • 【..】:代表上一级目录,也可以使用【../】表示

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/156834.html

(0)
上一篇 2025-02-09 20:10
下一篇 2025-02-09 20:20

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信