ACL 和标准文件权限似乎是同步的:
$ getfacl test.cpp
# file: test.cpp
# owner: scdmb
# group: scdmb
user::rw-
group::rw-
other::r--
$ ls -l test.cpp
-rw-rw-r-- 2 scdmb scdmb 173 Jan 1 1970 test.cpp
Run Code Online (Sandbox Code Playgroud)
但是,正如我所读到的,inode 中有两个位置可以保存文件权限(i_mode 字段)以及放置 ACL 的这些扩展文件属性。那么当我访问文件时,使用哪些文件权限 - 标准还是 ACL?或者,这可能是以不同方式呈现的同一事物?
我已将一些文件从 XP 计算机复制到运行 Windows 7 的 PC。我以标记为管理员的用户身份登录。
当我尝试访问该目录时,我被告知我没有权限。可以理解,但奇怪的是我作为管理员无权获得文件的所有权。我无权在 ACL 中添加用户或取得所有权,确实这些选项是灰色的。
为什么作为管理员用户我不能拥有文件的所有权?
本地 Windows 系统上的快速场景。
E:
使用 NTFS 格式化的驱动器具有以下布局和权限:
E:\ (JohnDoe)
E:\folder (Administrator)
E:\folder\subfolder (JohnDoe)
Run Code Online (Sandbox Code Playgroud)
JohnDoe
具有对根目录的读/写访问权限。JohnDoe
具有读/写访问权限 subfolder
JohnDoe
也不要访问folder
JohnDoe
确实不具备改变权限的能力。由于JohnDoe
无法访问folder
,因此无法列出内容,他必须E:\folder\subfolder
手动输入路径。没有“可点击”的方式从E:\
到subfolder
。
问题是:有没有办法JohnDoe
发现可访问的存在和路径subfolder
,而无法列出其父的内容folder
?假设他没有被告知subfolder
的姓名,并且权限与上述内容相同。
对于这个问题,忽略暴力攻击猜测subfolder
名字的可能性。只允许使用非蛮力方法。
标题几乎说明了我想做什么。
我有 Windows 7 和 Windows 8 的双启动设置。有没有更简单的方法来做到这一点?我不想要takeown
这些文件,只需向 ACL 添加一个(或两个)用户即可。
有没有更简单的方法来做到这一点?
理想情况下,我希望能够从编辑权限表单的高级对话框中选择用户,但我知道这可能是不可能的。
更新:如果答案是使用,icalcs
那么请解释我如何添加用户,因为它不是 Windows 7 用户(即我不明白它如何知道我在说什么用户)。
我想使用 Python 模块Ablib与 GPIO 引脚进行交互。我想在没有 root 权限的情况下执行此操作。我怎样才能做到这一点?
当我创建一个ablib.Pin
实例时,模块会打开/sys/class/gpio/export
并将引脚编号写入其中。最初这会引发 IOErro:
IOError: [Errno 13] Permission denied: '/sys/class/gpio/export'
Run Code Online (Sandbox Code Playgroud)
这可以通过 轻松解决chmod
。现在,当我创建一个ablib.Pin
实例时,我在另一个文件上收到了 IOError:
IOError: [Errno 13] Permission denied: '/sys/class/gpio/pioC16/direction'
Run Code Online (Sandbox Code Playgroud)
ls -la
关于/sys/class/gpio
退货:
--w------- 1 my_user my_user 4096 Jan 1 01:42 export
lrwxrwxrwx 1 root root 0 Jan 1 01:42 pioC16 -> ../../devices/ahb.0/apb.1/pinctrl.2/fffff800.gpio/gpio/pioC16
Run Code Online (Sandbox Code Playgroud)
写入 115 时/sys/class/gpio/export
,内核会创建符号链接/sys/class/pioC16
。问题root
是这个链接的所有者。我希望新创建的文件归my_user
. 但我不知道如何做到这一点。我试过chmod
并且chown
:
$ chown -R …
Run Code Online (Sandbox Code Playgroud) 这是一个 freenas 盒子(FreeNAS-9.3-STABLE-201506292130)。
在基于 debian 的 linux 中,文件/目录的默认权限通常为 644/755(现在是 664/775?)。据我了解,发生这种情况是因为 umask 设置为 022 或 002,这控制着创建新文件的默认权限。但是在 freenas(windows acl 样式权限)中,默认文件创建仅继承包含目录的权限。我从 setfacl 手册页看到
有一个继承标志。但是,我更多的是寻找默认而不是继承。有没有办法改变这一点,让创建行为更接近基于 debian 的系统中所做的?也就是说,我希望文件是 644,目录是 755。我不希望新创建的文件只获得 755 权限,因为目录作为这些权限。
我一直在绞尽脑汁试图让一些事情发挥作用。我目前正在使用 NFSv4 ACL,当我尝试使用 POSIX ACL 时出现“品牌不匹配”错误,所以我一直坚持使用 windows 风格、freenas、freebsd、NFSv4、setfacl/getfacl 命令,我无法从我尝试的任何事情中获得上述行为。
$ mkdir test
$ cd test
$ ls -lat
drwxr-xr-x+ 2 user user 2 Aug 1 12:40 .
drwxr-xr-x+ 67 user user 67 Aug 1 12:40 ..
$ touch testfile
$ ls -lat
drwxr-xr-x+ 2 user user 3 Aug 1 12:40 . …
Run Code Online (Sandbox Code Playgroud) 我正在尝试将 uralacl 提供给运行此命令的用户 ad\user:
netsh http add urlacl url=http://+:443/ user=ad\user
Run Code Online (Sandbox Code Playgroud)
但收到此错误:Url 保留添加失败,错误:183 当该文件已存在时无法创建文件。
然后我运行这个命令,看看它是否已经被使用:
netsh http show url
Run Code Online (Sandbox Code Playgroud)
我看到它已经被保留了,可能是由 IIS 保留的:
保留 URL:https://+:443/sra_ {BA195980-CD49-458b-9E23-C84EE0A DCD75}/ 用户:NT SERVICE\SstpSvc 监听:是 代表:是 用户:BUILTIN\Administrators 监听:否 代表:否 用户: NT AUTHORITY\SYSTEM 听:是 委托:是 SDDL:D:(A;;GA;;;S-1-5-80-3435701886-3791383489-3228296122 -2938884314);(A); (A;;GA;;;SY)
我不想将我的用户添加到管理员。
所以我的问题是:我可以以某种方式将我的用户添加到这个 urlacl 而不删除然后添加它吗?所以结果 urlacl 是相同的,但包括我的用户。
我已成功设置 NFSv4 客户端和服务器,大致遵循设置 NFS HOWTO 中的指南。两者都运行 Ubuntu Linux 14.04。这是一个没有复杂认证的小型测试环境;两台服务器只是使用相同的密码文件。一切似乎都在正常工作;文件在客户端可见,并且权限/用户 ID 正确。
现在我想使用 NFSv4 ACL 来控制对 NFSv4 服务器上文件的访问。我在客户端上安装了必需的命令行工具,并且能够看到类似于 NFSv4 ACL 的内容:
$ nfs4_getfacl .
A::OWNER@:rwaDxtTcCy
A::GROUP@:rxtcy
A::EVERYONE@:rxtcy
Run Code Online (Sandbox Code Playgroud)
但是,虽然我可以很好地获取 ACL 列表,但我无法设置任何 ACL。每次尝试都会导致Invalid argument
错误setxattr
。
$ nfs4_setfacl -a A::OWNER@:rxtncy .
Failed setxattr operation: Invalid argument
Run Code Online (Sandbox Code Playgroud)
我使用 strace 来查看发生了什么。根据我能够找到的稀疏文档,NFSv4 ACL 作为二进制 XDR 数据存储system.nfs4_acl
在文件上调用的扩展属性中。果然,这就是正在发生的事情;setxatt
正在返回EINVAL
。
getxattr("/primary/home/rstudiouser", "system.nfs4_acl", 0x0, 0) = 80
getxattr("/primary/home/rstudiouser", "system.nfs4_acl", "\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16\x01\xe7\x00\x00\x00\x06OWNER@\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\xa1\x00\x00\x00\x06GROUP@\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\xa1\x00\x00\x00\x09EVERYONE@\x00\x00", 80) = 80
setxattr("/primary/home/rstudiouser", "system.nfs4_acl", "\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\xa9\x00\x00\x00\x06OWNER@\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16\x01\xe7\x00\x00\x00\x06OWNER@\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\xa1\x00\x00\x00\x06GROUP@\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\xa1\x00\x00\x00\x09EVERYONE@\x00\x00", 104, XATTR_REPLACE) = -1 EINVAL …
Run Code Online (Sandbox Code Playgroud) 我正在检查该文件夹的安全权限C:\Windows\System32\Tasks
,发现 Authenticated Users 组具有特殊权限(请注意,它没有写入权限):
我进入“高级”选项卡,基本视图是(注意它没有读取权限):
但是当我点击“显示高级权限”时,它显示了额外的“读取权限”:
为什么同一个文件夹在三个视图中显示不同的内容?经过身份验证的用户组对此文件夹的实际访问权限是什么?
我一直在外部驱动器上存储我的 Time Machine 备份。注意到空间越来越小,我在 Finder 中查看了该外部驱动器,选择了一堆文件夹并将它们移至废纸篓。
我现在意识到这对我来说很愚蠢,原因有很多:
那么,有没有人对如何最好地处理这个问题有见解或建议?
具体来说,我想知道:
在此先感谢你们提供的任何帮助。
acl ×10
permissions ×6
linux ×3
windows ×2
windows-7 ×2
freebsd ×1
freenas ×1
macos ×1
netsh ×1
nfs ×1
ntfs ×1
security ×1
time-machine ×1
trash ×1
ubuntu ×1
windows-10 ×1
windows-8 ×1
windows-xp ×1