嗨,我有一些文件,我想从中删除 SELinux 上下文或 ACL(在使用时分别用“ .”或“ +”表示ls -alZ)。
我没有太多时间阅读关于如何使用chcon等的内容,所以我只想快速知道如何禁用它们。
另外,如果有人知道 SELinux/ACL Cheat-Sheet,那就太棒了。
这是一个屏幕截图:

注意权限符号后面的点:drwxr-xr-x.等。
来自 Linux 背景,我习惯于拥有一个所有者和一个拥有组的文件。可以分别为所有者、组和其他人设置访问权限,仅此而已。
现在在(基于 NT 的)Windows 上,情况有点不同,因为 Windows 使用 ACL。这意味着我可以拥有任意数量的权限列表,而不是拥有三个权限列表(所有者、组、休息)。
到目前为止,这是有道理的。但是,为什么 Windows 仍然有文件所有者的概念?在我看来,使用 ACL 似乎不再需要“文件所有者”,因为所有访问权限都可以通过 ACL 进行配置。
那么为什么现代 Windows 仍然使用文件所有权?谁拥有文件有什么不同?只要两个文件具有相同的 ACL,文件所有权就无关紧要 - 或者是吗?
最近,我不得不将 Mac 的文件系统从保留大小写更改为完全区分大小写。我通过使用 CCC 并将数据复制到另一个磁盘,然后返回到新格式化的主磁盘来做到这一点。
现在,我想在我的旧 Time Machine 磁盘上进行 Time Machine 备份,该磁盘托管在我的基于 FreeBSD 的 NAS 上,通过 AFP 导出。但是,我收到文件系统不匹配的错误,因为 Time Machine 仍然具有不区分大小写的 fs。这一次,我不能使用 CCC,因为它不支持 Time Machine 卷的文件级复制。
自然地,我直接选择了 rsync,但这会引发一个问题——如果我使用以下命令运行它:
/usr/local/bin/rsync --super -aEHAXNvx --fileflags --delete /Volumes/Time\ Machine\ Backups/ /Volumes/NewDisk/
Run Code Online (Sandbox Code Playgroud)
它一碰到Backups.backupdb/<machinename>文件夹就开始抱怨,带有failed to set permissions, operation not permitted. 这里的问题是复制 ACL,这是非常严格的:
ll -dle /Volumes/Time\ Machine\ Backups/Backups.backupdb/<machinename>/
drwxr-xr-x@ 19 root staff 646 Dec 23 09:38 /Volumes/Time Machine Backups/Backups.backupdb/<machinename>/
0: group:everyone deny add_file,delete,add_subdirectory,delete_child,writeattr,writeextattr,chown
Run Code Online (Sandbox Code Playgroud)
所以,我-A从上面的命令中删除了,rsync 现在很高兴地移动 GB 的数据。
唉,我也想保留 ACL。这有可能吗?OS X 没有 …
在 Windows 7 中是否可以限制哪些 EXE 可以访问某个文件夹?
假设我有一个文件夹 (c:\myfolder),其中包含一些只能由某个 EXE 打开的数据文件。
例如,我希望 MyApp1.EXE 能够打开 c:\myfolder 中的文件,但我不希望其他 EXE(例如记事本)能够打开该文件夹中的文件。
这可能吗?
有时,我们会遇到文件的权限与其所在文件夹不同的问题。
现在我发现有一篇知识库文章解释了这背后的原因:
默认情况下,对象从其父对象继承权限,无论是在创建时还是在将其复制或移动到其父文件夹时。当您将对象移动到同一卷上的不同文件夹时,会发生此规则的唯一例外。在这种情况下,将保留原始权限。
因此,用户将文件从一个文件夹移动到另一个文件夹,并保留了原始文件夹的权限。
我现在的问题是:为什么会存在这个异常?这背后的原因是什么?
我刚刚执行了以下命令
setfacl -m user:userXXX:r /home/userYYY/private/
Run Code Online (Sandbox Code Playgroud)
现在我明白了
$ ll /home/userYYY/private/
total 32
drwx------+ 5 userYYY quant 512 Sep 5 03:26 ./
drwxr-xr-x 41 userYYY quant 32768 Sep 5 12:49 ../
Run Code Online (Sandbox Code Playgroud)
+结果吗?userXXX类似于sudo chmod -R 777 /,但适用于 Windows 7。一位客户认为他讨厌管理员继续的提示,所以他给了自己对 Windows 7 上的 Everyone 组的完全控制权。现在,一些有趣的问题接踵而至:
CONSENT.EXE请求许可的程序在理想世界(我知道并非总是如此)中,我最喜欢的是一个脚本,它可以设置 NTFS ACL 列表中所有默认 Windows 项目的权限。除此之外,我确实理解重新安装是必要的......但是,由于“修复”安装需要管理权限,我有一种奇怪的感觉,这将是一个全新的安装。我不介意,但它可能会向客户表明他下次应该问:-P
编辑更新...
我尝试了avirk的解决方案,但这没有用。我也尝试了soandos的 running 答案icacls * /T /Q /C /RESET,但无济于事。我已经完成了修复安装,正在评估它的行为(安装更新、安装软件等)。
在 Linux/Unix 文件系统上,我理解为什么您需要父文件夹的执行权限来读取或写入文件:执行权限使您可以访问文件上的 inode,没有它,您将永远无法访问文件的内容。
但是,对于重命名文件(实际上,甚至是删除),您只需要更改列表中文件的名称,这不需要访问 inode。那么为什么重命名文件需要执行位,写权限就足够了?
这似乎与读取访问不对称:使用r--权限,您可以ls在目录上执行操作并访问该目录中的文件名列表。您不需要执行,因为您没有访问 inode。同样,使用-w-,您应该能够更改文件名列表(您也不需要访问 inode),但您不能,为什么?
我想通过 PowerShell 或 cmd 在 Windows 端实现等效的权限方面,但是我找不到正确执行此操作的解决方案。如果有人可以帮助我以正确的方式实现这一目标。
[sudo] adduser test
[sudo] gcc vuln.c -o vuln -fno-stack-protector -m32 -z execstack
Run Code Online (Sandbox Code Playgroud)
我在使其成为 Windows 风格时遇到问题
[sudo] chown root:test vuln
[sudo] chmod 550 vuln
[sudo] chmod u+s vuln
-r-sr-x--- 1 root test 7392 Dec 22 00:27 vuln
Run Code Online (Sandbox Code Playgroud) acl ×10
windows-7 ×3
linux ×2
permissions ×2
windows ×2
centos-6 ×1
cmd.exe ×1
command-line ×1
filesystems ×1
macos ×1
networking ×1
ntfs ×1
powershell ×1
rsync ×1
selinux ×1