您现在的位置是:首页 > 编程 > 

2.linux 文件管理命令:getfacl获取文件访问控制列表\chacl更改文件或目录的访问控制列表

2025-07-27 20:03:14
2.linux 文件管理命令:getfacl获取文件访问控制列表\chacl更改文件或目录的访问控制列表 linux 文件管理命令:strings显示文件中的可打印字符、xargs从标准输入读入参数、sum计算文件的校验和,以及文件占用的块数、setfacl设定文件访问控制列表、getfacl获取文件访问控制列表、chacl更改文件或目录的访问控制列表strings:显示文件中的可打印字符作用:

2.linux 文件管理命令:getfacl获取文件访问控制列表\chacl更改文件或目录的访问控制列表

linux 文件管理命令:strings显示文件中的可打印字符、xargs从标准输入读入参数、sum计算文件的校验和,以及文件占用的块数、setfacl设定文件访问控制列表、getfacl获取文件访问控制列表、chacl更改文件或目录的访问控制列表

strings:显示文件中的可打印字符
  • 作用:显示每个指定的文件中包含的所有有 4 个(或用选项指定的数字)以上连续可打印 字符的字符串,在之后紧跟着一个不可打印的字符。
  • 用法:strings 选项 file
  • 主要选项如下:

命令

描述

-a --all

不仅扫描目标文件初始化和装载段,而是扫描整个文件。

--print-file-name–f

在显示字符串之前先显示文件名。

-bytes=min-len

打印至少 min-len 字符长的字符串,默认的是 4。

--radix={o,x,d}

在字符串前面显示其在文件中的偏移量。选项中的单个 字符指定偏移量的进制是八进制、十六进制还是十进制。

--target=bfdname

指定一种目标代码格式来代替系统的默认格式。

案例练习

显示一个文件中大于等于 4 个字符的字符串。

代码语言:bash复制
strings scsrun.sh 
#!/bin/sh 
skip=14 
xargs:从标准输入读入参数
  • 作用:从标准输入读入参数,参数用空格(可以用双引号、单引号反斜杠转义)或回车符 隔开,然后一次或多次执行命令。xargs 是一条 UIX 和类 UIX 操作系统的常用命令,它的 作用是将参数列表转换成小块分段传递给其他命令,以避免参数列表过长的问题。
  • 用法:xargs选项
  • 主要选项如下:

命令

描述

--null,-0

输入的文件名以 null 符结尾,而不是空格,引号和反斜杠并不做特殊处理。

--eof[=eof-str],-e[eof-str]

文件尾字符串设置成 eof-str。如果文件尾字符串出现在输入中的某行,则余下的行将被忽略。

--replace[=replace-str],-i[replace-str]

把 initial-arguments 里的所有 replace-str 替换为从标准输入里读入的名称。

--max-lines[=max-lines],-l[max-lines]

每个命令行最多可以有 max-lines 行非空格输入,max-lines 默认是 1。

--max-args=max-args,-nmax-args

每个命令行最多可以有 max-args 个参数。

--interactive,-p

提示用户是否运行每个命令行,然后从终端读入一行。只有当此行以‘y’、‘Y’开始时才会运行此命令行。

--no-run-if-empty,-r

如果标准输入不包含任何非空格,将不运行命令。

--max-chars=max-chars,-smax-chars

每个命令行最多可以有 max-chars 个字符。

--arg-file=file

从指定文件读取参数。

-i

用{}代替传递的数据。

-I string

用 string 代替传递的数据。

-n[数字]

设置每次传递几行数据。

-t

显示执行详情。

-p

交互模式。

-P n

允许的最大线程数量为 n。

-s[大小]

设置传递参数的最大字节数(小于 11 072 字节)。

-x

大于-s 设置的最大长度结束 xargs 命令执行。

xargs 退出可能有如下几种状态。

命令

描述

0

如果成功。

12

如果任何一个被调用的命令 command 退出状态为 1-125。

124

如果命令 command 退出状态为 255。

125

如果命令 command 被信号终止。

126

如果不能执行命令 command。

127

如果命令 command 没有到。

1

如果发生其他错误。

案例练习

下面通过一些例子说明 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 命令显示文件的校验和及文件块数。
  • 用法:sum 选项...文件

为每个指定的文件输出校验和及块计数。

  • 主要选项如下:

命令

描述

r

使用 BSD 加和算法,以 1KB 为一个块。

-s,--sysv

使用 SystemV 加和算法,以 51 双字节为一个块。

--help

显示此帮助信息并退出。

--version

显示版本信息并退出。

如果没有指定文件,或者文件为“-”,则从标准输入读取。

案例练习

显示 和 hello.s 文件中的校验和,以及 1024 字节块数目,请输入如下命令:

代码语言:bash复制
# sum  hello.s 
1784 1  
48706 1 hello.s

显示的第一个字段是校验和,第二个字段是 1024 字节块数目,第三个字段是文件名。

setfacl:设定文件访问控制列表
  • 作用:设定文件访问控制列表。
  • 用法:setfacl -bkndRLP { -m|-M|-x|-X ... } file...
  • 主要选项如下:

命令

描述

-m,--modify=acl

更改文件的访问控制列表。

-M,--modify-file=file

从文件读取访问控制列表条目并更改。

-x,--remove=acl

根据文件中的访问控制列表移除条目。

-X,--remove-file=file

从文件读取访问控制列表条目并删除。

-b,--remove-all

删除所有扩展访问控制列表条目。

-k,--remove-default

移除默认访问控制列表。

--set=acl

设定替换当前的文件访问控制列表。

--set-file=file

从文件中读取访问控制列表条目设定。

--mask

重新计算有效权限掩码。

-n,--no-mask

不重新计算有效权限掩码。

-d,--default

应用到默认访问控制列表的操作。

-R,--recursive

递归操作子目录。

-L,--logical

依照系统逻辑,跟随符号链接。

-P,--physical

依照自然逻辑,不跟随符号链接。

--restore=file

恢复访问控制列表,和“getfacl-R”作用相反。

--test

测试模式,并不真正修改访问控制列表属性。

-v,--version

显示版本信息并退出。

-h,--help

显示帮助信息。

案例练习

(1)修改文件的 acl 权限,添加一个用户权限。

代码语言:bash复制
# setfacl -m u:zhangy:rw- test

(2)添加一个组。

代码语言:bash复制
#setfacl -m g:zhangying:r-w test
getfacl:获取文件访问控制列表
  • 作用:获取文件访问控制列表。
  • 用法:getfacl-aceEsRLPtpndv件
  • 主要选项如下:

命令

描述

-a,--access

仅显示文件访问控制列表。

-d,--default

仅显示默认的访问控制列表。

-c,--omit-header

不显示注释表头。

-e,--all-effective

显示所有的有效权限。

-E,--no-effective

显示无效权限。

-s,--skip-base

跳过只有基条目(Baseentries)的文件。

-R,--recursive

递归显示子目录。

-L,--logical

逻辑遍历(跟随符号链接)。

-P,--physical

物理遍历(不跟随符号链接)。

-t,--tabular

使用制表符分隔的输出格式。

-n,--numeric

显示数字的用户/组标识。

-p,--absolute-names

不去除路径前的“/”符号。

-v,--version

显示版本并退出。

-h,--help

显示帮助信息。

案例练习

(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:更改文件或目录的访问控制列表
  • 作用:更改文件或目录的访问控制列表。
  • 用法:chacl acl filename1 filename2
  • 主要选项如下:

命令

描述

-b

表明这里有两个 acl 需要修改,前一个 acl 是文件 的 acl,后一个是目录的默认 acl。

-d

设定目录的默认 acl,这个选项是比较有用的。如果指定 了目录的默认 acl,在这个目录下新建的文件或目录都会继承目录的 acl。

-R

只删除文件的 acl。

-D

只删除目录的默认 acl,是-d 的反向操作。

-B

删除文件和目录默认的 acl,是-b 的反向操作。

-r

递归地修改文件和目录的 acl 权限。

-l

列出文件和目录的 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组装电脑配置单推荐报价格

本文地址:http://www.dnpztj.cn/biancheng/1176816.html

相关标签:无
上传时间: 2025-07-21 18:41:15
留言与评论(共有 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