在基于 RHEL 7.2 的系统上,我尝试将文件复制到 smb 安装位置:
cd /target
cp /tmp/foo .
此操作失败并显示以下错误消息:
cp: cannot create regular file ‘./foo’: Operation not permitted
我可以看到创建了一个 0 字节大小的文件。
当我cat
或echo Thisisfoobar>foo
这个工作正常并且文件包含我想要的内容时。但更奇怪的是,当我这样做时它也有效:
cd /target
echo Thisisfoobar>foo
cp /tmp/foo .
我完全不知道为什么这行不通。我已经对两种变体运行了strace
(一种foo
不存在,一种foo
存在并被覆盖)并比较了输出,但没有发现相关差异。唯一的区别是句柄和文件大小,如下所示:
stat("./foo", {st_mode=S_IFREG|0700, st_size=12, ...}) = 0
我们在这台机器上不使用selinux。在运行上面提到的命令之前,我需要执行 a sudo adm
(这实际上给了我类似 root 的权限,这是 CyberArk 施加的限制),并从这个 adm shell 中我做了一个简短的su tu
(或者su - tu
,没有任何区别)说话of smb:tu
是有权在 smb 安装的设备上写入的组的成员,tu
是 Active Directory 的成员。
ls -laZ /tmp/foo
产生以下信息:
-rwx------ tu user ? foo
我dmesg
在运行命令时检查了输出,但没有附加任何条目。