文档权限
权限:多用户计算机系统管理中,不同用户对不同的的系统资源特定权利
Linux系统将文件可存取和访问的身份分为3个类别:owner、group、others
且3种身份对同一文件有着不同的权限(read、write、execute)
权限 | 含义 |
---|---|
读权限 (read) | 对文件夹,用户是否能够列出目录结构 |
对文件,用户是否能够查看文件内容 | |
写权限 (write) | 对文件夹,用户是否可在文件夹下创建/删除/复制/移动等操作 |
对文件,用户是否能够编辑文件内用 | |
执行权限 (execute) | 对文件夹,用户是否可以切入该文件夹内 |
对文件,用户是否能够执行该文件(特别脚本文件) |
//在Linux中是否可以对一个文件进行操作(删除、复制、命名和移动等)
不是看是文件对应的权限,而是看文件所在文件夹有没有对应的权限
1)owner身份:文件所有者(默认为文档的创建者)
//类似个人的“私密文档”,其他普通用户对该文档无权限
2)group身份:与文件所有者同组的用户
//一个团队内的所有用户针对某一文档拥有相等的权限(个人文档除外)
3)others身份:其他用户(相对于owner和group)
//其他用户是一个相对概念
4)root身份:超级用户
//Linux中权限最大的用户,管理着其他普通用户
如:查看/root目录所有文件的详细权限信息
//红框内为该文档相对应的全部权限分布
//ls -l等效于“ll”,但ll仅查询当前目录下
Linux中存在多用户和多用户组,所以针对不同身份有着不同权限
1)权限分配中,rwx是一个固定组合(顺序不能发生变化)
若没有某一权限,则用“-”代替
2)属主:文档所属的用户
3)属组:文档所属的用户组
如:查看/root目录所有文件的属主和属组
//文档在创建时会默认使用创建者的信息为该两项的信息
其中用户组为该用户的初始组(若更改,则为有效用户组)
配置权限
chmod命令:设置用户对文档的权限
指令格式:chmod 选项 权限信息 文档路径
选项 | 含义 |
---|---|
-R | 递归设置权限(文件夹时) |
-v | 显示权限变更的详细资料 |
//仅管理员和该文档所有者可给该文档设置权限
权限 | 对应字母 | 对应数字 |
---|---|---|
读 | r | 4 |
写 | w | 2 |
执行 | x | 1 |
字母设置权限:通过字母构成权限信息
//加减权限是相对于已经存在的权限做变更
且加减权限不会对没有指定的权限作出变动
而“=”权限是无视当前权限,直接将结果设置为具体的权限
权限信息为:谁 作用 权限
1)三者中间没有空格
2)若设置权限时没有指定用户,则默认给所有用户设置
3)若权限信息中有多个权限设置,应用“,”进行分隔(而不是空格)
4)若给多个身份设置同样权限,还可以将“谁”写在一起
如:给mwl文件设置对应权限
数字设置权限:通过数字构成权限信息
1)给多个身份设置权限时,数字需按照u、g、o顺序写在一起
2)其中数字2和3不能设置,该类权限设置存在不合理
//一个文件可写但不可读,也无法完成对应的写操作
如:给mwl文件设置为:用户rwx,用户组rx,其他用户x
1)文件的默认权限:666
2)目录的默认权限:777
umask命令:查看/修改文档建立后的默认反权限(以数字掩码形式显示)
指令格式1:umask
1)文件的默认权限:666
2)目录的默认权限:777
3)umask配置文件为:/etc/bashrc
//也可以字母形式显示权限:umask -S
如:通过umask和umask -S查看系统默认反/正权限
1)数字显示含义为:建立文档时,使用该文档默认权限减去该掩码
2)系统建立文档时,先使用默认权限,再根据umask设置进行调整
且不同用户的umask设置也不一样
指令格式2:umask 权限 //临时修改
1)权限可用数字和字母两种形式表达
如:修改建立文件夹后的权限
chown命令:修改文档的属主(所属用户)
指令格式1:chown 用户名 文档路径
指令格式2:chown 用户名:用户组名 文档路径
//同时更改文档的属主和属组
chgrp命令:修改文档所属用户组
指令格式:chgrp 用户组名 文档路径
1)chown和chgrp命令都有“-R”选项,代表递归设置权限(文件夹时)
特殊权限
文件特殊权限:SUID、SGID、SBIT
SUID(Set UID):设置用户特殊权限
1、 SUID仅对二进制程序(BinaryProgram)有效;
//SUID对目录是无效的(也不能用在Shell脚本上)
2、 执行者对于该程序需要具有可执行权限(x);
//需通过执行该程序才能获得对应权限
3、 执行者将具有程序拥有者(owner)的权限;
//在执行该程序时,将获得和程序拥有者相同的权限
4、 该权限仅在执行程序过程中有效;
SGID(Set GID):设置用户组特殊权限
1、 SGID对二进制程序和文档都有效;
2、 执行者对于该程序需要具有可执行权限(x);
3、 执行者将具有程序属组的权限;
4、 该权限仅在执行程序过程中有效;
当文件夹设置SGID权限后:
1)用户具有文件夹r和x权限,就可进入该文件夹
2)用户在该文件夹下的有效用户组为该目录的属组
//用户在该文件夹建立的新文档(需具有w权限)
其属组都与该文件夹的属组相同(而不是建立者的属组)
SBIT(Sticky Bit):设置文件夹的特殊权限(仅对文件夹有效)
1、 具有文件夹w和x权限,就具有写入的权限;
2、 在具有SBIT文件夹下建立的文档,则仅拥有者和root用户可改动;
特殊权限设置:通过数字构成权限信息
设置格式:chmod 权限信息 文档路径
1)数字形式分别为:4、2、1
2)字母形式分为别:s、s、t
//权限信息应包含三个普通权限信息
如:给test1文件设置SUID特殊权限
如:给test文件设置SUID和SGID权限
//若设置特殊权限时无对应x权限,则对应的s或t会变为S或T
如:给test2文件夹设置SBIT特殊权限
隐藏权限
chattr命令:设置文档的隐藏权限
指令格式:chattr 选项隐藏权限信息 文档路径
1)只有root用户才有权限进行修改
2)选项为:-、+、=
隐藏权限 | 含义 |
---|---|
a | 文档仅能增加数据,不能删、改数据 |
i | 文档不能被增、删、改数据 且不能设置链接文档 |
s | 使文档不支持事务的回滚 |
u | 使文档支持事务的回滚 |
S | 即时更新文档 |
c | 将文档压缩后再存放 |
3)若目录设置“i”,则仅能修改该目录下的文件内容
4)事务的回滚:数据在删除后,是否可以恢复
5)文档设置“S”,则文档被修改后立刻同步数据写入磁盘
//文档一般都是非同步写入磁盘的
lsattr命令:显示文档隐藏权限信息
指令格式:lsattr 选项 文档路径
选项 | 含义 |
---|---|
-a | 全部文件(连同隐藏文档) |
-d | 若文档是文件夹 则显示文件夹本身的属性,不是文件夹内的文件名 |
-R | 连同子目录内容一起列出来(目录所有文件都显示) |
如:给/etc/shadow设置i隐藏权限
//因/etc/shadow是记录用户密码的特殊文件
若设置i权限,则不能在文件添加数据、
就导致不能添加新的用户
Access Control List
ACL(Access Control List):访问控制列表
1)ACL可以针对单一用户、单一文件和单一目录进行r、w、x的权限设置
getfacl命令:查询文档ACL
指令格式:getfacl 文档路径
setfacl命令:设置文档ACL
指令格式1:setfacl 选项 参数 文档路径
1)若设置用户,参数为:“u:用户名:权限”
2)若设置用户组,参数为:“g:用户组名:权限”
3)若两个“::”中没有用户名/用户组名,则默认为文档的属主/属组
//权限字段不可为空,若没有权限应该加上一个减号“-”
选项 | 含义 |
---|---|
-m | 添加权限参数中的权限为ACL设置 |
-x | 删除权限参数中的权限从ACL设置 |
-b | 删除所有ACL设置 |
-k | 删除默认的ACL设置 |
-R | 递归设置ACL(子目录同时被设置) |
-d | 设置默认ACL参数 只对目录有效,目录下新建文档时会引用该数据 |
//若目录和该目录下的文件同时设置了ACL
则目录下的文件以该文件本身的ACL为准(文件ACL > 目录ACL)
如:使mwl用户对/root/test文件拥有rx权限
指令格式2:setfacl -m m:权限 文档路径 //设置文档ACL权限范围
1)通过改变mask规范设置最大允许权限范围
2)有效权限:用户/用户组所设置的权限在mask的权限设置范围内才能生效
如:设置mwl用户对该文件权限为rwx,再设置/root/test文件的mask为r
//若设置顺序反过来,则mask对用户权限设置没有影响
指令格式3:setfacl -m d:参数 目录路径
1)ACL的权限设置默认不会被子目录继承
如:设置mawenlong目录下的子目录默认权限
读取/修改文件
tr命令:修改数据中的指定字符
指令格式1:tr 选项 字符 //修改字符
选项 | 含义 |
---|---|
-d | 删除数据中的关键词 |
-s | 删除连续重复的字符以,且保留一个 |
指令格式2:tr 原字符 目标字符 //替换字符
如:使用tr调整echo的输出
expand命令:将数据中的跳格符(Tab)转换成空格符
指令格式:expand 选项 文档路径
选项 | 含义 |
---|---|
-t | 定义一个Tab按键等于多少空白字符 (默认是8个字符) |
//unexpand命令实现的效果则相反(用法相同)
col命令:调整输入/输出内容
指令格式:col 选项
选项 | 含义 |
---|---|
-x | 以多个空格符代替跳格符(Tab) |
-b | 删除所有的控制字符(包括RLF和HRLF) |
sort命令:将文件中数据进行排序并输出
指令格式:sort 选项 文件路径
1)排序默认是以ASCII码值比较进行排序,且排序的字符与语系的编码有关
选项 | 含义 |
---|---|
-f | 忽略大小写 |
-b | 忽略行首的空格 |
-n | 以数字形进行排序 |
-M | 以月份进行排序 |
-r | 反向排序 |
-t | 指定数据的分隔符 |
-k | 指定以那个区间进行排序 |
//-t和-k一起使用才有意义(类似cut的-d和-f)
//指定的分隔符需用‘’括起来
uniq命令:显示/忽略数据中的重复行(默认忽略)
//一般与sort命令结合使用
指令格式:uniq 选项
选项 | 含义 |
---|---|
-i | 忽略大小写 |
-c | 显示重复出现的次数 |
-d | 仅显示重复出现的行列 |
split命令:以大小/行数把一个文件分割成多个数据
指令格式:split 格式 文件路径 前缀名
选项 | 含义 |
---|---|
-b | 以文件大小分割数据 |
-l | 以行数分割文件 |
//文件被分割后,其名为:前缀名aa、前缀名ab、前缀名ac以此类推
若没有前缀名,则默认以aa、ab、ac命名以此类推
//分割后原文件还会被保存
如:将/root/etc/passwd文件按10行分割并保存到/root/test文件夹下
join命令:根据两个文件指定相同的栏位进行连接
指令格式:join 选项 文件路径1 文件路径2
选项 | 含义 |
---|---|
-t | 指定数据的分隔符 |
-i | 忽略大小写 |
-1 | 指定文件1的栏位 |
-2 | 指定文件2的栏位 |
1)默认以两个文件的第1个栏位进行比较
2)栏位:数据中被分隔符分割的数据栏
如:将文件/etc/passwd和文件/etc/group整合
//因为GID在/etc/passwd中是第4个栏位,在/etc/group中是第三个栏位
paste命令:将多个文件按照队列进行合并
指令格式:paste 文件1 文件N
1)不论文件的内容是否相同,都会按照行数进行合并
2)“-”代表终端标准输出的数据