解释权限符号,来自“ls -alt”

Che*_*075 2 terminal

我只是通过终端查看我的一些文件夹的权限,我不太明白它们是什么意思。

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 ..
Run Code Online (Sandbox Code Playgroud)

“.”中的“drwxr-xr-x+”有什么区别?和在“Google Drive”中找到的“drwx------@”?

Tet*_*jin 7

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
Run Code Online (Sandbox Code Playgroud)

上面第一列是文件权限(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
Run Code Online (Sandbox Code Playgroud)

要查看您所在的组,请运行 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
Run Code Online (Sandbox Code Playgroud)

因此,如果您想授予所有 (-rw-r--r--) 的读取权限:

$ chmod 644 filename
Run Code Online (Sandbox Code Playgroud)

要使文件只有您可读、可写和可执行:

$ chmod 700 filename
Run Code Online (Sandbox Code Playgroud)

要使文件对您和您的组可读和可执行,但只能由其他人读取:

$ chmod 554 filename
Run Code Online (Sandbox Code Playgroud)

chmod 也可以使用字母:u 代表用户(所有者),g 代表组,o 代表其他,a 代表所有人(u、g 和 o)。因此,您可以执行 chmod g+r 文件来为该组添加读取权限。有关 chmod 的更多信息,请参见手册页 (man chmod)。

关于最后一个角色的注释

在 Mac OS X(以及其他一些 Unix 衍生产品)上,在最后一组权限之后还有一个额外的字符。它通常是一个空格,但也可能是一个 + 或一个 @

+ 表示文件或目录具有附加安全信息,例如 ACL。
@ 表示文件或目录具有扩展属性。

您可以通过在执行 ls(使用 -l 选项)时包含 -e 选项查看文件或目录的 ACL,并通过包含 -@(也使用 -l)查看扩展属性。
对 ACL 和扩展属性的讨论远远超出了这个答案,但可以在此处和 ACL此处找到有关扩展属性的更多信息(当然,Google 会提供比您想了解的更多的信息。)