本文最先发布在: https://cloud.tencent.com/developer/article/1632347
假如你正在尝试解决你的网络服务器上的权限问题,并且发现网上的信息提示,说,你需要对网页目录递归执行chmod 777
命令。在做这件事情之前,确保你能够理解chmod -R 777
在做什么,并且为什么你永远不要将权限设置为 777
。
本文讲解了基本的 Linux 权限模型,并且这些权限的数字是什么意思?
在 Linux 中,对文件的访问权限由操作系统使用权限,属性和归属来控制。理解 Linux 文件系统权限模型允许你严格限制文件和文件夹的访问权限,仅仅允许授权用户和 进程可以访问,确保你的系统更安全。
每个文件都被一个用户和用户组所拥有,并且给三类不同的用户设置了权限:
有三种不同的文件权限,可以应用给每一个用户类别,并且允许你指定哪一个用户被允许读取文件,写文件和执行文件。同样的权限属性,应用到文件和文件夹上有不同的意思:
ls
命令来列出文件夹下的文件。cd
命令切换进去使用ls
命令可以查看文件权限。示例如下:
ls -l filename.txt
-rw-r--r-- 12 linuxize users 12.0K Apr 8 20:51 filename.txt
|[-][-][-]- [------] [---]
| | | | | | |
| | | | | | +-----------> 7. Group
| | | | | +-------------------> 6. Owner
| | | | +--------------------------> 5. Alternate Access Method
| | | +----------------------------> 4. Others Permissions
| | +-------------------------------> 3. Group Permissions
| +----------------------------------> 2. Owner Permissions
+------------------------------------> 1. File Type
第一个字符显示文件类型。它可以是正常的文件(-
),文件夹(d
),一个链接(l
),或者其他任何类型的文件。
后面九个字符表示文件权限,每三个字符一组。第一组显示用户所有者的权限,第二个显示文件所有者归属的用户组的权限,最后一组显示每一个其他人的权限。
文件权限可以使用数字或者字符格式。在本文中,我们集中讲讲数字格式。
权限数字由三个或者四个数字组成,取值从0到7。
当设置三组数字时,第一组数字表示文件所有者的权限,第二组是文件归属用户组的,最后一组是其他人的。
读,写,执行权限由下面的数字取值:
指定用户类别的这个数字权限可以是权限的取值之和。
每个权限的数字可以是4,2,1之和,以及 0:
例如,如果权限数字被设置为750
,它意味着文件所有者拥有读写和执行权限,文件归属用户组拥有读和执行权限,其他用户没有权限:
当4个数字被使用时,意思如下:
下面一组三个数字也是同样的意义。如果第一个数字是0,可以忽略,权限取后面的3个数字。数字模式0755
和755
是一样的。
想要以数字形式,查看文件权限,使用stat
命令:
stat -c "%a" filename
644
设置 777 权限意味着文件或者文件夹可以被所有用户读写,执行,这可能导致巨大的安全风险。
例如,如果你将/var/www
文件夹下的文件和子目录递归设置为777
,任何用户都将可以创建,删除或者修改文件夹中的文件。
如果你在你的文件服务器中遇到权限问题,千万不要递归设置它们的权限文件777
,修改它们的归属为运行应用的用户,并且设置文件的权限为644
,文件夹的权限为755
。
文件归属可以使用chown
命令来修改,文件夹权限可以使用chmod
来修改。
比如说你在你的服务器上以用户 “linuxize”运行一个 PHP 应用。想要设置正确的权限,运行:
chown -R linuxize: /var/www
find /var/www -type d -exec chmod 755 {} \;
find /var/www -type f -exec chmod 644 {} \;
仅仅 root,文件所有者,或者有 sudo 权限的用户可以修改文件权限。使用chmod
时,需要格外小心,特别是递归修改权限的时候。
如果你正在管理一个 Linux 系统,了解 Linux 权限如何运作是非常重要的。
你永远不要对文件和文件夹设置777(rwxrwxrwx
)权限。777意味着所有人都可以对那些文件做任何事情。
如果你有任何疑问,请通过以下方式联系我们:
微信: sn0wdr1am86
微信群: 加上面的微信,备注微信群
QQ: 3217680847
QQ 群: 82695646