编辑:简短的问题是:我如何放弃对我的(非特权)用户当前拥有的文件的访问权限。我希望无法以任何方式访问它们。请参阅帖子的其余部分以获取更详细的描述。
对于某些备份,我想将文件复制到远程位置。我希望这些文件是安全的,即使在本地计算机受到威胁的情况下也是如此。
最初,我的计划是chown
远程文件一写入就立即root。这将不再允许从本地计算机进行访问,但在发生灾难时将允许我从远程计算机恢复(当然假设一台计算机没有被破坏)。然而,chown
出于安全原因,Linux 中不允许访问另一个用户。是否有其他方法可以放弃对您当前拥有的文件的访问权限?
远程计算机是运行 Raspbian Stretch 的树莓派,本地计算机运行 FreeNAS 11.0-U4。本地计算机可以ssh
作为非特权用户访问远程计算机。我希望该用户在远程计算机上的权限尽可能受到限制。
答案1
在具有磁盘配额的多用户系统上,允许非特权用户将文件赠送给其他用户将允许用户滥用彼此的磁盘配额。
对于用户 A 来说,创建一个只能由用户 A 访问的目录,然后用大文件填充该目录并将它们全部交给用户 B 是很简单的。现在,用户 B 的磁盘配额已被用户 B 无法访问的文件耗尽。 。
用户泄露文件的能力(chown() 的 SysV 语义)曾经会导致多种安全问题,现在在文献中被视为破坏行为。例如,如果您不小心允许其他用户写入您的主目录,同一系统上的另一个用户可能想给您一些文件/目录。比如说<your_homedir>/.ssh/authorized_keys
。或者<your_homedir>/.rhosts
在过去的糟糕日子里。其中每一个都可以用来允许访问您的帐户,并且您很难证明不是您本人。
在 Linux 系统上,您可以使用sudo
允许设置文件的“不可变”属性,但不能使用命令来清除它。这将是示例配置行/etc/sudoers
:
Octaviour ALL=(root) NOPASSWD: /usr/bin/chattr -R +i /your/backup/directory
然后,您可以使用常规用户帐户运行sudo chattr -R +i /your/backup/directory
但不能运行相应的命令。chattr -R -i
不可变位通常只能由 root 设置或清除。
(如果使用 Linux 功能,则具有 CAP_LINUX_IMMUTABLE 功能的进程可以做到这一点。但对于普通用户来说,拥有该功能是非常不寻常的,而且功能本身的使用也相当罕见。)