/var/www 目錄中 Apache 的特定使用者帳戶
我會盡我所能解釋。在我以前的伺服器上,我的朋友設置了一個名為 webslave 的使用者。
這個使用者的主目錄是 /var/www。當我使用 FISH 協議傳輸文件(使用 Krusader)時,使用者以 webslave@host 身份登錄。
例如,當此使用者進行更改時,該組始終是完整的 www-data。
在我的新伺服器上,我使用我的使用者名 name@host,並且這些文件通常歸我和我的團隊所有。
我想添加一個如上所述的使用者,該使用者具有 www-data 作為它的主要組,並且在 /var/www 之外沒有訪問權限。
只是想確保我以正確的方式做到這一點。
很高興澄清-感謝所有幫助-提前致謝!
您不需要新使用者,只需確保該組始終是 www-data。您對實際目錄進行 chmod 以具有 setgid 位,並且在其下創建的所有新文件都將具有 www-data 組。
因此,要確保您是否需要將文件與您的使用者一起放在那裡,它會保留正確的組、執行和 chmod 以設置目錄的 setGID。
sudo chgrp www-data /var/www sudo chmod +g /var/www
http://blog.superuser.com/2011/04/22/linux-permissions-demystified/
至於使用者,在創建使用者之後(正如 nkts 建議的那樣),其中 M 用於不創建主目錄,而 N 選項用於不創建與使用者相同的預設組。
sudo useradd -d /var/www/ -g www-data -M -N -s /sbin/nologin user
我會將其設置為 SFTP 而不是 FISH,因為它更安全、可靠且非常靈活。您還必須將其 chroot 到他的家以確保他無法訪問文件系統的其餘部分,並將其限制為 internal-sftp。添加到 /etc/ssh/sshd_config
Match User user ChrootDirectory /var/www ForceCommand internal-sftp
注意:FISH 更像是一種古老的好奇心和在 SFTP 之前使用的 shell。
如果您仍想在 Ubuntu 中使用 FISH:
sudo apt-add-repository ppa:fish-shell/release-2 sudo apt-get update sudo apt-get install fish
然後更改使用者的shell
chsh -s /usr/bin/fish
我們還必須再次強制 /etc/ssh/sshd_config 中的 shell
Match User user ForceCommand /usr/bin/fish
本文還將幫助您進行 FISH
https://hackercodex.com/guide/install-fish-shell-mac-ubuntu/
應該可以使用 fish 對 homedir 進行限制,但設置起來更複雜,並且難以實施,因為如果 /var/www 的所有者是 www-data 會更容易。
要設置這樣的限制,您至少需要將 /usr/bin/fish 複製到 /var/www 內部(這不是一個好主意),並且 /var/www 和 /usr/bin/fish 由root (這也使更改 /var/www 目錄的 setGID 的建議無效。
如前所述,與 FISH 相比,SFTP 是一種更現代、更安全的遠端文件訪問設置方法。