[译]Unix/Linux:文件权限(umask, chmod, read, write, execute)之新手教程

0xFAN posted @ 2010年4月10日 04:52 in *nix with tags unix linux permission 权限 chmod umask , 8266 阅读

 原文链接:这里

第一次翻译文章,尽管拍砖。

 

Unix文件和目录访问权限可以看成是一个3*3矩阵的形式。也就是三个访问对象(owner,groups,others 即 拥有者,用户组,其他),每个对象有三种访问权限(read,write,execute 即 读,写,执行)。

你可以通过ls -l 命令来查看文件或目录的权限设置,输出中的第二个字符到第十个字符,这九个字符表示三种用户类型分别的三种访问权限。

-rw-r--r--  1 sathiya sathiya  272 Mar 17 08:22 test.txt

上面的例子中:

  • 用户即拥有者(sathiya) 具有读写权限(r代表read,w代表write,x代表execute [译者注])
  • 用户组里的其他用户有读(read)权限
  • 其他用户具有读(read)权限

三种文件访问权限:

  • 读(read): 具有读取文件内容的权限
  • 写(write): 具有写入文件的权限
  • 执行(execute): 具有将文件作为程序或脚本执行的权限

三种目录访问权限:

  • 读(read):具有读取目录内容的权限 (显示此目录下的文件和子目录).
  • 写(write): 具有写入目录的权限 ( 在此目录下创建文件和子目录 )
  • 执行(execute): 具有打开此目录的权限

读(read), 写(write) 和执行(execute)权限的数值表示:

  • 读(read) 4
  • 写(write) 2
  • 执行(execute) 1

如果想得到多种权限的组合,只需要将对应数值相加。例如:需要读写权限(read,write),那么就是 4+2 = 6。

使用 Chmod 改变文件或目录的权限

你可以使用八进制数字表示或者字符表示来改变一个文件或目录的权限。
 

权限的八进制表示法(顺序从左向右):

  • 第一位数字针对拥有者(owner)
  • 第二位数字针对用户组
  • 第三位数字针对其他用户

如果要赋予拥有者(owner)读写(read 4 ,write 2, 4+2=6 )权限,并赋予用户组(group)和其他用户(others)读(read 2)权限:

$ chmod 644 文件名

如果要赋予拥有者(owner)读和执行(read 4 ,execute 1,4+1=5)权限,并赋予用户组(group)读(read 4 )权限,并赋予其他用户零权限 ( 0 ):

$ chmod 540 文件名

如果要赋予拥有者读写(read 4, write 2, 4 + 2 = 6 )权限,并赋予用户组零权限( 0 ), 并赋予其他用户读(read 4 )权限:

$ chmod 604 文件名

Umask 022 代表一个文件的默认权限

默认的umask值是0022,这个值代表一个新文件或目录的默认具有的权限。目录的默认权限是0777,文件的默认权限是0666,新建文件或目录的权限就是默认权限减去umask值0022。

最终文件默认权限计算方法如下:

  • 默认文件权限: 666
  • 默认umask值: 022
  • 最终文件默认权限: 644

最终目录默认权限计算方法如下:

  • 默认目录权限:777
  • 默认umask:022
  • 最终默认目录权限: 755

你可以根据以上计算方法来将umask改为需要的数值。例如,如果你想让除了拥有者(owner)以外的任何人对文件或目录都具有零(0)权限,你就可以设置umask值为0077。

$ umask 0077

然后,如果你创建了一个新文件或者目录,用户会具有以下所示权限:

$ > testfile
$ ls -l testfile
-rw------- 1 sathiya sathiya 0 Mar 17 08:23 testfile
Avatar_small
fireboy and watergir 说:
2020年3月17日 18:02

This is a great little post with some valuable tips. I totally agree. The way you bring passion and engagement into the things you do can really change your outlook on life.


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter