如何使文件受到保护?

Ava*_*eka 24 permissions files

如何保护一些包含关键数据的文件?例如,假设我有一些重要的文件,是否有任何方法或策略可以使这些文件在 Ubuntu 上受到更多保护?我什至想让一些文件在有人试图打开它时要求输入密码。它在安全策略方面会影响 Ubuntu 的版本吗?我可以在外部使用任何加密算法吗?问候。

Rin*_*ind 32

你最好的方法是chattr +i {file}。这设置了不可变属性,然后文件不能被修改、删除、重命名或由任何人(包括 root)创建的硬链接。

唯一可以编辑文件的人是 root。(S) 他必须通过删除不可变位来撤消此操作:chattr -i {file}然后可以对文件执行任何操作。再次设置 +i 会锁定文件,防止对其进行任何修改。

这不会阻止格式化存储文件的分区。它将防止文件被盗。


如果需要,您甚至可以在完整的挂载点上执行此操作:

chattr +i -R /discworld
Run Code Online (Sandbox Code Playgroud)

将使整个“光盘世界”及其中的任何内容不可变(chattr -i -R /discworld撤消它;))



Zan*_*nna 18

无需执行任何特殊操作,您就可以通过删除除所有者之外的所有人的权限来使其他人难以读取、更改或删除文件。使 root 成为文件的所有者并将其放在只有 root 可以访问的目录中...

sudo mkdir /home/secret     #this directory will be owned by root, no need to chown
sudo chmod 700 /home/secret
Run Code Online (Sandbox Code Playgroud)

移动 ( sudo mv file /home/secret) 你的文件在那里并做

sudo chown root: /home/secret/file
sudo chmod 600 /home/secret/file
Run Code Online (Sandbox Code Playgroud)

chmodchown采用多个参数:chmod 600 file1 file2chmod 600 file*

除此之外,使用加密...

  • 如果您使用字符权限而不是八进制,也许更容易理解。因此,例如“chmod go-rwx”可以删除组和其他人的读取、写入和执行权限。请参阅 chmod 手册页。 (3认同)

小智 12

保护文档的一种非常安全的方法是加密(前提是您销毁原始文档并正确存储加密版本)。

可以绕过权限(如其他答案所建议的)(请参阅)。

因此,我建议您正确加密文件。方法如下:

(有关图形界面方法,请参阅此答案的结尾)

确保您已gpg安装。

例如,要加密名为 的文件Important_File.txt,请使用

$ gpg -c Important_File.txt
Run Code Online (Sandbox Code Playgroud)

现在输入密码(稍后需要阅读时会用到)。

您现在将获得一个带有原始名称和.gpg扩展名的文件,例如Important_File.txt.gpg.

删除原始文件,并保留.gpg版本。如果您不使用安全shred实用程序(它仍然无法在 SSD 驱动器或 SD 卡上运行),可能很容易从磁盘获取原始文件:

$ shred Important_File.txt
Run Code Online (Sandbox Code Playgroud)

现在我们只有Important_File.txt.gpg我们。

每当您需要阅读时,只需

$ gpg Important_File.txt.gpg
Run Code Online (Sandbox Code Playgroud)

然后输入您在第一个命令中设置的密码。您将获得原始Important_File.txt.

注意:这只会保护加密文件的内容.gpg不被任何人读取(使用加密),但任何人都可以删除、复制或移动它!对于基本保护,请对加密.gpg文件使用其他答案的权限方法。

图形界面 (GUI) 方法

安装 Seahorse 应用程序。

然后,您可以从“文件”应用程序执行此操作:

GNOME 文件加密的屏幕截图


dad*_*x86 9

只需设置一个非常严格的权限600,以便只有所有者可以读取和写入它(如果您需要执行权限,那就是700)。

你也可以做到这一点图形-只需右键点击该文件,选择Properties > Permissions > Set并设置所有,但owner领域不了了之。

以图片为例:

图片


Kaz*_*lfe 8

如果您是系统上的单个用户,并且没有您的权限,没有人可以合理地访问您的计算机,那么您可以使用此命令阻止访问,根据Zanna 的回答

sudo chown root:root /my/secret/file.txt
sudo chmod 600 /my/secret/file.txt
Run Code Online (Sandbox Code Playgroud)

在这种情况下,文件只能由root用户读取和/或写入。如果没有人可以未经您的许可启动您的计算机或提起您的硬盘,则这被认为是“足够安全”。root在这种情况下我们使用用户,因为root用户总是可以读取文件,即使他们没有权限。通过使用 root 用户,我们强制只有一个用户可以访问它。

如果您想以任何方式、形状或形式i将文件标记为不可更改,您可以使用该属性将文件标记为immutable。在这种情况下,文件的权限被锁定并且在任何情况下都不能更改。因此,您可以执行以下命令使文件不可更改,并保护其不被删除和权限更改:

sudo chattr +i /my/secret/file.txt
Run Code Online (Sandbox Code Playgroud)

如果要更改它,请将 替换为+ia-i以临时解锁文件。有关更深入的视图,请参阅Rinzwind 的回答

现在,如果其他人可以访问您的计算机(远程sudo访问或任何形式的物理访问),这会立即崩溃。攻击者可以使用root权力来读取您的文件、插入 Live USB 或仅拔出您的硬盘。

因此,我们需要对文件进行加密。我个人更喜欢使用“文件容器”,这样您就可以将更多内容放入其中并根据需要增长。chattr +i仍然建议这样做,以免文件被意外删除(或更改)。最后,如果您使用的是加密映像,您可以设置权限,让其他人在挂载磁盘时访问非常有限的文件子集,这对服务器来说非常有用。本指南最初在此处提供,并经过改编以供此处使用。

首先,您要创建一个磁盘映像供您使用。在这个例子中,我们将使它成为 5 GB。

dd if=/dev/zero bs=1M count=5000 of=~/NSA-Data-Dump-20161012.img
Run Code Online (Sandbox Code Playgroud)

然后,我们需要对您的图像进行加密:

sudo cryptsetup luksFormat ~/NSA-Data-Dump-20161012.img
Run Code Online (Sandbox Code Playgroud)

您可以在此处选择输入首选加密密码。完成后,我们需要公开原始块设备:

sudo cryptsetup luksOpen ~/NSA-Data-Dump-20161012.img my-secret-device
Run Code Online (Sandbox Code Playgroud)

现在,我们有一个解密的文件容器,但没有文件系统,它和没用一样好。让我们解决这个问题:

sudo mkfs.ext4 /dev/mapper/my-secret-device
Run Code Online (Sandbox Code Playgroud)

现在,我们需要一个地方来挂载我们的新分区。在这种情况下,我会将它放在/crypt. 我是用户 1000,所以,我将我的分区设置为只允许我(和 root)从中读取/写入。

sudo mkdir /crypt
sudo mount /dev/mapper/my-secret-device /crypt -o umask=0700,gid=1000,uid=1000
Run Code Online (Sandbox Code Playgroud)

现在,我可以使用我的文件工具导航到那里,/crypt并且可以将所有敏感文件存储在那里。完成后,我需要卸载并重新加密我的分区。

sudo umount /crypt
sudo cryptsetup luksClose my-secret-device
Run Code Online (Sandbox Code Playgroud)

现在,我将在我的映像文件上设置适当的分区,以便只有我和 root 可以访问它,并且不能再更改它。

chmod 400 ~/NSA-Data-Dump-20161012.img
sudo chattr +i ~/NSA-Data-Dump-20161012.img
Run Code Online (Sandbox Code Playgroud)

每当我想打开这个文件进行阅读时,我只需要运行这两个命令,我可以很容易地别名:

sudo cryptsetup luksOpen ~/NSA-Data-Dump-20161012.img my-secret-device
sudo mount /dev/mapper/my-secret-device /crypt -o umask=0700,gid=1000,uid=1000,ro
Run Code Online (Sandbox Code Playgroud)

我的加密数据将在以下位置可用,/crypt它将保持只读状态,并且只能由我和 root 访问。

如果我想更改文件,我需要更改权限然后挂载:

sudo chattr -i ~/NSA-Data-Dump-20161012.img
chmod 700 ~/NSA-Data-Dump-20161012.img
sudo cryptsetup luksOpen ~/NSA-Data-Dump-20161012.img my-secret-device
sudo mount /dev/mapper/my-secret-device /crypt -o umask=0700,gid=1000,uid=1000,ro
Run Code Online (Sandbox Code Playgroud)

现在,您需要小心,因为如果用户在其系统上拥有 root 用户,他们可以修改/破坏您的加密分区,使其变得无用。他们还可以从驱动器中窃取数据,但前提是它是打开的。但是,如果您没有明确打开数据,他们就无法窃取数据,甚至无法看到数据的存在。因此,您有责任确保您的系统足够安全,在您打开加密卷时没有任何 root 用户在线。


特尔;博士

  1. 制作保险库:

    dd if=/dev/zero bs=1M count=5000 of=~/NSA-Data-Dump-20161012.img
    sudo cryptsetup luksOpen ~/NSA-Data-Dump-20161012.img my-secret-device
    sudo mkfs.ext4 /dev/mapper/my-secret-device
    
    Run Code Online (Sandbox Code Playgroud)
  2. 填充金库:

    sudo mkdir /crypt
    sudo mount /dev/mapper/my-secret-device /crypt -o umask=0700,gid=1000,uid=1000
    
    Run Code Online (Sandbox Code Playgroud)
  3. 锁定金库:

    sudo umount /crypt
    sudo cryptsetup luksClose my-secret-device
    
    Run Code Online (Sandbox Code Playgroud)
  4. 冻结金库:

    chmod 400 ~/NSA-Data-Dump-20161012.img
    sudo chattr +i ~/NSA-Data-Dump-20161012.img
    
    Run Code Online (Sandbox Code Playgroud)
  5. 打开金库:

    sudo cryptsetup luksOpen ~/NSA-Data-Dump-20161012.img my-secret-device
    sudo mount /dev/mapper/my-secret-device /crypt -o umask=0700,gid=1000,uid=1000,ro
    
    Run Code Online (Sandbox Code Playgroud)


lep*_*epe 7

您可以使用encfs 进行目录加密

基本上,您需要创建 2 个目录,1 个用于存储加密数据,1 个用于访问该数据:

mkdir ~/.encrypted
mkdir ~/private
Run Code Online (Sandbox Code Playgroud)

然后执行(每次要“挂载”目录时都需要执行此行):

encfs ~/.encrypted/ ~/private/
Run Code Online (Sandbox Code Playgroud)

除非您对此了解更多,否则只需按ENTER标准设置即可(仅第一次询问)。

然后输入您的密码,它将被安装。

您的数据只能由您的用户安全访问~/private/(您几乎可以忽略~/.encrypted

要卸载它:

sudo umount ~/private/
Run Code Online (Sandbox Code Playgroud)

或者

fusermount -u ~/private/
Run Code Online (Sandbox Code Playgroud)

就那么简单。