最近工作时需要用到Linux文件系统权限方面的知识,特意做了一些了解。
Linux文件系统权限基本知识
当我们使用ls -l 命令 或ll 命令可以以列表的形式查看文件
[appuser@localhost app]$ ls -l
total 0
drwxr-xr-x 6 appuser rd 190 Aug 27 09:44 download
drwxr-xr-x 3 appuser rd 69 Aug 12 08:45 handle
drwxr-xr-x 7 appuser rd 267 May 26 16:30 jdk1.8.0_241
drwxr-xr-x 10 appuser rd 152 Aug 27 09:50 nginx
我们可以看到第一列 drwxr-xr-x共十个字符,分别代表如下含义
位置 | 常见取值 | 含义 |
---|---|---|
第1位 | d\l\-... | d代表是一个目录 l代表是一个链接 -代表是一个文件等等。其他含义可自行百度 |
第2\5\8位 | r\- | r代表读权限 -代表没有对应权限 第2位的r代表文件所属用户拥有的权限 第5位代码文件所属用户组的用户拥有的权限 第8位代表其他用户拥有的权限 |
第3\6\9位 | w\- | w代表写权限 -代表没有对应权限 第3位的r代表文件所属用户拥有的权限 第6位代码文件所属用户组的用户拥有的权限 第9位代表其他用户拥有的权限 |
第4\7\10位 | x\- | x代表执行权限 第4位的r代表文件所属用户拥有的权限 第7位代码文件所属用户组的用户拥有的权限 第10位代表其他用户拥有的权限 |
常见的文件权限管理方案
通常我们会用来进行文件权限管理:如下场景
用户A、B、C都需要向某系统D发送文件。因文件过大且低频,四方决定使用ftp的方式发送。D系统希望在服务器上创建了分别为三个用户创建了用户ua(用户组ga)、ub(用户组gb)、uc(用户组gc)及文件夹a、b、c,希望各个用户可以访问各自的目录,但不可以访问其他用户的目录,以避免信息泄露。而系统D在处理的文件的时候可以采用统一的用户进行读、写、移动、删除操作。
因此将目录a、b、c分别修改为ua、ub、uc所有,目录权限设为770,所属用户组修改为D系统所用的用户组gd,gd不含用户a、b、c。
这样由于用户ua、ub、uc分别有各自目录的rwx权限,因此可以cd目录并创建创建文件,且用户无法访问不属于自己的目录。
用户ud属于用户组gd,拥有三个目录的rwx权限,可以cd目录并移动、创建、删除文件。