當前位置: 首頁>>技術教程>>正文


permissions – 如何保護文件?

,

問題描述

如何使包含關鍵數據的某些文件受到保護?例如,假設我有一些重要的文件,是否有任何方法或策略可以使這些文件在Ubuntu上受到更多保護?我什至希望有人試圖打開某些文件時要求輸入密碼。就安全策略而言,這會影響Ubuntu版本嗎?我可以在外部使用任何加密算法嗎?問候。

最佳方案

最好的方法是chattr +i {file}。這將設置不可變屬性,然後任何人(包括root)都無法修改,刪除,重命名文件或創建硬鏈接。

唯一可以編輯文件的人是root。 (S)他必須通過刪除不可更改的位chattr -i {file}來取消此操作,然後可以對文件執行任何操作。再次設置+ i會鎖定文件,無法進行任何修改。

但是,這不會阻止格式化存儲文件的分區。這樣可以防止文件被盜。


如果需要,您甚至可以在完整的安裝點上執行此操作:

chattr +i -R /discworld

會使整個”discworld”及其中的任何東西都不可變(使用chattr -i -R /discworld可以將其撤消;))


次佳方案

如果不執行任何特殊操作,則可以通過刪除除所有者以外的所有人的權限來使他人難以閱讀,更改或刪除文件。讓root成為文件的所有者,並將其放在隻有root有權訪問的目錄中。

sudo mkdir /home/secret     #this directory will be owned by root, no need to chown
sudo chmod 700 /home/secret

將文件移到(sudo mv file /home/secret)並執行

sudo chown root: /home/secret/file
sudo chmod 600 /home/secret/file

chmodchown帶有多個參數:chmod 600 file1 file2chmod 600 file*

除此之外,請使用加密…

第三種方案

保護文檔的一種非常安全的方法是加密(前提是您銷毀了原始文檔並正確存儲了加密版本)。

可以繞開權限(如其他答案所建議)(請參閱this)。

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

(有關圖形界麵方法,請參見此答案的結尾)

確保已安裝gpg

例如,要加密名為Important_File.txt的文件,請使用

$ gpg -c Important_File.txt

現在輸入密碼(稍後將在需要時使用該密碼)。

現在,您將獲得一個帶有原始名稱和.gpg擴展名的文件,例如Important_File.txt.gpg

刪除原始文件,並保留.gpg版本。如果不使用安全的shred實用程序(在SSD驅動器或SD卡上仍然無法使用),從磁盤上獲取原始文件可能很容易:

$ shred Important_File.txt

現在我們隻有Important_File.txt.gpg

每當您需要閱讀時,隻需

$ gpg Important_File.txt.gpg

然後輸入您在第一個命令中設置的密碼。您將獲得原始的Important_File.txt

NOTE: This will only protect the contents of the encrypted .gpg file from being read by anyone (using encryption), but anyone can remove, copy or move it! For basic protection from that, use the permission methods of the other answers on the encrypted .gpg file.

圖形界麵(GUI)方法

安裝Seahorse應用程序。

然後,您可以從“文件”應用程序執行此操作:

第四種方案

隻需將非常嚴格的權限設置為600,以便隻有所有者才能讀取和寫入它(如果需要執行權限,則為700)。

您也可以以圖形方式進行操作-隻需右鍵單擊文件,選擇Properties > Permissions > Set,然後將除owner以外的所有字段都設置為空。

以圖片為例:

第五種方案

如果您是係統上的單個用戶,並且沒有人沒有您的許可就無法合理地訪問您的計算機,那麽按照Zanna’s answer的說明,您可以使用此命令來阻止訪問:

sudo chown root:root /my/secret/file.txt
sudo chmod 600 /my/secret/file.txt

在這種情況下,該文件隻能由root用戶讀取和/或寫入。如果沒有人在未經您許可的情況下無法引導您的計算機或提起硬盤驅動器,則將其視為”secure enough”。在這種情況下,我們使用的是root用戶,因為root用戶始終可以讀取文件,即使它們沒有權限。通過使用root用戶,我們強製隻有一個用戶可以訪問它。

如果要以任何方式,形狀或形式將文件標記為不可更改,則可以使用i屬性將文件標記為不可變。在這種情況下,文件的權限將被鎖定,並且在任何情況下都不得更改。因此,您可以執行以下命令以使文件不可更改,並保護其免受刪除和權限更改的影響:

sudo chattr +i /my/secret/file.txt

如果要更改它,請將+i替換為-i,以臨時解鎖文件。有關更多in-depth的視圖,請參見Rinzwind’s answer

現在,如果其他人可以訪問您的計算機(遠程sudo訪問或任何形式的物理訪問),這將立即崩潰。攻擊者可以使用root來讀取文件,插入實時USB或僅拉動硬盤驅動器。

因此,我們需要加密文件。我個人更喜歡使用“文件容器”,以便您可以在其中粘貼更多內容並根據需要進行擴展。仍建議使用chattr +i,以免意外刪除(或更改)文件。最後,如果您使用的是加密映像,則可以設置權限,以使其他人在裝入磁盤時可以訪問非常有限的文件子集,從而使其非常適合服務器。該指南最初是here,現在已在此處改編使用。

首先,您要創建一個磁盤映像以供使用。在此示例中,我們將其設為5 GB。

dd if=/dev/zero bs=1M count=5000 of=~/NSA-Data-Dump-20161012.img

然後,我們需要對您的圖像進行加密:

sudo cryptsetup luksFormat ~/NSA-Data-Dump-20161012.img

您可以在此處選擇輸入首選的加密密碼。完成此操作後,我們需要公開裸塊設備:

sudo cryptsetup luksOpen ~/NSA-Data-Dump-20161012.img my-secret-device

現在,我們有一個解密的文件容器,但是沒有文件係統,它就像沒用一樣好。讓我們修複一下:

sudo mkfs.ext4 /dev/mapper/my-secret-device

現在,我們需要一個位置來安裝新分區。在這種情況下,我將其放置在/crypt處。我的用戶為1000,因此,我將設置分區以僅允許我(和root)對其進行讀取/寫入。

sudo mkdir /crypt
sudo mount /dev/mapper/my-secret-device /crypt -o umask=0700,gid=1000,uid=1000

現在,我可以使用文件工具導航到/crypt,並且可以在其中存儲所有敏感文件。完成後,需要卸載並分區re-encrypt。

sudo umount /crypt
sudo cryptsetup luksClose my-secret-device

現在,我將在映像文件上設置適當的分區,以使隻有我和root可以訪問它,並且不能再對其進行更改。

chmod 400 ~/NSA-Data-Dump-20161012.img
sudo chattr +i ~/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

我的加密數據將在/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

現在,您在這裏需要小心,因為如果用戶在係統上具有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
    
  2. 填充保管庫:

    sudo mkdir /crypt
    sudo mount /dev/mapper/my-secret-device /crypt -o umask=0700,gid=1000,uid=1000
    
  3. 鎖定保管庫:

    sudo umount /crypt
    sudo cryptsetup luksClose my-secret-device
    
  4. 凍結庫:

    chmod 400 ~/NSA-Data-Dump-20161012.img
    sudo chattr +i ~/NSA-Data-Dump-20161012.img
    
  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
    

第六種方案

您可以使用encfs for directory encryption

基本上,您需要創建2個目錄,其中1個目錄將存儲加密數據,而1個目錄將訪問該數據:

mkdir ~/.encrypted
mkdir ~/private

然後執行(您每次要對目錄’mount’都需要執行此行):

encfs ~/.encrypted/ ~/private/

除非您對此有更多了解,否則隻需按ENTER即可進行標準設置(僅在第一次時提出)。

然後輸入您的密碼,它將被掛載。

隻有您的用戶可以安全地在~/private/中訪問您的數據(您幾乎可以忽略~/.encrypted)

要卸載它:

sudo umount ~/private/

要麽

fusermount -u ~/private/

就那麽簡單。

第七種方案

您可以使用cryptkeeper加密數據,這確實是一個非常好的應用程序,可以為您的文件提供安全性。您可以使用以下方法安裝它:

sudo apt-get update
sudo apt-get install cryptkeeper

我通常建議您以.開頭的名稱加密文件夾,因為將其放在文件名之前會隱藏它。這是一個小技巧,但是可以用。

要取消隱藏文件夾,請使用Ctrl + h或vise-versa。

參考資料

本文由Ubuntu問答整理, 博文地址: https://ubuntuqa.com/zh-tw/article/10598.html,未經允許,請勿轉載。