在 Linux 操作系统中,一切都以文件和目录的形式组织起来。通过设置文件和目录的权限,可以确保只允许授权用户访问特定数据。Linux 中的每个文件都归一个用户和组所有。用户是创建文件的人,组是用户(文件的所有者)所属的人。
了解文件权限
文件权限由三个可以应用于文件和目录的权限组成。在本节中,您将了解系统的工作原理以及如何修改这些权限。在此之前,让我们看一下如何读取当前权限。最好的方法是使用ls -l,它将显示当前目录中所有文件和目录的列表.
例如,您可以列出目录下的文件/home/sam,如下所示。
ls -l /home/sam
drwxrwxrwx 3 sam admin 80 2012-08-20 21:37 tmp
-rw-rw-r-- 1 sam admin 8187 2012-08-25 13:35 file1
-rwxr-x--- 1 sam admin 10348 2012-08-21 20:31 file2
结果显示在 7 列中,但我们只关注第一列、第三列和第四列。
- 第一列显示文件权限,
- 第三列显示文件的用户所有者,
- 第四列显示文件的组所有者。
为了轻松理解文件权限,我们需要了解此表单上的第一列
[d][rwx][rwx][rwx]
这里第一个字符表示文件的类型。例如,它给出
- d:目录
- -:常规文件
- l:符号链接
- p : 命名管道
- s : Unix 域套接字
- c : 字符设备文件
- b : 块设备文件
接下来是九个字符,用于指定为文件或目录设置的权限:
- 第一组三个是用户所有者权限,
- 接下来的三个是组所有者权限,
- 最后一组三个是指授予他人的权限。
这三个基本权限允许您读取、写入和执行文件,但它也存在特殊权限。当应用于文件或目录时,这些权限的效果会有所不同。有:
- 读取权限(r或4):意味着您将能够读取文件并列出目录的内容
- 写入权限(w 或2):意味着您将能够编辑文件并在目录中添加、删除或重命名文件。
- 执行权限(x 或1):表示您将能够执行程序或 shell 脚本并移动到目录(cd 到目录)。
- 设置用户 ID (SUID) 权限(u+s 或 4):只能设置给一个用户。这意味着任何用户都可以执行具有文件所有者权限的程序/脚本。
- 设置组 ID (GUID) 权限(g+s 或 2): 只能设置为组。这 意味着任何用户都可以执行具有组所有者权限的程序/脚本,并且在目录中创建的任何文件都将获得相同的组所有者。
- 粘位权限(t 或 1): 只能应用于目录,防止用户删除其他用户的文件。
有关 chmod concept 命令的模式详细信息,您可以阅读这篇面向新手和高级 Linux 用户的文章。
1.符号chmod权限示例
linux 命令 chmod可用于更改文件或目录的权限。当您要设置权限时,可以使用符号模式 (r, w, x, s, t)。要将其应用于具有其内容(递归)的目录,请使用-Rchmod 命令的选项。
a。chmod +x
要在脚本或程序上添加执行权限以运行它,我们可以使用chmod +x命令将权限设置为用户、组和其他。操作员向+现有权限添加权限。例如 :
# ./hello
bash: ./hello: Permission denied
现在让我们申请权限
# chmod +x hello
# ./hello
Hello... How are you ?
要访问(移动)目录,我们使用执行权限
$ cd test/
-bash: cd: test/: Permission denied
$ chmod -R +x test
$ cd test/
[kylin@centos-01 test]$
b。chmod u=rx
您可以使用=operator 后跟权限更改用户所有者的权限。此运算符用最新的权限替换最后的权限。例如
$ ls -ld test/
drwxrwxr-x 2 kylin kylin 4096 May 15 20:18 test/
可以看到用户owner拥有w权限。现在让我们在下面应用权限
$ chmod -R u=rx test
$ ls -ld test/
dr-xrwxr-x 2 kylin kylin 4096 May 15 20:18 test/
C。chmod g+w,ox
-可以在单个命令上向实体添加权限并删除(操作员)对另一个实体的权限。例如,我们将为组实体添加写入权限,并仅删除其他实体的执行权限
# chmod g+w,o-x hello
# ls -l hello
-rwxrwxr-- 1 root root 66 May 15 20:12 hello
2. 数字或八进制 chmod 权限示例
当您想要设置权限时,您还可以使用数字模式 (4、2、1) 。但是在这种模式下,您使用三位数字,您需要计算每个实体的值才能设置好的权限。
a。chmod 755
如果要对目录设置权限,使用户应该能够读取、写入和执行该目录,而组和其他人应该只能读取和执行它,那么权限应该是drwxr-xr-x. 我们现在可以找到要使用的八进制值
对于用户部分 -> rwx = 4+2+1 = 7
对于组 -> rx = 4+0+1 = 5
对于其他 -> rx = 4+0+1 = 5
在某些情况下,这是您创建文件夹时的默认权限。
# chmod -R 755 folder1/
# ls -ld folder1/
drwxr-xr-x 2 root root 4096 May 16 01:54 folder1/
可以将 chmod 命令与另一个命令结合使用。例如,我们将找到所有777权限目录并将权限设置为755.
# find /home -type d -perm 777 -print -exec chmod -R 755 {} \;
/home/kylin/script-test/folder1
/home/kylin/course
/home/txc/toto
b。chmod 754
可以使其他程序可读以限制危险,将读取和执行权限授予组并将所有权限授予用户。
# chmod 754 hello
假设您为这些文件提供了 .sh 扩展名,则可以为当前文件夹中的所有脚本文件设置权限
# chmod 754 *.sh
C。chmod 640
如果要设置文件的权限,使用户应该能够读取和写入文件,组应该能够读取文件而其他人不应该对文件有任何访问权限,权限应该是-rw-r-----.
# chmod 640 bootstrap
我们将找到所有777权限文件并使用 chmod 命令将权限设置为640.
# find /home -type f -perm 0777 -print -exec chmod 640 {} \;
/home/kylin/script
/home/kylin/script-test/recovery
/home/txc/compta/finances
3.特殊位chmod权限示例
我们可以使用SUID、GUID 和粘性位通过 chmod 命令对 Linux 文件应用特殊权限。我们将在下面看到一些示例
a。chmod u+s 和 chmod 4655
您可以允许任何用户像拥有 SUID 权限的用户所有者一样运行程序。您可以使用如下符号模式
# chmod u+s hello
# ls -l hello
-rwsr-xr-x 1 root root 66 May 15 20:16 hello
如果你想用数字模式设置权限,你需要四位数字,你需要以 SUID 值(4)开头,然后是三个一组来设置文件的权限,如下所示
# chmod 4655 hello
b。chmod +t 和 chmod 1777
我们现在将阻止用户使用粘性位从其他用户删除文件。它只设置在文件夹上,而不是文件上。假设该文件夹已经拥有应用于任何实体的所有权限。您可以按如下方式使用它
$ chmod +t test1
要使用数字方法,我们需要从数字粘性位值(1)开始, 然后是三个的集合来设置
$ chmod 1777 -R test1
让我们检查一下结果
$ ls -ld test1
drwxrwxrwt 2 kylin kylin 4096 May 16 18:54 test1
现在将以 txc 用户身份登录,我们将尝试删除文件
# su txc
[txc@centos-01 test1]$ ls -l proj
-rwxrwxrwx 1 kylin kylin 0 May 16 19:00 proj
$ rm file
rm: cannot remove ‘file’: Operation not permitted
您可以看到,尽管有所有 rwxrwxrwx 权限,txc用户还是无法删除 kylin 的文件
C。chmod g+s 和 chmod 2664
您可以设置 SGID 权限以设置在该目录中创建的文件和子目录的默认组所有权。例如,如果您有一个共享组环境,这不是很有用,因为没有其他人能够修改您正在创建的文件,即使他们是同一组的成员。
$ chmod g+s rh_department
$ ls -ld rh_department/
drwxrwsr-x 2 kylin kylin 4096 May 16 20:19 rh_department/
SGID权限的数值模式设置如下
$ chmod 2755 rh_departement
结论
使用 chmod 时,您可以设置用户、组和其他人的权限。您可以在两种模式下使用此命令:符号模式(相对模式)和数字模式(绝对模式)。在绝对模式下,三个或四个数字(取决于特殊位与否)用于设置基本权限并记住您应该计算您需要的值。
本文详细介绍了Linux操作系统中文件和目录的权限管理,包括读取、写入和执行权限,以及特殊权限如SUID、GUID和粘性位。通过chmod命令,可以使用符号或数字模式来修改文件和目录的权限。文章通过实例展示了如何使用chmod改变文件的用户、组和其他用户的权限,并解释了各种权限设置的影响。
3402

被折叠的 条评论
为什么被折叠?



