chmod、chown命令及文件类型详解

218 阅读9分钟

chmod 命令

1.1含义:

“chmod” 是 “change mode” 的缩写,用于改变文件或目录的权限。在 Linux 和 Unix 系统中,每个文件和目录都有一组权限,这些权限决定了谁(用户、组用户、其他用户)可以对文件或目录进行读取(r)、写入(w)和执行(x)操作。

1.2权限表示方式:

1.2.1符号表示法:

例如,“chmod u + rwx file.txt”。这里 “u” 代表用户(user),“+” 表示增加权限,“rwx” 表示读取、写入和执行权限。如果要对组用户(group)设置权限,可以用 “g”,对其他用户(others)可以用 “o”。如果要减少权限,可以用 “-”。例如,“chmod g - w file.txt” 会减少组用户对文件 “file.txt” 的写入权限。

1.2.2数字表示法:

权限也可以用数字来表示。读取权限(r)对应数字 4,写入权限(w)对应数字 2,执行权限(x)对应数字 1。将这些数字相加就可以得到一个表示权限的三位数。例如,“rwx” 对应的数字是 7(4 + 2+ 1),“rw -” 对应的数字是 6(4 + 2+ 0)。所以,“chmod 754 file.txt” 会将文件 “file.txt” 的用户权限设置为 “rwx”,组用户权限设置为 “r - x”,其他用户权限设置为 “r - -”。

1.3应用场景:

1.3.1安全设置:

在服务器环境中,通过合理设置文件权限来确保系统安全。例如,对于配置文件,通常只允许管理员(root 用户)进行写入操作,其他用户只能读取,就可以使用 “chmod 644 config.ini” 来设置权限。

1.3.2软件安装:

当安装软件时,有些脚本文件需要有执行权限才能正常运行。可以使用 “chmod + x install.sh” 来赋予安装脚本执行权限。

chown 命令

2.1含义:

“chown” 是 “change owner” 的缩写,用于改变文件或目录的所有者和所属组。文件和目录都有一个所有者(通常是创建该文件的用户)和一个所属组,通过 “chown” 命令可以重新指定这些属性。

2.2语法示例:

“chown user:group file.txt”,其中 “user” 是新的所有者用户名,“group” 是新的所属组名。如果只想改变所有者,可以省略所属组部分,如 “chown newuser file.txt”;如果只想改变所属组,可以使用 “chown :newgroup file.txt”。

2.3应用场景:

2.3.1用户管理:

在多人使用的系统(如服务器)中,当用户离职或职责变更时,需要将其拥有的文件和目录的所有权转移给其他用户。例如,将用户 “user1” 的文件转移给用户 “user2”,可以使用 “chown user2 filelist.txt”,其中 “filelist.txt” 是用户 “user1” 所拥有的文件列表。

2.3.2系统维护:

在进行系统维护或升级后,可能需要调整某些文件的所属组,以确保新的系统组件或服务能够正确访问这些文件。例如,将一组配置文件的所属组从 “group1” 更改为 “group2”,可以使用 “chown :group2 configfiles - *”,其中 “configfiles - *” 是配置文件的通配符表示。

3.文件权限中的 s

3.1 s 权限在文件权限中的位置和基本含义

1)在 Linux 和 Unix 文件权限表示中,“s” 权限出现在用户(user)、组(group)或其他(others)权限位的执行(x)权限位置。它是一种特殊的权限设置,有 “suid”(Set - User - ID)、“sgid”(Set - Group - ID)两种主要形式。

2)正常的执行权限 “x” 如果被 “s” 替换,例如对于用户权限位,如果是 “rws”,这里的 “s” 就表示 “suid”;对于组权限位,如果是 “r - xs”,这里的 “s” 表示 “sgid”。

3.2 suid(Set - User - ID)详细解释

3.2.1 含义:

当一个可执行文件设置了 “suid” 权限后,任何用户执行这个文件时,将以该文件所有者的身份来运行,而不是以执行这个文件的用户自己的身份。

3.2.2安全风险与用途示例:

3.2.2.1 安全风险:

这是一种潜在的安全风险,因为如果被恶意利用,攻击者可以通过执行设置了 “suid” 权限的程序,获取该程序所有者(通常是 root)的权限。例如,一个被篡改的设置了 “suid” 的程序可能会被用于提升权限,获取系统的最高控制权。

3.2.2.2 合法用途:

“suid” 权限有一些合法的用途。例如,“passwd” 命令用于用户修改自己的密码。这个命令通常设置了 “suid” 权限,因为用户在修改密码时需要将新密码写入到受保护的密码文件(如 /etc/shadow)中,而普通用户没有直接写入该文件的权限。通过设置 “suid”,用户在执行 “passwd” 命令时,能够以 “root”(该命令所有者)的身份来完成密码写入操作,从而实现密码修改功能。

3.3 sgid(Set - Group - ID)详细解释

3.3.1 含义:

**当一个文件设置了 “sgid” 权限后,****任何用户执行这个文件时,将以该文件所属组的身份来运行。**另外,对于目录来说,“sgid” 权限有特殊的作用。当一个目录设置了 “sgid” 权限后,在这个目录下创建的任何文件,其所属组将自动设置为该目录的所属组,而不是创建文件的用户所属组。

3.3.2 用途示例:

文件共享:

在一个团队协作的环境中,假设有一个共享目录 “/team - project”,设置了 “sgid” 权限。当团队成员(他们可能属于不同的用户组)在这个目录下创建文件时,所有新创建的文件所属组都是 “/team - project” 目录的所属组。这样,团队中的其他成员只要属于这个共同的组,就可以方便地访问和处理这些文件,便于团队协作。

4.文件类型标识---第一个字符的含义

在 “-rw - r--r--” 这样的权限表示中,第一个字符代表文件类型。常见的有以下几种情况:

4.1**“-”(减号)**:表示普通文件。普通文件是最常见的文件类型,包括文本文件、二进制文件、脚本文件等。例如,一个简单的纯文本文件 “loot.txt”,像示例中的文件,它的第一个字符就是 “-”,这说明它是一个普通文件,可能包含一些文本内容,如用户记录的数据、配置信息等。

4.2**“d”**:代表目录。目录用于存储文件和其他子目录,它是一种特殊的文件类型,用于组织文件系统的层次结构。例如,“/home/user/Documents” 这个目录,它的权限表示的第一个字符就是 “d”,如 “drwxr - xr - x”。

4.3**“l”**:表示链接(符号链接或软链接)。软链接是一种特殊的文件,它类似于 Windows 中的快捷方式,指向另一个文件或目录。例如,假设在 Linux 系统中有一个软链接 “link - to - file” 指向 “/etc/hosts” 文件,它的权限表示可能是 “lrwxrwxrwx”,第一个字符 “l” 表明它是一个链接文件。

4.4**“c”**:代表字符设备文件。字符设备文件用于与设备进行按字符(字节)为单位的通信,通常用于处理字符型数据的设备,如终端设备(/dev/tty)等。

4.5**“b”**:代表块设备文件。块设备文件用于与设备进行按块为单位的通信,通常用于存储设备,如硬盘分区(/dev/sda1)等,其数据传输以块为单位。

4.6**“s”**:代表套接字文件。套接字文件用于进程间通信,尤其是网络通信相关的进程,它是一种特殊的文件类型,用于在不同进程之间建立通信通道。socket

4.7**“p”**:代表命名管道文件。命名管道文件用于在不同进程之间进行单向的数据传输,是进程间通信的一种方式,它允许一个进程向管道写入数据,另一个进程从管道读取数据。pipe

5.linux如何根据文件颜色区分文件类型

5.1 蓝色

代表目录:在 Linux 的命令行界面(如使用ls命令查看文件列表)中,蓝色通常表示目录。例如,当你在主目录下执行ls -l命令时,像/home/user/Documents这样的目录会显示为蓝色。这是一种很直观的表示方式,因为目录在文件系统中是用于组织和存储文件的特殊结构,通过颜色区分可以让用户快速识别。

5.2 绿色

代表可执行文件:绿色的文件通常是可执行文件。这些文件可以是二进制文件(由编译器生成的机器码文件),也可以是脚本文件(如bash脚本)。例如,一个自定义的test.sh脚本文件,如果它有执行权限(通过chmod +x test.sh设置),那么在文件列表中会显示为绿色。这有助于用户快速定位和区分哪些文件是可以直接运行的程序。

5.3 白色或黑色(普通文本)

代表普通文件:白色或黑色的文件一般是普通文件,如文本文件、配置文件等没有特殊执行属性的文件。像.txt文件、.ini配置文件等通常是这种颜色。这些文件主要用于存储数据、文档内容或者系统和软件的配置信息等。

5.4 红色

代表压缩文件或归档文件:常见的情况是,红色用于表示压缩文件或者归档文件。例如,.zip.tar.gz等格式的文件可能会显示为红色。这可以帮助用户在文件列表中快速识别哪些文件是需要解压或者解归档后才能进一步使用的文件。

5.5 黄色(或橙色)

代表设备文件:在某些 Linux 系统的文件颜色配置中,黄色或橙色可能用于表示设备文件。设备文件包括字符设备文件(如/dev/tty)和块设备文件(如/dev/sda)。这些文件用于和系统的硬件设备进行交互,通过颜色区分可以突出它们的特殊性。

5.6 青绿色(或浅蓝色)

代表链接文件(软链接或符号链接):链接文件类似于 Windows 中的快捷方式,它指向另一个文件或者目录。当使用ls命令查看时,链接文件可能会显示为青绿色或者浅蓝色。例如,如果有一个软链接link_to_file指向一个真实的文件,它会以这种颜色显示,方便用户识别其特殊的文件性质。

需要注意的是,文件颜色的显示可以通过修改LS_COLORS环境变量来定制。不同的 Linux 发行版可能默认的文件颜色设置略有差异,这些颜色设置主要是为了方便用户直观地识别文件的类型和属性。