12月20日笔记 文件、目录权限及相关操作命令

     linux文件权限是一个比较繁杂的内容,建议在阅读中文资料的基础上参考英文wiki与鸟叔的网站关于权限方面的内容,下面是在学习中参阅的一些文章:

英文:https://en.wikipedia.org/wiki/File_system_permissions
https://en.wikipedia.org/wiki/Modes_(Unix)
https://www.hackinglinuxexposed.com/articles/20030417.html
https://www.hackinglinuxexposed.com/articles/20030424.html
鸟哥的linux站点:第六章、Linux 檔案與目錄管理

一、linux文件的权限
查看目标权限的命令
”ls -l+文件名“或”stat -c %a%A“
12月20日笔记 文件、目录权限及相关操作命令
12月20日笔记 文件、目录权限及相关操作命令
(一)文件权限字含义
文件:文件的基本权限是读,写,执行权限:
读 R:分配对文件的内容进行读取和查看文件的权限。
写 W:分配对文件的内容进行修改或者删除的权限。
执行 X:允许用户将该文件作为一个程序进行执行的权限。
目录:目录的基本权限也是读,写,执行,但与文件的权限有一定区别:
读 R:访问目录意味着用户可以读取目录下的内容。用户可以查看目录内的文件名。
写 W:这个权限意味着用户可以在目录下面删除或者新建文件。
执行 X:执行一个目录并没有真正的意义,因此将它当作可以遍历目录的权限。

我们看下新建的2.txt的权限
12月20日笔记 文件、目录权限及相关操作命令
权限的值可以用数字表示,这里借用视频中的图
12月20日笔记 文件、目录权限及相关操作命令
这里所有者有读写权限,用户组与其他用户只有读权限,换算成数字就是644
我们再来看下新建的目录2的权限
12月20日笔记 文件、目录权限及相关操作命令

这里所有者有读写遍历权限,其他两个组只有读和遍历权限。

这样我们可以算出文件2.txt的权限数字是644,可以用stat -c %a直接来查看这个数字。

二、chmod命令
chmod命令用来变更文件或目录的权限。在UNIX系统家族里,文件或目录权限的控制分别以读取、写入、执行3种一般权限来区分,另有3种特殊权限可供运用。用户可以使用chmod指令去变更文件与目录的权限,设置方式采用文字或数字代号皆可。符号连接的权限无法变更,如果用户对符号连接修改权限,其改变会作用在被连接的原始文件。
语法:chmod(选项)(参数)
参数:-R 递归处理,将指令目录下的所有文件及子目录一并处理;
-v 显示操作过程
示例:
1、chmod 数字
12月20日笔记 文件、目录权限及相关操作命令
12月20日笔记 文件、目录权限及相关操作命令
12月20日笔记 文件、目录权限及相关操作命令
2、chmod u=...,g=...,o=...
12月20日笔记 文件、目录权限及相关操作命令
3、chmod a+或- r、w、x
12月20日笔记 文件、目录权限及相关操作命令

三、chown命令
chown命令改变某个文件或目录的所有者和所属的组,该命令可以向某个用户授权,使该用户变成指定文件的所有者或者改变文件所属的组。用户可以是用户或者是用户D,用户组可以是组名或组id。 只有文件主和超级用户才可以使用该命令。
语法:chown (选项)(参数)
参数:-R或——recursive:递归处理,将指定目录下的所有文件及子目录一并处理;
-v或——version:显示指令执行过程;
示例:
1、更改文件拥有者
12月20日笔记 文件、目录权限及相关操作命令
12月20日笔记 文件、目录权限及相关操作命令
2、同时更改文件的拥有者与所属组,==chgrp
12月20日笔记 文件、目录权限及相关操作命令
改回来了!

四、umask
umask命令,(实际工作中很少用^..^)用来设置限制新建文件权限的掩码。当新文件被创建时,其最初的权限由文件创建掩码决定。用户每次注册进入系统时,将自动设置掩码mode来限制新文件的权限
系统默认的umask是0022
12月20日笔记 文件、目录权限及相关操作命令
使用touch、mkdir等命令时,将根据umask的值确定新文件或文件夹的权限
umask也可以使用类似2、chmod u=...,g=...,o=...的命令设置。注意,是你不要新文件默认带什么权限就把这个权限写进umask的值中。
示例:
1、修改umask的方法:umask 0002或者002,最前面的0可以省略。

12月20日笔记 文件、目录权限及相关操作命令
2、权限计算方法
应该将 权限换算成“rwx形式再进行计算”,其中r-r=-,w-w=-,x-x=-;--r=- ,默认的文件权限计算初始值是(-rw-rw-rw-),目录的初始值是(drwxrwxrwx)。比如umask设置成0033,那么换过来就应该是-----wx-wx,那么用(-rw-rw-rw-)
去减,这里结果应该是(-rw-r--r--)。

五、lsattr命令与chattr命令
chattr
chattr命令文件权限属性设置 chattr命令用来改变文件属性。这项指令可改变存放在ext2文件系统上的文件或目录属性,这些属性共有以下8种模式:
a:让文件或目录仅供附加用途;
b:不更新文件或目录的最后存取时间;
c:将文件或目录压缩后存放;
d:将文件或目录排除在倾倒操作之外;
i:不得任意更动文件或目录;
s:保密性删除文件或目录; 
S:即时更新文件或目录;
u:预防意外删除。

英文wiki中的详表
12月20日笔记 文件、目录权限及相关操作命令

PS:对目录加i与a权限并不影响对内部已存在的文件的操作。
参数:-R:递归处理,将指令目录下的所有文件及子目录一并处理;

示例:
1、给文件加上i权限
12月20日笔记 文件、目录权限及相关操作命令
然后你就不能对这个文件进行任何操作了,但是可以cp。
12月20日笔记 文件、目录权限及相关操作命令
12月20日笔记 文件、目录权限及相关操作命令
12月20日笔记 文件、目录权限及相关操作命令
i是英文immutable的缩写,不可改变的意思;

去掉这个权限
命令:
12月20日笔记 文件、目录权限及相关操作命令

+i权限不能被继承,比如上文cp生成的2.txt无+i权限。
12月20日笔记 文件、目录权限及相关操作命令

lsattr命令:
lsattr命令用于查看文件的第二扩展文件系统属性。

参数:
-a  显示所有文件和目录,包括以"."为名称开头字符的额外内建,现行目录"."与上层目录".."。
-d  显示,目录名称,而非其内容。
-R  递归处理,将指定目录下的所有文件及子目录一并处理。

示例:
查看目录的第二权限
加上 -d选项即可
12月20日笔记 文件、目录权限及相关操作命令

疑问 lsattr -vV是什么?


 本文转自 whytl 51CTO博客,原文链接:http://blog.51cto.com/11934539/2052710