Linux

如何允許非root使用者訪問根目錄?

  • March 10, 2022

我想通過不允許 root 使用者登錄來保護我的 linux 伺服器。為此,我創建了另一個使用者:

useradd username
mkdir /home/username/
mkdir /home/username/.ssh
chmod 700 /home/username/..shh
chown username:username /home/username -R
passwd username

當我使用新使用者登錄時,根目錄是/home/username. 這是此時的正常行為。但總的來說,我需要訪問不同的目錄:/root/exampledirectory/. 此訪問被拒絕。

如何配置使用者username可以訪問的 ssh/root/exampledirectory並將此目錄設置為使用 ssh 登錄時的起點?

chown username:username /root/exampledirectory -R不管用。起始目錄始終是home/username,我無權訪問其他目錄。

我怎麼能處理這個?

我想有更好的方法來處理你正在做的事情。允許訪問我的根目錄時我會小心,但這是一種方法:

為了能夠在您的使用者的根目錄下訪問該目錄,您將需要目錄的權限一直到範例目錄。我做了一個例子來檢查一下。我認為一個很好的方法是創建一個新組,也許稱之為根遍歷:sudo groupadd root-traverse

之後將您的使用者添加到該組:sudo usermod -aG root-traverse your-username. 這將使您的使用者可以訪問任何root-traverse有權訪問的內容。不要忘記註銷並重新登錄以使組生效,或者執行su your-username然後檢查id您現在是否在組中root-traverse

在此之後,您將希望將該組添加root-traverse到您的根目錄權限,我更喜歡將其作為 ACL 執行(如果您必須這樣做的話)。這是一種訪問更細粒度權限的方法。sudo setfacl -m g:root-traverse:rx /root. 這將只授予該組足夠的權限以進入根目錄並列出其中的文件/文件夾。就安全性而言,我仍然不喜歡這個,但它就是這樣。

幾乎完成了,現在對於您要訪問的目錄:/root/exampledirectory 您需要sudo chown -R root-traverse: /root/exampledirectorysudo chmod -R 770 /root/exampledirectory

現在您可以將目錄更改為該目錄,還可以在其中添加和編輯文件!要在此處啟動 ssh 會話,您可以將腳本保存到您的 /home/your-username/bin 或您希望保留的任何位置。vim ssh-script.sh

#!/bin/bash

# Start ssh session in preferred directory
ssh -t xxx.xxx.xxx.xxx "cd /root/exampledirectory ; bash --login"

我相信這應該可以解決問題。不要忘記chmod +x ssh-script.sh在您創建的腳本上使其可執行。然後執行你的東西,./ssh-script.sh或者你可以把它放在你的路徑中的某個地方並像普通命令一樣執行它ssh-script。祝你好運!

編輯:經過一番思考,您可以使用綁定掛載將該範例目錄掛載到您的主目錄中,然後從那裡設置 ACL 權限。那時您不會授予對根目錄的任何訪問權限。

引用自:https://unix.stackexchange.com/questions/693898