Linux学习笔记之——文件权限管理
摘要: 对文件权限管理的一些整理、在使用之前先补充了可能使用到的命令、如果不想过多关注也可以直接看下面关于权限的部分、内容主要包括修改文件权限、修改文件所属用户、用户组。
一: 文件具体属性意义
1、命令:ls简单介绍
ls命令格式:ls [选项] [目录名]。
ls命令功能:列出目标目录中所有的子目录和文件。
ls命令常用参数:
-a, –all 列出目录下的所有文件,包括以. 开头的隐含文件
-A 同-a,但不列出“.”(表示当前目录)和“..”(表示当前目录的父目录)。
-c 配合 -lt:根据 ctime 排序及显示 ctime (文件状态最后更改的时间)配合 -l:显示 ctime 但根据名称排序否则:根据 ctime 排序
–color[=WHEN] 控制是否使用色彩分辨文件。WHEN 可以是‘never‘、‘always‘或‘auto‘其中之一
-d, –directory 将目录象文件一样显示,而不是显示其下的文件。
-D, –dired 产生适合 Emacs 的 dired 模式使用的结果
-f 对输出的文件不进行排序,-aU 选项生效,-lst 选项失效
-g 类似 -l,但不列出所有者
-G, –no-group 不列出任何有关组的信息
-h, –human-readable 以容易理解的格式列出文件大小 (例如 1K 234M 2G)
–si 类似 -h,但文件大小取 1000 的次方而不是 1024
-H, –dereference-command-line 使用命令列中的符号链接指示的真正目的地
–indicator-style=方式 指定在每个项目名称后加上指示符号<方式>:none (默认),classify (-F),file-type (-p)
-i, –inode 印出每个文件的 inode 号
-I, –ignore=样式 不印出任何符合 shell 万用字符<样式>的项目
-k 即 –block-size=1K,以 k 字节的形式表示文件的大小。
-l 除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来。
-L, –dereference 当显示符号链接的文件信息时,显示符号链接所指示的对象而并非符号链接本身的信息
-m 所有项目以逗号分隔,并填满整行行宽
-o 类似 -l,显示文件的除组信息外的详细信息。
-r, –reverse 依相反次序排列
-R, –recursive 同时列出所有子目录层
-s, –size 以块大小为单位列出所有文件的大小
-S 根据文件大小排序
–sort=WORD 以下是可选用的 WORD 和它们代表的相应选项:
extension -Xstatus -c
none -U time -t
size -S atime -u
time -t access-u
version -v use-u
-t 以文件修改时间排序
-u 配合 -lt:显示访问时间而且依访问时间排序
配合 -l:显示访问时间但根据名称排序
否则:根据访问时间排序
-U 不进行排序;依文件系统原有的次序列出项目
-v 根据版本进行排序
-w, –width=COLS 自行指定屏幕宽度而不使用目前的数值
-x 逐行列出项目而不是逐栏列出
-X 根据扩展名排序
-1 每行只列出一个文件
–help 显示此帮助信息并离开
–version 显示版本信息并离开
2、文件属性
a)文件属性说明
文件属性已经在前面的笔记中有过详细说明、这里再简单的介绍一下:
用ls -l命令查看某一个目录会得到一个9个字段的列表.
第1行显示的信息: 总用量(total) —这个数值是该目录下所有文件及目录列表第5个字段的和(以k为单位),也就是该目录的大小.
第1字段:
文件属性字段
文件属性字段总共有10个字母组成,第一个字母表示文件类型,如果这个字母是一个减号”-”,则说明该文件是一个普通文件.字母”d”表示该文件是一个目录,字母”d”,是dirtectory(目录)的缩写.请注意,一个目录或者说一个文件夹是一个特殊文件,这个特殊文件存放的是其他文件和文件夹的相关信息.
第2字段
文件硬链接数或目录子目录数
第3字段:
文件拥有者
第4字段:
文件拥有者所在的组
第5字段:
文件文件大小(以字节为单位)
第6字段:
文件创建月份
第7字段:
文件创建日期
第8字段:
文件创建时间
第9字段:
文件名 (如果是一个符号链接,那么会有一个 “->” 箭头符号,后面根一个它指向的文件)
b)文件权限对应数字说明:
平时常常看见chmod 后面跟三个数字、这些数字是怎么来的?为什么可以这样来实现文件权限的修改?
其实、文件的读、写、执行都可以用一个8进制数来表示:
r 100 ——4 w 010 ——2 x 001 —— 1
将这三位8进制数字相加的结果,就可以表示该组权限的具体内容,例如:
7=4+2+1=rwx
5=4+1=rx
755=4+2+1 4+1 4+1=rwx r-x r-x
c) 另一种权限实现方式
如果我们要让一个文件具有我们指定的权限、或者去除某种权限、比如我的情书不准别人看、但是我们又不知道这个文件本身有没有此权限、此时就可以使用下面的权限修改方式:
a 所有用户 u 归属用户 g 归属群组 o 其它用户 |
= 具有权限 + 增加权限 - 去除权限 |
r 可读权限 w 可写权限 x 可执行权限 |
上面表格中三列可以任意组合来达到我们想要的效果、例如:
a+x 给所有用户增加可执行权限
go-wx 将归属群组和其它用户的可写、可执行权限去掉
u=rwx 归属用户具有可读、可写、可执行权限
二:文件权限管理
1、文件操作命令简单说明:
mkdir 目录名 => 创建一个目录
rmdir 空目录名 => 删除一个空目录
rm 文件名文件名 => 删除一个文件或多个文件
rm –rf 非空目录名 => 删除一个非空目录下的一切
touch 文件名 => 创建一个空文件
重命名文件(夹) / 移动文件(夹)到指定文件夹
执行格式: mvsource destination
Example:
mv file1 file2 => 将文件 file1,更改文件名为 file2。
mv file1 dir1 => 将文件 file1,移到目录 dir1下,文件名仍为 file1。
mv dir1 dir2 => 若目录 dir2 存在,则将目录 dir1,及其所有文件和子目录,移到目录 dir2 下,新目录名称为 dir1。若目录 dir2 不存在,则将dir1,及其所有文件和子目录,更改为目录 dir2。
2、修改文件权限命令——chmod:
a) 命令格式:chmod [-cfvR][--help] [--version] mode file
b) 命令功能:用于改变文件或目录的访问权限,用它控制文件或目录的访问权限。
c) 命令常用参数:
-c 当发生改变时,报告处理信息
-f 错误信息不输出
-R 处理指定目录以及其子目录下的所有文件
-v 运行时显示详细处理信息
d) exp:
i) 做实验最好是进入到/tmp中去这样安全。 ii) 创建一个文件夹 dir1并修改此文件夹的权限为755(具体的文件权限可以参照上面 mkdir dir1 chmod755 dir1 可以使用ls –l 来查看每一步操作之后文件或者文件夹的属性。 iii) 创建一个多层文件夹、并修改所有文件夹的属性为 777 mkdir–p dl_1/dl_2/dl_3 chmod–R dl_1 iv)我不想任何用户对dl_1下的任何文件具有可写、可执行权限 chmo–R a-wx dl_1/ v) 我想使我和我所在用户组对dl_1下的所有文件具有x文件 chmo–R ug+x dl_1/ vi)我想是我和我所在用户组对dl_1只具有读取和操作权限 chmod–R ug=rx dl_1/
3、修改文件归属——chown
a) 命令格式: chown [选项]... [所有者][:[组]] 文件...
b) 命令功能:通过chown改变文件的拥有者和群组。在更改文件的所有者或所属群组时,可以使用用户名称和用户识别码设置。普通用户不能将自己的文件改变成其他的拥有者。其操作权限一般为管理员。
c) 命令参数:
必要参数:
-c 显示更改的部分的信息
-f 忽略错误信息
-h 修复符号链接
-R 处理指定目录以及其子目录下的所有文件
-v 显示详细的处理信息
-deference作用于符号链接的指向,而不是链接文件本身
选择参数:
--reference=<目录或文件> 把指定的目录/文件作为参考,把操作的文件/目录设置成参考文件/目录相同拥有者和群组
--from=<当前用户:当前群组> 只有当前用户和群组跟指定的用户和群组相同时才进行改变
--help 显示帮助信息
--version 显示版本信息
d) exp:
i)修改dl_1文件属于test_user_2用户 chowntest_user_2 dl_1/ ii)修改dl_1文件属于test_user_2用户和属于test_group_1用户组 chowntest_user_2:test_group_1 dl_1/ iii) 修改dl_1中所有文件属于test_user_2用户 chown–R test_user_2 dl_1/ iv)修改dl_1中所有文件属于test_user_2用户和属于test_group_1用户组 chown –Rtest_user_2:test_group_1 dl_1/
4、修改文件用户组——chgrp
a) 命令格式:chgrp [选项] [组] [文件]
b) 命令功能:chgrp命令可采用群组名称或群组识别码的方式改变文件或目录的所属群组。使用权限是超级用户。
c) 命令参数:
必要参数:
-c 当发生改变时输出调试信息
-f 不显示错误信息
-R 处理指定目录以及其子目录下的所有文件
-v 运行时显示详细的处理信息
--dereference 作用于符号链接的指向,而不是符号链接本身
--no-dereference作用于符号链接本身
选择参数:
--reference=<文件或者目录>
--help 显示帮助信息
--version 显示版本信息
d) exp:
i) 修改dl_1文件的归属用户组
chgrp test_group_1 dl_1
ii) 修改dl_1中所有文件的归属用户组
chgrp –R test_group_1 dl_1