Unix / Linux – 文件权限/访问模式
在本章中,我们将详细讨论 Unix 中的文件权限和访问模式。文件所有权是 Unix 的一个重要组成部分,它提供了一种安全的文件存储方法。Unix 中的每个文件
Unix / Linux – 文件权限/访问模式 在本章中,我们将详细讨论 Unix 中的文件权限和访问模式。文件所有权是 Unix 的一个重要组成部分,它提供了一种安全的文件存储方法。Unix 中的每个文件都具有以下属性 – 权限指标 使用ls -l命令时UNIX 文件权限,它会显示与文件权限相关的各种信息,如下所示 – $ls -l /home/amrood -rwxr-xr-- 1 amrood users 1024 Nov 2 00:10 myfile drwxr-xr--- 1 amrood users 1024 Nov 2 00:10 mydir 这里,第一列代表不同的访问模式,即与文件或目录相关联的权限。 权限分为三组,组中的每个位置表示一个特定的权限,按此顺序:读取(r),写入(w),执行(x) – 文件访问模式 文件的权限是 Unix 系统安全的第一道防线。Unix 权限的基本构建块是读取、写入和执行权限,如下所述 – 读 授予读取,即查看文件内容的能力。 写 授予修改或删除文件内容的能力。 执行 具有执行权限的用户可以将文件作为程序运行。 目录访问模式 目录访问模式以与任何其他文件相同的方式列出和组织。有一些差异需要提及 – 读 访问目录意味着用户可以阅读内容。用户可以查看目录中的文件名。 写 访问意味着用户可以在目录中添加或删除文件。 执行 执行一个目录并没有真正的意义,所以把它看作是一个遍历权限。 用户必须具有对bin目录的执行访问权才能执行ls或cd命令。 更改权限 要更改文件或目录权限,请使用chmod(更改模式)命令。chmod 有两种使用方式——符号模式和绝对模式。 在符号模式下使用 chmod 初学者修改文件或目录权限的最简单方法是使用符号模式。通过符号权限,您可以使用下表中的运算符添加、删除或指定所需的权限集。 Sr.No.Chmod 运算符和说明 1 + 将指定的权限添加到文件或目录。 2 – 从文件或目录中删除指定的权限。 3 = 设置指定的权限。 这是一个使用testfile的示例。在测试文件上运行ls -1显示文件的权限如下 – $ls -l testfile -rwxrwxr-- 1 amrood users 1024 Nov 2 00:10 testfile 然后上表中的每个示例chmod命令都在测试文件上运行,然后是ls –l,因此您可以看到权限更改 – $chmod o+wx testfile $ls -l testfile -rwxrwxrwx 1 amrood users 1024 Nov 2 00:10 testfile $chmod u-x testfile $ls -l testfile -rw-rwxrwx 1 amrood users 1024 Nov 2 00:10 testfile $chmod g = rx testfile $ls -l testfile -rw-r-xrwx 1 amrood users 1024 Nov 2 00:10 testfile 以下是如何在一行中组合这些命令 – $chmod o+wx,u-x,g = rx testfile $ls -l testfile -rw-r-xrwx 1 amrood users 1024 Nov 2 00:10 testfile 以绝对权限使用 chmod 使用 chmod 命令修改权限的第二种方法是使用一个数字来指定文件的每组权限。 每个权限都分配了一个值,如下表所示,每组权限的总数为该组提供了一个编号。 Number八进制权限表示参考 0 没有权限 — 1 执行权限 – X 2 写权限 -w- 3 执行和写权限:1(执行)+2(写)=3 -wx 4 读取权限 r– 5 读和执行权限:4(读)+1(执行)=5 接收 6 读写权限:4(读)+2(写)=6 rw- 7 所有权限:4(读)+2(写)+1(执行)=7 rwx 这是使用 testfile 的示例。在测试文件上运行ls -1显示文件的权限如下 – $ls -l testfile -rwxrwxr-- 1 amrood users 1024 Nov 2 00:10 testfile 然后上表中的每个示例chmod命令都在测试文件上运行,然后是ls –l,因此您可以看到权限更改 – $ chmod 755 testfile $ls -l testfile -rwxr-xr-x 1 amrood users 1024 Nov 2 00:10 testfile $chmod 743 testfile $ls -l testfile -rwxr---wx 1 amrood users 1024 Nov 2 00:10 testfile $chmod 043 testfile $ls -l testfile ----r---wx 1 amrood users 1024 Nov 2 00:10 testfile 更改所有者和组 在 Unix 上创建帐户时,它会为每个用户分配一个所有者 ID和一个组 ID。上面提到的所有权限也是根据所有者和组分配的。 有两个命令可用于更改所有者和文件组 – 改变所有权 该CHOWN命令更改文件的所有权。基本语法如下 – $ chown user filelist 用户的值可以是系统上的用户名,也可以是系统上用户的用户 ID (uid)。 以下示例将帮助您理解这个概念 – $ chown amrood testfile $ 将给定文件的所有者更改为用户amrood。 注意– 超级用户 root 可以不受限制地更改任何文件的所有权,但普通用户只能更改他们拥有的文件的所有权。 更改组所有权 该chgrp命令命令更改文件的组所有权。基本语法如下 – $ chgrp group filelist group 的值可以是系统上组的名称或系统上组的组 ID (GID)。 以下示例可帮助您理解这个概念 – $ chgrp special testfile $ 将给定文件的组更改为特殊组。 SUID 和 SGID 文件权限 通常当一个命令被执行时,它必须以特殊权限执行才能完成它的任务。 例如,当您使用passwd命令更改密码时,您的新密码将存储在文件/etc/shadow 中。 作为普通用户,出于安全原因,您没有对该文件的读或写访问权限,但是当您更改密码时,您需要对该文件具有写权限。这意味着passwd程序必须为您提供额外的权限,以便您可以写入文件/etc/shadow。 通过称为设置用户 ID (SUID)和设置组 ID (SGID)位的机制向程序授予其他权限。 当您执行启用了 SUID 位的程序时,您将继承该程序所有者的权限。未设置 SUID 位的程序在启动该程序的用户的权限下运行。 SGID 也是这种情况。通常,程序以您的组权限执行,但您的组将仅针对该程序更改为该程序的组所有者。 如果权限可用,则SUID 和 SGID 位将显示为字母“s”。SUID “s”位将位于所有者执行权限通常所在的权限位中。 例如,命令 – $ ls -l /usr/bin/passwd -r-sr-xr-x 1 root bin 19031 Feb 7 13:47 /usr/bin/passwd* $ 显示 SUID 位已设置并且命令归根所有。执行位置中的大写字母S而不是小写s表示未设置执行位。 如果在目录上启用了粘滞位,则仅当您是以下用户之一时才能删除文件 – 要为任何目录设置 SUID 和 SGID 位,请尝试以下命令 – $ chmod ug+s dirname $ ls -l drwsr-sr-x 2 root root 4096 Jun 19 06:45 dirname $ (编辑:威海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |