2.linux 文件管理命令:getfacl获取文件访问控制列表\chacl更改文件或目录的访问控制列表
2.linux 文件管理命令:getfacl获取文件访问控制列表\chacl更改文件或目录的访问控制列表
linux 文件管理命令:strings显示文件中的可打印字符、xargs从标准输入读入参数、sum计算文件的校验和,以及文件占用的块数、setfacl设定文件访问控制列表、getfacl获取文件访问控制列表、chacl更改文件或目录的访问控制列表
- 作用:显示每个指定的文件中包含的所有有 4 个(或用选项指定的数字)以上连续可打印 字符的字符串,在之后紧跟着一个不可打印的字符。
- 用法:strings 选项 file
- 主要选项如下:
命令 | 描述 |
---|---|
| 不仅扫描目标文件初始化和装载段,而是扫描整个文件。 |
| 在显示字符串之前先显示文件名。 |
| 打印至少 min-len 字符长的字符串,默认的是 4。 |
| 在字符串前面显示其在文件中的偏移量。选项中的单个 字符指定偏移量的进制是八进制、十六进制还是十进制。 |
| 指定一种目标代码格式来代替系统的默认格式。 |
案例练习
显示一个文件中大于等于 4 个字符的字符串。
代码语言:bash复制strings scsrun.sh
#!/bin/sh
skip=14
- 作用:从标准输入读入参数,参数用空格(可以用双引号、单引号反斜杠转义)或回车符 隔开,然后一次或多次执行命令。xargs 是一条 UIX 和类 UIX 操作系统的常用命令,它的 作用是将参数列表转换成小块分段传递给其他命令,以避免参数列表过长的问题。
- 用法:xargs选项
- 主要选项如下:
命令 | 描述 |
---|---|
| 输入的文件名以 null 符结尾,而不是空格,引号和反斜杠并不做特殊处理。 |
| 文件尾字符串设置成 eof-str。如果文件尾字符串出现在输入中的某行,则余下的行将被忽略。 |
| 把 initial-arguments 里的所有 replace-str 替换为从标准输入里读入的名称。 |
| 每个命令行最多可以有 max-lines 行非空格输入,max-lines 默认是 1。 |
| 每个命令行最多可以有 max-args 个参数。 |
| 提示用户是否运行每个命令行,然后从终端读入一行。只有当此行以‘y’、‘Y’开始时才会运行此命令行。 |
| 如果标准输入不包含任何非空格,将不运行命令。 |
| 每个命令行最多可以有 max-chars 个字符。 |
| 从指定文件读取参数。 |
| 用{}代替传递的数据。 |
| 用 string 代替传递的数据。 |
| 设置每次传递几行数据。 |
| 显示执行详情。 |
| 交互模式。 |
| 允许的最大线程数量为 n。 |
| 设置传递参数的最大字节数(小于 11 072 字节)。 |
| 大于-s 设置的最大长度结束 xargs 命令执行。 |
xargs 退出可能有如下几种状态。
命令 | 描述 |
---|---|
| 如果成功。 |
| 如果任何一个被调用的命令 command 退出状态为 1-125。 |
| 如果命令 command 退出状态为 255。 |
| 如果命令 command 被信号终止。 |
| 如果不能执行命令 command。 |
| 如果命令 command 没有到。 |
| 如果发生其他错误。 |
案例练习
下面通过一些例子说明 xargs 命令是如何同 find 命令一起使用的。
(1)查系统中的每个普通文件,然后使用 xargs 命令来测试它们分别属于哪类文件。
代码语言:bash复制#find . -type f -print | xargs file
./.kde/Autostart/Autorun.desktop: UTF-8 Unicode English text
./.kde/Autostart/.directory: ISO-8859 text\
...
(2)在整个系统中查内存信息转储文件(core dump),然后把结果保存到/tmp/core.log 文件中。
代码语言:bash复制$ find / -name "core" -print | xargs echo "" >/tmp/core.log
()改用 xargs 命令。
代码语言:bash复制#rm 'find /path -type f'
如果 path 目录下文件过多,就会因为“参数列表过长”而报错无法执行。但改用 xargs 命 令以后,问题即可解决。
代码语言:bash复制#find /path -type f -print0 | xargs -0 rm
xargs 的作用等同于大多数 UIX Shell 中的反引号,但更加灵活易用,并且可以 正确处理输入中有空格等特殊字符的情况,对于经常产生大量输出的命令(如 find、 locate 和 grep)来说非常有用。在使用 find 命令的-exec 选项处理匹配到的文件时,find 命令将所有匹配到的文件一起传递给 exec 执行。不幸的是,有些系统对能够传递给 exec 的命令长度有限制,这样在 find 命令运行几分钟之后,就会出现溢出错误。错 误信息通常是“参数列太长”、“参数列溢出”。这就是 xargs 命令的用处所在,特别 是与 find 命令一起使用。find 命令把匹配到的文件传递给 xargs 命令,而 xargs 命令 每次只获取一部分文件而不是全部,不像-exec 选项那样。这样它可以先处理最先获 取的一部分文件,然后是下一批,并如此继续下去。在有些系统中,使用-exec 选项 会为处理每一个匹配到的文件而发起一个相应的进程,并非将匹配到的文件全部作为 参数一次执行。这样在有些情况下就会出现进程过多、系统性能下降的问题,因而效 率不高,而使用 xargs 命令只有一个进程。另外,在使用 xargs 命令时,究竟是一次 获取所有的参数,还是分批取得参数,以及每次获取参数的数目,都会根据该命令的 选项及系统内核中相应的可调参数来确定。
- 作用:sum 命令显示文件的校验和及文件块数。
- 用法:sum 选项...文件
为每个指定的文件输出校验和及块计数。
- 主要选项如下:
命令 | 描述 |
---|---|
| 使用 BSD 加和算法,以 1KB 为一个块。 |
| 使用 SystemV 加和算法,以 51 双字节为一个块。 |
| 显示此帮助信息并退出。 |
| 显示版本信息并退出。 |
如果没有指定文件,或者文件为“-”,则从标准输入读取。
案例练习
显示 和 hello.s 文件中的校验和,以及 1024 字节块数目,请输入如下命令:
代码语言:bash复制# sum hello.s
1784 1
48706 1 hello.s
显示的第一个字段是校验和,第二个字段是 1024 字节块数目,第三个字段是文件名。
- 作用:设定文件访问控制列表。
- 用法:setfacl -bkndRLP { -m|-M|-x|-X ... } file...
- 主要选项如下:
命令 | 描述 |
---|---|
| 更改文件的访问控制列表。 |
| 从文件读取访问控制列表条目并更改。 |
| 根据文件中的访问控制列表移除条目。 |
| 从文件读取访问控制列表条目并删除。 |
| 删除所有扩展访问控制列表条目。 |
| 移除默认访问控制列表。 |
| 设定替换当前的文件访问控制列表。 |
| 从文件中读取访问控制列表条目设定。 |
| 重新计算有效权限掩码。 |
| 不重新计算有效权限掩码。 |
| 应用到默认访问控制列表的操作。 |
| 递归操作子目录。 |
| 依照系统逻辑,跟随符号链接。 |
| 依照自然逻辑,不跟随符号链接。 |
| 恢复访问控制列表,和“getfacl-R”作用相反。 |
| 测试模式,并不真正修改访问控制列表属性。 |
| 显示版本信息并退出。 |
| 显示帮助信息。 |
案例练习
(1)修改文件的 acl 权限,添加一个用户权限。
代码语言:bash复制# setfacl -m u:zhangy:rw- test
(2)添加一个组。
代码语言:bash复制#setfacl -m g:zhangying:r-w test
- 作用:获取文件访问控制列表。
- 用法:getfacl-aceEsRLPtpndv件
- 主要选项如下:
命令 | 描述 |
---|---|
| 仅显示文件访问控制列表。 |
| 仅显示默认的访问控制列表。 |
| 不显示注释表头。 |
| 显示所有的有效权限。 |
| 显示无效权限。 |
| 跳过只有基条目(Baseentries)的文件。 |
| 递归显示子目录。 |
| 逻辑遍历(跟随符号链接)。 |
| 物理遍历(不跟随符号链接)。 |
| 使用制表符分隔的输出格式。 |
| 显示数字的用户/组标识。 |
| 不去除路径前的“/”符号。 |
| 显示版本并退出。 |
| 显示帮助信息。 |
案例练习
(1)查看 acl 权限列表。
代码语言:bash复制# getfacl test
# file: test
# owner: root
# group: root
user::r-x
user:tank:rwx #effective:---
group::r-x #effective:---
mask::---
other::---
(2)查看 acl 权限,省略头信息。
代码语言:bash复制# getfacl -c test
user::r-x
user:tank:rwx #effective:---
group::r-x #effective:---
mask::---
other::---
- 作用:更改文件或目录的访问控制列表。
- 用法:chacl acl filename1 filename2
- 主要选项如下:
命令 | 描述 |
---|---|
| 表明这里有两个 acl 需要修改,前一个 acl 是文件 的 acl,后一个是目录的默认 acl。 |
| 设定目录的默认 acl,这个选项是比较有用的。如果指定 了目录的默认 acl,在这个目录下新建的文件或目录都会继承目录的 acl。 |
| 只删除文件的 acl。 |
| 只删除目录的默认 acl,是-d 的反向操作。 |
| 删除文件和目录默认的 acl,是-b 的反向操作。 |
| 递归地修改文件和目录的 acl 权限。 |
| 列出文件和目录的 acl 权限。 |
chacl 是用来更改文件或目录的访问控制列表的命令。其和 chmod 有异曲同工之 妙,但是比 chmod 更为强大、更为精细
chmod 只能把权限分为 种:用户、组、其他人。通过 chmod 可以指定文件属主的权限、 文件所在组的用户的权限,以及其他人的权限。
如果有这样的需求,通过 chmod 能搞定吗?如果 A 用户的文件只想给 B 看,通过 chmod 能不能搞定?当然读者可能认为把 A、B 放到一个组里面就可以了,但是这样就会限制了其他 用户不能加入这个组。通过 chacl 可以轻松地解决这个问题。
chacl 命令的格式如下:
代码语言:bash复制chacl acl filename1 filename2
acl 的英文是 the access control list,直译为存取控制列表。chacl 就是一个改变文件存取控 制列表的命令。
acl 是一个可以被 acl_from_text 程序分析出各用户权限的字符串,该字符串用逗号分隔成 多个片段,每个片段的形式都如 tag:name:perm。
tag 可以是下面形式的一种:
代码语言:bash复制"user"(or"u") #表示这是一个用户的 ACL 条目。
代码语言:bash复制"group"(or"g") #表示这是一个用户组的 ACL 条目。
代码语言:bash复制"other"(or"o") #表示这是其他的 ACL 条目,即没有在 ACL 指定的用户和组的 ACL 条目。
代码语言:bash复制"mask"(or"m") #表示这是一个掩码的 ACL 条目。在指定其他非用户属主的 ACL 权限时,这个掩码条目必
#须被指定,否则执行 chacl 命令会出错。
name 可以是用户名或组名。如果不指定,那么默认是给文件或目录的属主或用户组指定 ACL 权限。当然,name 也可以是用户的 UID 或者组的 GID。
perm 是指该用户或组所具有的权限,它是由“rwx”组成的一个字符串。如果要使该用户 或组不具有某种权限,简单地以“-”代替指定的字母就可以了。例如“r-x”表示只具有读、 执行权限。
案例练习
代码语言:bash复制# chacl u::r-x,g::r-x,o::---,u:tank:rwx,m::--- test
# getfacl test #查看文件的 acl 权限
# file: test
# owner: root
# group: root
user::r-x
user:tank:rwx #effective:---
group::r-x #effective:---
mask::---
other::---
#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格
推荐阅读
留言与评论(共有 11 条评论) |
本站网友 去除眼部皱纹 | 29分钟前 发表 |
-n | |
本站网友 广发官方网站 | 25分钟前 发表 |
-l列出文件和目录的 acl 权限 | |
本站网友 中小投资创业网 | 2分钟前 发表 |
r-x user | |
本站网友 mic男团 | 22分钟前 发表 |
添加一个用户权限 | |
本站网友 模特经纪 | 0秒前 发表 |
选项中的单个 字符指定偏移量的进制是八进制 | |
本站网友 固原二手房 | 19分钟前 发表 |
-R只删除文件的 acl | |
本站网友 君住长江头 | 17分钟前 发表 |
tank | |
本站网友 男生喜欢女生在上面吗 | 29分钟前 发表 |
-n[数字] 设置每次传递几行数据 | |
本站网友 naughtyamerica | 27分钟前 发表 |
-h | |
本站网友 鑫谷 | 7分钟前 发表 |
-L |