我只是通过终端查看某些文件夹的权限,但我不太清楚它们的含义。
iMac:~ me$ ls -alt
total 40
drwx------ 4 me staff 136 10 Oct 06:17 .Trash
drwx------+ 4 me staff 136 10 Oct 06:16 Desktop
drwxr-xr-x 6 me staff 204 10 Oct 06:16 .bash_sessions
-rw-r--r--@ 1 me staff 8196 8 Oct 22:37 .DS_Store
drwx------+ 9 me staff 306 8 Oct 22:37 Downloads
drwx------@ 12 me staff 408 8 Oct 20:50 Google Drive
drwx------@ 13 me staff 442 8 Oct 20:49 Dropbox
drwx------ 9 me staff 306 8 Oct 20:49 .dropbox
drwxr-xr-x+ 19 me staff 646 8 Oct 20:48 .
-rw-r--r-- 1 me staff 100 4 Oct 12:03 .bash_history
drwx------@ 49 me staff 1666 4 Oct 10:17 Library
drwx------ 4 me staff 136 4 Oct 09:52 Applications
-r-------- 1 me staff 7 4 Oct 09:45 .CFUserTextEncoding
drwx------+ 3 me staff 102 4 Oct 09:42 Documents
drwx------+ 3 me staff 102 4 Oct 09:42 Movies
drwx------+ 3 me staff 102 4 Oct 09:42 Music
drwx------+ 3 me staff 102 4 Oct 09:42 Pictures
drwxr-xr-x+ 5 me staff 170 4 Oct 09:42 Public
drwxr-xr-x 7 root admin 238 4 Oct 09:42 ..
在“.”中找到的“drwxr-xr-x+”和在“Google Drive”中找到的“drwx------@”有什么区别?
答案1
Unix 权限实际上比您最初想象的要容易理解得多,并且一旦您不再试图将整行视为一个东西,而是将其分组思考,始终按照模式进行思考,1 3 3 3
就会变得更容易掌握。
事实上,Mac 和其他一些 unix 衍生产品使用了一种1 3 3 3 1
结构 - 更多信息请见本文末尾。
这个解释尽可能简单,同时包括所有相关概念......
摘自https://www.cs.swarthmore.edu/help/chmod.html
unix文件权限
文件权限允许您授予或拒绝对文件和目录的访问权限。权限有三种类型:
- r = 读取
- w = 写入
- x = 执行
这些权限对于文件和目录有不同的含义。
对于文件:
- 读取 - 您可以打开并读取该文件,也可以复制它。
- 写入-你可以修改文件
- 执行 - 如果文件是可执行文件(如程序或命令),则可以执行(运行)该文件
对于目录:
- 读取-您可以 ls 目录并查看内容。
- 写入-您可以在该目录中创建和删除文件。
- 执行-您可以通过 cd 进入该目录。
使用 ls -l 命令查看文件和目录的文件权限。以下是示例:
$ ls -l
total 188
drwx------ jk users 4096 2008-10-24 11:30 cs21/
drwx------ jk users 4096 2007-10-01 12:24 mail/
drwxr-xr-x jk users 4096 2008-06-05 10:33 public/
-rw------- jk users 83623 2008-09-10 08:29 turing.pdf
-rw-r--r-- jk users 9134 2008-01-24 16:26 unix-by-example
上面第一列是文件权限(drwx------或-rw-r--r--),第二列是文件和目录的所有者(jk),第三列是组(用户)。
对于文件权限,第一个字母是“d”或“-”,表示它是目录或文件。接下来的三个字符(例如 rwx)是文件所有者的权限。然后是组权限(例如,用户组中的所有人),最后是其他所有人的权限。以下是一些示例:
* drwx------ : directory only accessible by owner
* drwxr-xr-x : directory anyone can access
* -rwxr-xr-x : file anyone can read and execute
* -rw-r----- : file only people in the group can read
要查看您所在的组,请运行 groups 命令。
更改文件/目录的权限
使用 chmod(CHange MODE)更改文件权限。chmod 命令可以使用数字:
- 4 - 阅读
- 2 - 写入
- 1-执行
这些不是 1,2,3 的原因是因为它们需要根据您使用的组合加起来得出一个唯一的数字。
因此,要授予读写权限:
读 + 写 = 4 + 2 = 6
或执行并读取权限:
执行 + 读取 = 1 + 4 = 5
或者直接执行权限:
执行 = 1
或者所有权限:
读取 + 写入 + 执行 = 4 + 2 + 1 = 7
chmod 命令采用三个数字来表示三种权限:
所有者、组、所有用户(按此顺序)
基本的 chmod 命令如下:
$ chmod ### directory/filename
因此,如果您想授予所有人读取权限 (-rw-r--r--):
$ chmod 644 filename
要使文件仅可由您读取、写入和执行,请执行以下操作:
$ chmod 700 filename
要使文件对您和您的组可读且可执行,但只有其他所有人都可读:
$ chmod 554 filename
chmod 也可以使用字母:u 代表用户(所有者),g 代表组,o 代表其他,a 代表所有(u、g 和 o)。因此,您可以执行 chmod g+r file 来为组添加读取权限。有关 chmod 的更多信息,请参阅手册页(man chmod)。
关于最后一个角色的注释
在 Mac OS X(以及其他一些 Unix 衍生产品)上,最后一组权限后面还有一个附加字符。它通常是一个空格,但也可能是一个 + 或 @
+ 表示文件或目录具有额外的安全信息,例如 ACL。
@ 表示文件或目录具有扩展属性。
您可以在执行 ls 时包含 -e 选项(使用 -l 选项)来查看文件或目录的 ACL,并通过包含 -@ (也使用 -l 选项)来查看扩展属性。
关于 ACL 和扩展属性的讨论超出了本答案的范围,但可以找到有关扩展属性的更多信息这里和 ACL这里(当然,谷歌会提供比你想知道的更多的信息。)