如果文件权限大于755,如何在Perl中检查?
对于unix文件,我想知道Group或World是否对该文件有写权限。
我一直在思考这些:
my $fpath = "orion.properties";
my $info = stat($fpath) ;
my $retMode = $info->mode;
$retMode = $retMode & 0777;
if(($retMode & 006)) {
# Code comes here if World has r/w/x on the file
}
谢谢。
For a unix file, I want to know if Group or World has write permission on the file.
I've been thinking on these lines:
my $fpath = "orion.properties";
my $info = stat($fpath) ;
my $retMode = $info->mode;
$retMode = $retMode & 0777;
if(($retMode & 006)) {
# Code comes here if World has r/w/x on the file
}
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您已经接近您的建议 -
stat
的用法是有点偏离(但转念一想,您必须使用File::stat
; 如果您的代码完整,它会有所帮助),掩码常量有错误,并且注释有些不尽如人意:问题标题“如果文件权限大于 755,如何检查 Perl?”中的术语?即“组/世界具有写权限”有点可疑。
该文件可能具有权限 022(或者更合理的是 622),并且这将包括组和世界写入权限,但这两个值都不能合理地声称“大于 755”。
我发现有用的一组概念是:
例如,对于数据文件,我可能需要:
更有可能的是,对于数据文件,我可能需要:
目录略有不同:执行权限意味着您可以将该目录设为当前目录,或者如果您知道目录中的文件名称,则可以访问该目录中的文件,而读取权限意味着您可以找出该目录中的文件,但不能也无需执行权限即可访问它们。因此,您可能具有:
请注意,设置位和重置位必须是不相交的 (
($set & $rst) == 0)
),位的总和将始终为 0777; “不关心”位可以根据0777 & 计算得出。 ~($set | $rst)
。You are close with your proposal - the usage of
stat
is a little off (but on second thoughts, you must be usingFile::stat
; it helps if your code is complete), the mask constant is faulty, and the comment leaves somewhat to be desired:The terminology in the question title 'How to check in Perl if the file permission is greater than 755? i.e. Group/World has write permission' is a little suspect.
The file might have permissions 022 (or, more plausibly, 622), and that would include group and world write permission, but neither value can reasonably be claimed to be 'greater than 755'.
A set of concepts that I've found useful is:
For example, for a data file, I might require:
More likely, for a data file, I might require:
Directories are slightly different: execute permission means that you can make the directory your current directory, or access files in the directory if you know their name, while read permission means you can find out what files are in the directory, but you can't access them without execute permission too. Hence, you might have:
Note that the set and reset bits must be disjoint (
($set & $rst) == 0)
), the sum of the bits will always be 0777; the "don't care" bits can be computed from0777 & ~($set | $rst)
.