Linux 文件权限指南:chmod 755、644、drwxr-xr-x 解析

理解Linux权限看似几乎不可能完成------什么是 、 或 ,到底是什么?------但实际上比你想象的要简单。让我们来看看。755644u=rwx,g=rw,o=rchmod drwxr-xr-x

Linux 文件权限

Linux 是一个多用户作系统,可以被多个用户同时访问。这可能会让你误以为用户可以作另一个用户的文件和目录,但所有 Linux作系统都会在两个授权层级------拥有权和权限------保护文件系统,以防止未经授权的访问,从而有效且轻松地阻止文件系统被访问。

注意:掌握这些权限的最好方法是拥有自己的Linux VPS服务器,边做边学习。最棒的是?我们提供市场上最优质、低成本、可靠的VPS套餐!

如何在 Linux 中查看文件权限

要在 Linux 中查看文件权限,请使用以下命令。该命令显示权限字符串、所有者、组及其他文件详情:ls -l

$ ls -l

drwxr-xr-x 3 dd users 4096 Jun 10 08:01 Pictures

-rw-r--r-- 1 dd users 2048 Jun 15 14:30 readme.txt

开头的十个字符字符串显示权限。你也可以查看特定文件的文件权限:

$ ls -l filename

如需更详细地展示符号和数字格式的权限,请使用以下命令:stat

$ stat filename

我该如何查找文件的权限?

让我们尝试查找文件和目录的权限。要查找已经分配给文件或目录的权限,使用带有 switch 的命令。ls-l

$ ls -l

drwxr-xr-x 3 dd users 4096 Jun 10 08:01 Pictures

...

...

格式 中的前十个字符代表三类用户的权限。让我们试着理解这些字母的含义。第一个字符 ,表示该文件是一个目录。该位置可以是空白(-)或以下任一字符:drwxrwxrwxd

c: Character device

b: Block device

s: socket

p: pipe

l: symbolic link etc.

接下来的三个字符(drwx r-xr-x)代表文件所有者被分配的权限。所有者可以读取、写入并执行该文件夹。ddPictures

接下来的三个字符(drwxr-xr-x),即 ,代表组权限。组内用户可以根据组权限访问文件,该权限规定他们可以在目录中读取和执行,但不能写入。连字符表示未获准许可。r-xusers

最后三个字符(drwxr-xr-x)代表非组主或非组成员的组权限,权限仅为读取和执行。otherusers

第11个字符是一个数字,代表文件的硬链接数量,与文件权限无关。该数字旁边的两列(drwxr-xr-x 3 dd 用户)代表文件的所有者和组。

要查找特定文件或目录的权限,请在命令中指定文件名称,如下所示。ls

$ ls -l filename

文件、目录和进程的所有者

在我们尝试探讨文件和目录的所有者之前,先来了解一下Linux中的用户类型。在 Linux 中,用户分为两种类型:系统用户和普通用户。系统用户由作系统创建,用于管理后台进程。

我们通常创建普通用户,通过图形界面或终端进行交互式创建和运行进程。除了这两种用户外,还有一位名为 的超级用户,他可以访问整个系统,管理和覆盖系统内的任何设置。root

在 Linux 中,文件、目录和进程的所有者将被分配给这三种用户类型:普通用户、系统用户和根用户。在我们尝试探讨这三种用户可以分配哪些权限之前,先了解一下Linux中可用的权限类型。

Linux 有哪些权限类型?

Linux 权限:755,drwxr-xr-x,644,chmod

在 Linux 中,文件、目录和进程被分配了两级权限。第一个是许可组,也就是所有权。第二种是权限类型,可以是 、 或 。readwriteexecute

权限组

对于Linux中的每个文件和目录,都有我们指定权限的用户集合。它们是:

所有者

团体

其他

Linux 目录权限树

所有者:创建文件、文件夹或进程的用户是 。owners

Groups:指与所有者同一组内的任何人。Groups

其他:任何既不是文件/目录所有者,也不属于同一组的用户都会被分配到某个组。others

权限类型

上述三个用户组各自能执行哪些作定义为。有三种基本代码可以分配给三组用户,分别是读取、写入和执行。permission typespermission types(r)(w)(x)

文件和目录的读写和执行是什么意思?

关于文件:

Read 是指查看文件内容的能力。

写入是指编辑或删除文件的能力。

执行是指将文件作为可执行程序运行的能力。

目录方面:

Read 是读取目录内容的能力。

写入是指能够在目录中写入,比如在目录中创建文件和子目录。

执行是指能够进入目录并使用命令查看目录内文件的元数据。cdls

rwx 许可状态

数值符号中的权限

文件和文件夹的权限使用两种表示法。我们已经提出的符号符号(r,w,x)被称为符号符号。另一种是数字符号。在此符号中,数字 (0,1,2,4) 表示许可,具体如下:

0:无许可

1:执行(x)

2:写(w)

4:阅读(r)

那么,如何用数字表示计算用户和组的权限呢?只需将权限值加起来,分别得到用户权限、组权限和其他权限的值。

例如:

read(4)、write(2) 和 execute(1) 权限转换为 (4+2+1)

read(4) 和 write(2) 权限转换为 (4+2) write

(2) 和 execute(1) 权限转换为 (2+1) 等等。rwx7rw-6-wx3

因此,许可与 相同,与 相同,依此类推。rwxrwxrwx777rwxr-xr-x755

理解755权限(chmod 755)

CHMOD 755 视觉表示

chmod 755 命令将权限设置为 rwxr-xr-x,这是 Linux 中最常见的权限模式之一。理解 chmod 755 的含义至关重要:所有者拥有完全控制权(读、写、执行),而组成员和其他人可以读取和执行,但不能修改文件。

当你在文件或目录上运行时,你是在同时明确设置这三个权限级别。这使得755权限非常适合目录和可执行脚本,这些脚本应对所有用户开放,但仅限所有者修改。chmod 755

理解644权限(chmod 644)

Linux中的644权限

chmod 644 命令是常规文件的标准权限。设置644权限后,所有者可以读写文件,而组成员和其他人只能读取。这是大多数文本文件、配置文件和网页内容的默认权限,前提是你希望所有人都能查看,但只有所有者可以修改。

要对文件应用644权限:

$ chmod 644 config.conf

这通常用于网页服务器文件,如HTML页面、PHP脚本(非可执行文件)以及配置文件如或。.bashrcnginx.conf

理解711权限(chmod 711)

chmod 711 命令设置权限,所有者拥有完全控制权(rwx),而组成员和其他人只能执行(遍历)文件或目录。当你应用711权限时,其他人无法读取或写入,这对那些想隐藏文件列表但仍允许访问特定文件的目录非常有用。

这种权限模式对于多用户环境中的用户主目录尤为重要。例如:

$ chmod 711 /home/username

有了主目录的711权限,其他用户可以访问文件,比如知道路径,但他们无法运行去查看主目录中存在哪些文件。/home/username/public_html/index.htmlls

理解700权限(chmod 700)

chmod 700命令通过授予所有者完全权限(rwx)而完全阻止组成员及其他人访问,从而实现最大隐私保护。当你设置700个权限时,只有你自己能读、写或执行文件或目录------其他人完全被锁在外面。

这是像你的SSH配置这样敏感目录所需的权限:

$ chmod 700 ~/.ssh

使用chmod 700对于安全敏感的场所至关重要。如果你的目录设置更宽松,SSH实际上会拒绝工作,因为这可能会让未授权用户访问你的私钥。.ssh

理解600权限(chmod 600)

chmod 600 命令仅限制所有对所有者的访问,允许读写但不允许执行权限。当你对文件应用600权限时,组成员和其他人无法查看、修改或执行该文件。这是包含敏感数据的私密文件的标准安全设置。

chmod 600 最关键的用途是用于 SSH 私钥:

$ chmod 600 ~/.ssh/id_rsa

$ chmod 600 ~/.ssh/id_ed25519

SSH要求私钥有600个权限------如果权限更宽松,SSH会显示"未保护私钥文件"等错误,并拒绝使用该密钥。这一安全措施防止系统中的其他用户读取你的认证凭证。

600权限的其他常见用途包括密码文件、API令牌、数据库凭证文件以及包含秘密的任何配置。

解码drwxr-xr-x 权限

drwxr-xr-x Linux 权限可视化

权限字符串是你在 Linux 中最常见的模式之一。让我们来解析一下drwxr-xr-x的含义:drwxr-xr-x

d = 这是一个目录(不是文件)

rwx = 所有者拥有读取、写入和执行权限

r-x = 组拥有读取和执行权限(无写)

r-x = 其他拥有读取和执行权限(无写入)

当你在终端输出中看到drwxr-xr-x时,表示一个拥有755权限的目录。这是大多数 Linux 系统目录的标准权限。要在目录上设置drwxr-xr-x权限:

$ chmod 755 my-directory

$ ls -ld my-directory

drwxr-xr-x 2 username group 4096 Dec 20 10:00 my-directory

drwxr-xr-x 模式允许所有者创建、删除和重命名目录内的文件,而其他用户可以浏览目录内容并访问文件,但无法修改目录结构本身。

使用 chmod 更改 Linux 权限

使用该命令,可以添加或移除文件或目录的权限。字母(owner/user)、(group)和(other)用于添加或移除三种用户类型的权限,并附带三个标志。chmodugo

负号(),表示"移除这些权限"-

加号(),表示"添加这些权限"+

等号(),表示"将权限精确更改为这些"。=

使用 chmod 添加权限

要添加权限,请使用命令和加号(),即"添加这些权限"。chmod+

所以如果你想为脚本文件的三种用户类型添加执行权限,请使用以下命令。chmod

$ chmod +x hello.sh

OR

$ chmod a+x hello.sh

// 'a' means all

要为文件所有者添加执行权限,请使用以下命令。chmod

$ chmod u+x hello.sh

同样,你也可以用来添加读取权限和写权限。+r+w

你也可以为用户、组和其他人分配权限,或者选择性地将它们合并。只需指定用户类别(u、g或o)以及你想分配的权限(r、w或x)。例如,以下命令会为文件所有者添加执行和写入权限。chmod

$ chmod u+xw hello.sh

要为所有者和组添加写权限,请使用以下命令。

$ chmod ug+w hello.sh

你还可以一次性为多类用户添加权限。以下示例将为所有者设置读、写和执行权限,以及组和其他人的读写权限。

$ chmod u=rwx,g=rw,o=rw example.txt

使用 chmod 移除权限

在某些情况下,你可能需要移除权限而非添加权限------无论是保护文件、共享后限制访问,还是修复过于宽松的设置。只需更改为 即可移除这三类用户中的任一的权限。+-

基本权限移除

Remove write permission from group

$ chmod g-w readme.txt

Remove execute permission from both owner and group

$ chmod ug-x script.sh

Remove all permissions from group and others recursively

$ chmod -R go-rwx test_directory

递归示例()移除了组和其他用户的读、写、执行权限,避免包含其中所有文件和子目录。-Rtest_directory

一次移除多个权限

你可以在一个命令中移除多个权限:

Remove write and execute from others

$ chmod o-wx script.sh

Remove all permissions from others

$ chmod o-rwx confidential.txt

Remove read from group, write from others

$ chmod g-r,o-w shared-file.txt

常见的安全情景

非所有者文件只读:对于其他用户应引用但不需修改的配置文件非常有用:

Remove write permission from group and others

$ chmod go-w config.conf

Result: -rw-r--r-- (644 permissions)

保护上传文件:当上传文件设置过于宽松时:

Remove write from group/others, remove execute from all

$ chmod go-w,a-x /var/www/uploads/file.jpg

Result: Files become 644 (rw-r--r--)

锁定私人目录:创建备份或归档后:

Remove all access for group and others

$ chmod -R go-rwx /backups/project-archive/

Result: Only owner can access

重要警告

目录执行权限:从目录中移除执行权限会阻止任何人进入该目录,即使他们有读写权限:

$ chmod a-x my-directory/

$ cd my-directory/

bash: cd: my-directory/: Permission denied

除非你特别想阻止访问,否则一定要保留目录的执行权限。

递归作需要谨慎:该标志影响目录内的所有内容。使用递归移除前请务必核实你的命令:-R

CAREFUL: This locks out everyone from entire web directory

$ chmod -R go-rwx /var/www/html/ # Can break your website!

Better: Target specific subdirectories

$ chmod -R go-rwx /var/www/html/private/

组合添加和删除

你可以在同一个命令中添加和移除权限:

Add execute for owner, remove for group and others

$ chmod u+x,go-x script.sh

Add read for owner, remove write for group

$ chmod u+r,g-w document.txt

快速验证

删除后务必检查权限:

$ chmod go-w important.txt

$ ls -l important.txt

-rw-r--r-- 1 john users 2048 Dec 20 10:00 important.txt

最佳实践:主动使用最小权限原则移除权限------比修复因过于宽松文件引发的安全漏洞更容易。

使用数字符号更改 Linux 权限

你也可以用数字符号来设置权限,而不是符号符号。以这种方式设置的权限最多使用四位数字。你可能会问为什么是4位数,因为你只想为三类用户设置权限。首位数字表示设置用户ID(4)或组组ID(2)或粘性位(1)的值。其余三位数字用于为三类用户设置权限。

也可以用三位数字设置权限,只保留用户ID、组ID和棒位的权限。所以许可0755和755是相同的。

$ chmod 755 hello.sh

// Sets all permission to owners and read/execute permission to group and others

$ chmod 0755 hello.sh

// Same as 755

理解这些数字命令至关重要:chmod 755 允许拥有者完全访问并读取/执行给他人,chmod 644 使文件可被所有人读取但仅由所有者写入,chmod 700 创建私有目录,chmod 600 保护敏感文件。每个 chmod 命令都直接翻译成特定的 rwx 模式。

使用drwxr-xr-xchmod

设置drwxr-xr-x权限是管理目录时常见的任务。drwxr-xr-x 格式频繁出现,因为它在无障碍性和安全性之间取得了平衡。每个人都可以浏览目录并读取文件,但只有所有者可以进行更改。

drwxr-XR-x 许可

要设置目录权限,请使用命令 。drwxr-xr-xchmod 755 directory_name

什么?chmod 755

chmod 755意味着赋予所有者读、写和执行权限,同时允许该组及其他人对文件拥有读取和执行权限。

设置用户ID

如果设置了一个带有设置用户ID权限的文件,那么该文件的执行方式就像由文件所有者执行,而不是执行该文件的用户。例如,通常拥有并拥有权限4755,其中数字4表示,即使文件由普通用户执行,文件仍将以所有者(root)权限运行,因为文件属于。以下示例将展示如何设置文件的比特。/bin/mountrootrootsuid

$ chmod u+s hello.sh

OR

$ chmod 4664 hello.sh

// Sets the suid bit of the file hello.sh

$ ls -l hello.sh

-rwSrw-r-- 1 peter peter 0 Jun 13 10:16 hello.sh

// The fourth character in the permission shows the suid bit is set.

// The capital 'S' signifies that executable bit is not set otherwise executable bit will be 's'

集合组ID

SGID可以设置为文件和目录,符号表示为 ,数字表示 。当目录设置了该位时,在目录内创建的任何文件或目录都会继承该目录的组ID。要设置目录的位,请使用以下命令。g2sgidsgidchmod

$ chmod g+s test_directory

OR

$ chmod 2755 test_directory

用命令查找该目录的位是否被设置。sgidls

$ ls -ld test_directory/

drwxrwsr-x 3 peter peter 4096 Jun 12 10:30 test_directory/

组权限部分的第七个字符()表示该位为组设置。's'sgid

粘性

下一个访问模式位称为粘性位,符号表示为 ,数字表示 。这个功能只适用于目录。在目录上设置粘性位后,任何人都可以在目录内创建文件或目录。其他用户拥有的文件只能删除他自己的文件和目录。t1

要为其他类型的用户添加粘性位,请在命令中使用+t选项。chmod

$ chmod o+t some_directory

要测试该目录的粘性位是否被设置,可以使用ls命令:

$ ls -ld some_directory

drwxrwxr-t 2 peter peter 4096 Jun 12 11:47 some_directory

其他用户会在比特部分看到一个。小写表示可执行位也存在,否则你会看到大写txtT

要去除粘性钻头,请使用命令中的符号:-chmod

$ chmod o-t some_directory

用于变更所有权chown

有时可能需要更改文件和目录的所有权。如下所述的命令会更改文件和目录的所有者及组。chown

$ chown dd hello.sh

// changes the owner of the file only.

要更改组所有权,请在拥有者名称后面指定一个冒号或点,组名后再加组名,中间不要有空格,文件的组所有权也会被更改。

$ chown dd:users hello.sh

OR

$ chown dd.users hello.sh

如果在冒号或点后面没有提及组名,然后跟随OWNER,那么用户将被指定为文件所有者,文件组也将被更改为owner登录组。

$ chown dd. hello.sh

OR

$ chown dd: hello.sh

如果在冒号或点之前省略了所有者名称,而在之后提到了组名,那么组所有权就会变更。在这种情况下,执行与相同的功能。chownchgrp

$ chown .users hello.sh

OR

$ chown :users hello.sh

要递归更改目录的所有者和组,请使用 -R 开关:

$ chown -R dd:admin some_directory

现在你对Linux中的权限及其通过和的使用有了基本了解,就可以实现合适的权限策略来保护你的系统。chmodchown

你会如何用八进制表示Linux权限?rwxr-xr--

为了用八进制表示 Linux 权限,你可以将每个权限集映射到对应的八进制值。 到7,到5,再到4。所以,八进制记号为 。rwxr-xr--rwxr-xr--rwxr-xr--754

相关推荐
朝阳5812 小时前
Ubuntu 22.04 安装 Fcitx5 中文输入法完整指南
linux·运维·ubuntu
xingzhemengyou12 小时前
Linux taskset指令设置或查看进程的 CPU 亲和性
linux·服务器
开开心心就好2 小时前
图片格式转换工具,右键菜单一键转换简化
linux·运维·服务器·python·django·pdf·1024程序员节
永远在Debug的小殿下2 小时前
wsl安装Ubuntu and ROS2
linux·运维·ubuntu
DO_Community2 小时前
DigitalOcean容器注册表推出多注册表支持功能
服务器·数据库·docker·kubernetes
其美杰布-富贵-李2 小时前
深度学习中的 tmux
服务器·人工智能·深度学习·tmux
chenmingfa1102 小时前
yum安装软件报错:Could not retrieve mirrorlist http://mirrorlist.centos.org/?relea
linux·centos
dnpao2 小时前
linux onlyoffice服务向docker容器中添加中文字体
linux·运维·docker
Linux技术芯3 小时前
浅谈nvme驱动中的nvme_alloc_ns函数的实现原理和底层逻辑
linux