首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >寻找在unix中获取(数字)文件权限的更有效(且可移植)的方法

寻找在unix中获取(数字)文件权限的更有效(且可移植)的方法
EN

Stack Overflow用户
提问于 2010-07-07 22:32:17
回答 6查看 436关注 0票数 3

简短背景:我需要使用ZABBIX监视unix文件(目录)上的权限,以查看它们是否/何时发生更改。ZABBIX没有类似vfs.file.modexxxx这样的内置函数,所以我不得不使用自己的数值类型的UserParameter。

到目前为止,我所做的是使用ls -l | cut -c 2-10获取rwxr-xr-x部分,然后使用sed将字母转换为它们的“权重”,并使用awksubstr对其求和,以获得数字755或其他值。

这是目前在Solaris上,我没有GNU stat命令,我希望它是可移植的和有效的,并且只使用标准的unix工具,总是可用的。(IMHO,perl并不总是可用的)。

我的第一次尝试(根目录的示例):

代码语言:javascript
运行
复制
ls -ld / | \
cut -c 2-10 | \
sed -e 's%-%0%g' -e 's%r%4%g' -e 's%w%2%g' -e 's%x%1%g' | \
awk '{print (100 * ((substr($0,1,1)) + (substr($0,2,1)) + (substr($0,3,1))) + \
     (10 * ((substr($0,4,1) + (substr($0,5,1)) + (substr($0,6,1)) ))) + \
     ( (substr($0,7,1)) + (substr($0,8,1)) + (substr($0,9,1)) ) );}'

正如您所看到的,我不关心setuid位或文件以外的任何东西,但纯粹的响应总是受欢迎的!

当然,肯定有更优雅的解决方案。也许是一个我没有想到的标准unix工具。

我大约一周前“偶然”发现了这个地方,我真的真的很喜欢它!在一个地方看到如此多的知识、技能和友好性,真是令人惊叹!这是我的第一个问题,所以我真的很兴奋能不能得到任何回应!:-)非常感谢!

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-07-08 06:50:57

我不认为这比你自己的版本更优雅/更高效,但我会把它放在上面,以防有任何技术对改进你自己的有用。显然,使用脚本可以更简单、更优雅地实现这一点

基本前提是使用tr将rwx转换为相关的八进制数,然后使用sed将其拆分为3个相加脉冲的组,然后生成awk命令字符串,将该字符串传递给awk以将它们相加。

代码语言:javascript
运行
复制
ls -ld / | \
cut -c2-10 | \
tr 'rwx-t' '42100' | \
sed -E -e 's/(...)(...)(...)/\1 \2 \3/g' \
-e 's/([0-9])([0-9])([0-9])/\1+\2+\3/g' \
-e 's/^(.*)$/BEGIN {print \1}/g'|\
awk -f -`
票数 1
EN

Stack Overflow用户

发布于 2010-07-08 01:42:32

如果你可以使用find,这看起来会更好:

find FILENAME -prune -printf '%m\n'

找到了here

票数 4
EN

Stack Overflow用户

发布于 2015-01-12 10:11:48

如果您的系统具有bash,并且ls -l显示了文件权限(rwxrwxrwx),则可以通过以下示例实现您想要的结果:

代码语言:javascript
运行
复制
#!/bin/sh
[ ! -d $1 ] && echo "Error: "$1" is not a directory" && exit 1 
set -- `ls -ld $1`;P=${1:1:9};P=${P//r/4 };P=${P//w/2 };P=${P//x/1 };P=${P//-/0 }
set -- $P; echo $((($1+$2)+$3))$((($4+$5)+$6))$((($7+$8)+$9))

优点是不需要其他实用程序,如awk或sed。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3195737

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档