如果文件权限大于755,如何在Perl中检查?

2023-11-27

对于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
} 

Thanks.


你很接近你的建议 - 使用stat有点偏离(但转念一想,你必须使用File::stat;如果您的代码完整,它会有所帮助),掩码常量有错误,并且注释有些不足:

use strict;
use warnings;
use File::stat;

my $fpath   = "orion.properties";
my $info    = stat($fpath);
my $retMode = $info->mode;
$retMode = $retMode & 0777;

if ($retMode & 002) {
    # Code comes here if World has write permission on the file
}     
if ($retMode & 020) {
    # Code comes here if Group has write permission on the file
}
if ($retMode & 022) {
    # Code comes here if Group or World (or both) has write permission on the file
}
if ($retMode & 007) {
    # Code comes here if World has read, write *or* execute permission on the file
} 
if ($retMode & 006) {
    # Code comes here if World has read or write permission on the file
} 
if (($retMode & 007) == 007) {
    # Code comes here if World has read, write *and* execute permission on the file
} 
if (($retMode & 006) == 006) {
    # Code comes here if World has read *and* write permission on the file
}
if (($retMode & 022) == 022) {
    # Code comes here if Group *and* World both have write permission on the file
}

问题标题“如果文件权限大于755,如何在Perl中检查?”中的术语即“组/世界具有写权限”有点可疑。

该文件可能具有权限 022(或者更合理的是 622),并且这将包括组和世界写入权限,但这两个值都不能合理地声称“大于 755”。

我发现有用的一组概念是:

  • 设置位 - 权限字段中必须为 1 的位。
  • 重置位 - 权限字段中的位必须为 0。
  • 不关心位 - 可以设置或重置的位。

例如,对于数据文件,我可能需要:

  • 设置0644(所有者可以读写;组和其他可以读取)。
  • 重置0133(所有者无法执行-它是一个数据文件;组和其他人无法写入或执行)。

更有可能的是,对于数据文件,我可能需要:

  • 设置 0400(所有者必须能够读取)。
  • 复位0133(无人可以执行;组和其他人不能写入)。
  • 不关心0244(不关心所有者是否可以写入;不关心组或其他人是否可以读取)。

目录略有不同:执行权限意味着您可以将该目录设为当前目录,或者如果您知道目录中的文件名称,则可以访问该目录中的文件,而读取权限意味着您可以找出该目录中的文件,但不能也无需执行权限即可访问它们。因此,您可能有:

  • 设置0500(所有者必须能够读取和使用目录中的文件)。
  • 重置0022(组和其他人不得修改目录-删除或添加文件)。
  • 不关心0255(不关心用户是否可以创建文件;不关心组或其他是否可以列出或使用文件)。

请注意,设置位和复位位必须不相交(($set & $rst) == 0)),位总和将始终为 0777; “不关心”位可以通过以下方式计算0777 & ~($set | $rst).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如果文件权限大于755,如何在Perl中检查? 的相关文章

  • 在 Perl 中,如何制作数组的深层复制? [复制]

    这个问题在这里已经有答案了 可能的重复 在 Perl 中制作数据结构深层复制的最佳方法是什么 https stackoverflow com questions 388187 whats the best way to make a dee
  • Perl 中的线程定时循环

    本质上 我希望有一个高优先级线程 它以给定的时间间隔 此处为 0 5 毫秒 运行并中断 一切 执行一个短任务 然后返回 睡眠 状态 使用 Ubuntu 11 04 和 perl v5 10 1 问题是 虽然我得到了某种结果 但我不确定是否有
  • OS X 对 /usr/local/lib 的权限被拒绝

    我正在寻找有关权限问题的任何建议 直觉 线索 答案 自从我切换到新的 Macbook Pro 以来 这个问题一直困扰着我 这就是困境 某些程序在安装期间复制 usr local lib 下的库 并且在运行这些程序时出现崩溃 我认为这与此文件
  • 如何使用 Time::Piece strptime 解析微秒?

    我有一个时间戳 看起来像25 OCT 10 04 11 00 000000 AM 我正在尝试将其转换为时间格式 Time Piece gt strptime 25 OCT 10 04 11 00 000000 AM d b y I M S
  • Perl:散列 2 中数组的数值排序(施瓦茨变换)

    这实际上是该线程的后续内容 Perl 散列中数组的数字排序 https stackoverflow com questions 7914931 perl numerical sort of arrays in a hash 我无法编辑原始问
  • 如何在 Perl 中运行匿名函数?

    sub print 1 sub print 1 我尝试了各种方法 都是错误的 sub 将为您提供指向该函数的指针 因此您必须通过引用调用 sub print Hello world n gt 另一种简单的方法 如所指出的布拉戈维斯特 布尤克
  • 将日期转换为指定格式并比较两个日期

    给定两个日期 Date1 format yyyy mm dd hh mm ss eg 2013 05 21 07 47 21 Date2 format Day Month date hh mm ss yyyy eg Thu Aug 1 09
  • 使用 unix ksh shell 脚本或 perl 脚本监视文件夹中的新文件并触发 perl 脚本

    我已经在谷歌搜索和溢出了一段时间 但找不到任何可用的东西 我需要一个脚本来监视公共文件夹并在创建新文件时触发 然后将文件移动到私有位置 我有一个 samba 共享文件夹 exam ple 在 UNIX 上映射到X 在窗户上 在某些操作中 t
  • SFTP文件同时上传和下载

    cronjob 每 3 小时运行一次 使用 SFTP 下载文件 调度程序是用Perl编写的 使用的模块是Net SFTP Foreign Can the Net SFTP Foreign下载仅使用 SFTP 部分上传的文件 如果是这样 我们
  • 在 Objective-C 中使用 perl?

    CPAN 有大量非常有用的库 除了将它们移植到 Objective C 之外 是否还有在 iOS 上将 Perl 代码嵌入到 Objective C 中的方法 我对使用特别感兴趣电子表格 阅读 http kobesearch cpan or
  • perlbrew 可以在 Windows 上运行吗?

    使用 ActiveState 5 8 8Windows XP http en wikipedia org wiki Windows XP 我想安装更新的 Perl 进行测试 迁移 有一天 我们将不再以为自己只能使用一台计算机 当我想测试这类
  • 在 Perl 中优雅地确定系统架构

    我正在寻找一种简单的方法来确定 Perl 5 中的系统是 32 位还是 64 位 我已阅读perlvar来回翻阅手册页 并没有发现包含系统 CPU 架构的变量 编译 Perl 的 CPU 架构将足够接近 这是我最接近的 chomp my a
  • Perl 中的 Fork 无法在从文件读取的 while 循环内工作

    我正在运行一个 while 循环来读取文件中的每一行 然后使用该行的数据将进程分叉给子进程 N 行之后 我想等待子进程结束并继续接下来的 N 行 等等 它看起来像这样 while w
  • Perl LWP::简单 HTTPS 错误

    我正在尝试获取网站的内容并打印 该代码按照我希望的方式在常规 HTTP 网站上运行 但它不适用于 HTTPS 我已经查找了此问题的修复程序 但它们在我的程序中不起作用 这是我目前拥有的代码 usr bin perl use strict u
  • 更新命令行输出

    我的程序 碰巧是用 Perl 编写的 尽管我不认为这个问题是 Perl 特定的 在程序中的某一点输出状态消息 Progress x yy where x and yy是一个数字 例如 Progress 4 38 我想在打印新的状态消息时 覆
  • 如何检测已更改的网页?

    在我的应用程序中 我使用 LWP 定期获取网页 无论如何 是否要检查两次连续提取之间网页是否在某些方面发生了变化 除了明确进行比较之外 是否有在较低协议层生成的任何签名 例如 CRC 可以提取并与旧签名进行比较以查看可能的更改 有两种可能的
  • Perl 删除目录中的所有文件

    我怎样才能删除allPerl 中目录中的文件 不删除目录 我的主机只允许最多 250 000 个 文件 而我的 tmp 文件夹会在所有会话 cookie 运行的情况下快速填充 250 000 个 qouta 在这种情况下我无法删除 tmp
  • 合并 Perl Hashref 和 unique

    我有两个 Perl 哈希值 内容如下 First VAR1 name1 gt adam bob name2 gt Miller Schumacher Second VAR1 name1 gt tina jason jeff
  • 如何从 R 运行带有特定模块的 perl 脚本?

    我可以从终端运行 perl 脚本 myperlscript pl 没有任何问题 但是 如果我尝试从 RStudio 中运行相同的 perl 脚本 则会出现以下错误 command lt myperlscript pl outputfile
  • Perl YAML 模块无法识别标量类型

    我加载以下 yaml 文件 foo bar s 1 hx 0x34 用这段代码 use YAML qw LoadFile Dump use Data Dumper my d LoadFile test yaml print Dumper d

随机推荐

  • 如何从nodejs aws s3 getObject回调数据中检索元数据?

    我正在尝试使用 AWS 节点 SDK 将音频块文件上传到 S3 或从 S3 下载音频块文件 我尝试过base64方法 效果很好 但我无法取回我作为上传参数的一部分捆绑的元数据 下面是上传的代码片段以及元信息 var myMetaInfo A
  • kubeadm:主节点从未准备好

    我正在跟进一篇博文使用 kubeadm 设置 kubernetes 集群 因此 我使用桥接网络创建了一个 Virtualbox 然后只需按照说明进行操作即可 我最初只是做了kubeadm init它不起作用 master NotReady
  • Python/Tkinter:动态扩展字体大小以填充框架

    我知道您可以通过以下命令让框架小部件扩展并填充其容器中可用的所有区域 frameName pack fill both expand True 对于文本的字体大小有何作用 目前我的文本是标签小部件的属性 标签小部件的父级是frameName
  • 为什么 GCC 允许在 C++ 中使用 round(),即使带有 ansi 和 pedantic 标志?

    即使使用 ansi and pedantic flags include
  • 未设置设计密钥

    我正在开发一个 Rails 4 应用程序 使用 Active Admin gem 作为管理后端 Active Admin 反过来使用 Devise 进行用户身份验证 现在 当我尝试使用部署应用程序时capistrano在 VPS 服务器上
  • Yii 将过滤器添加到 CGridView 中的虚拟属性并使其可排序

    我有以下型号 User包含列 id user name password user type Admin包含列 id user id full name etc Editor包含 id user id full name etc 列 关系是
  • 浮动 div 而不定义 height 属性

    它看起来很简单 也许是 只是被卡住了 gt 只是为了好玩 现在没有实际需要 我懂了 div class master div class left p LEFT p div div class right p Lorem ipsum dol
  • 将列表转换为字典[重复]

    这个问题在这里已经有答案了 l a b c d e 我想将此列表转换为字典 例如 d a b c d e 所以基本上 偶数将是键 而赔率将是值 我知道我可以用 非Pythonic 的方式来做到这一点 例如带有if语句的for循环 但我相信应
  • IExtensionConfigProvider 未初始化或与 Microsoft.Azure.WebJobs v3 绑定

    我们通过与 IExtensionConfigProvider 的参数绑定在 Azure 函数 netstandard20 上的 v2 中使用依赖项注入 将 Microsoft NET Sdk Functions 从 1 0 13 升级到 1
  • tkinter:键盘中断需要一段时间

    在 Linux 上使用 Tkinter 和 Python 我试图通过使用KeyboardInterrupt例外 但是当我按下它时 有一段时间没有任何反应 最终它 接受 并退出 示例程序 import sys from Tkinter imp
  • R中的负下标错误

    我有以下代码片段 if k lt 100 k gt 0 j k seq 50 150 lt F else j k seq 100 100 lt F 并出现以下错误 j k seq 50 150 即使我已经设置了条件 如果下标可能 为什么我会
  • Cakephp Sqlserver 编码

    这让我难住了 我正在尝试为我的 Sqlserver 连接设置编码 但我尝试的所有操作都失败了 我只得到 错误 使用 Sqlserver 的数据库连接丢失或无法连接 连接 数据库服务器返回此错误 SQLSTATE IMSSP 指定的编码无效
  • 使用 PHP 操作 MySQL 中的 utf8mb4 数据

    这大概是一件很简单的事情 我发誓我一直在网上寻找答案 但还没有找到 由于我的具体情况有点不典型 我最终决定在这里提问 我在 MySQL 中有一些表用于中文程序 它需要能够支持所有可能的汉字 包括没有很好字体支持的罕见汉字 表中的示例单元格可
  • 原始 C++ 指针是第一类对象吗?

    根据维基百科 当一个对象满足以下条件时 它就是一流的 可以存储在变量和数据结构中 可以作为参数传递给子例程 可以作为子例程的结果返回 可以在运行时构造 具有内在身份 独立于任何给定名称 有人曾经告诉我 原始指针不是第一类对象 而像 std
  • 如何在 C# 中获取运行 Windows 8 的计算机的唯一标识符?

    我正在开发一个用 C 编写的 Metro 应用程序 需要一种唯一标识设备的方法 我在文档中找到了 ASHWID 它看起来很棒 建议的代码如下 HardwareToken token HardwareIdentification GetPac
  • 将 @font-face 与 ABCPDF 一起使用?或者有其他方法将字体转换为 PDF 吗?

    我们有一个大型应用程序成功使用 ABCPDF NET 和 HTML 样式文本 我们习惯于使用 Windows 中未安装但存储在文件系统其他位置的文件中的字体添加文本 我们这样做是为了每个用户都可以上传自己的字体并将其与输出一起使用 我们使用
  • 即使设置了权限且外部存储处于 MEDIA_MOUNTED 状态,也无法写入 SD 卡

    在尝试将文件写入 SD 卡时 我得到java io FileNotFoundException filename Read only file system 例外 遗憾的是 这里发布的许多解决方案都没有帮助我 我已设置权限 外部存储处于 M
  • 如何以编程方式与应用程序交互

    我可能很快就会从事一些项目 在这些项目中 我需要从文件中获取数据并以编程方式将该数据输入到另一个第三方 不是我自己的 应用程序中 一个问题 我不知道如何做到这一点 我需要输入数据 例如时间表上的时间 任何人都可以引导我朝正确的方向发展以获取
  • 如何制作完美的方形图像/按钮

    我正在为 Android 设计一个基本的数独游戏 我想要一个 4x4 的表格 其中所有单元格都是正方形 我正在尝试使用 16 个按钮TableLayout 我的方式看起来像这样 它们的形状是矩形 my xml
  • 如果文件权限大于755,如何在Perl中检查?

    对于unix文件 我想知道Group或World是否对该文件有写权限 我一直在思考这些问题 my fpath orion properties my info stat fpath my retMode info gt mode retMo