「www/website1」的擁有者和群組是 root:www-data,我可以以 root 或 sudo 使用者身分修改其內容或配置。
但現在,我想創建另一個名為 website2 的網站(在「www」目錄下),需要將其訪問權限授予我的一個朋友(這樣他就可以輕鬆地為我配置這個網站)。但即使使用 sudo,他也不應該能夠修改甚至查看我的作業系統中的任何其他目錄。
為此,我可以在 Ubuntu 作業系統中建立一個新用戶,並為他建立一個 ftp 登入 id/pw。但我看到/發現,除了 777 訪問該網站2之外,他還自動獲得了對完整根資料夾及其所有子資料夾的讀取存取權。
有沒有一種簡短的方法來控制這個,以便他只能看到所需的 1 個(或 2 個資料夾),但不能超過指定的資料夾?另外,我不想一一修改完整作業系統的所有其他資料夾的屬性。謝謝。
答案1
www-data
這裡的關鍵是:那就是群體。您可以將使用者新增至群組中,以便他們可以根據群組權限存取檔案和目錄。
命令是:
usermod -a -G www-data {user2}
然後,{user2} 將能夠更改連接到該組的文件(除了他可以更改他自己擁有的文件之外)。
如果需要,您甚至可以建立一個新群組,將該群組連接到 2 個用戶,並將 user2 限制為專門連接到該群組的那些檔案。 Apache 使用 www-data 作為用戶,但該用戶也可以擁有多個 www-data 群組。
我看到/發現,除了 777 訪問該網站2之外,他還自動獲得了對完整根資料夾及其所有子資料夾的讀取存取權。
chmod 777 永遠不是答案,除非您還包含黏滯位。
答案2
使用以下命令:
setfacl -R -m user:{user2}:rwX www/website2
這應該讓使用者 {user2} 能夠完全存取 www/website2 以及該目錄中的所有內容。
編輯:我剛剛注意到您的問題是 {user2} 對 www/website2 之外的其他目錄具有讀取權限。預設情況下,這些目錄通常會啟用“其他”的讀取存取權限,即。對於任何用戶 - 這就是為什麼 {user2} 可以讀取它們。如果不刪除此存取權限,您將無法阻止 {user2} 查看它們。唯一的方法是 - 正如我在您的問題下的評論中所述 - 將 {user2} 鎖定在 FTP chroot 監獄中,以便 www/website2 將成為該用戶的根目錄。檢查您的 FTP 伺服器是否支援此功能。