頑張って説明します。以前のサーバーでは、友達がwebslaveというユーザーを設定しました。
ユーザーのホームディレクトリは/var/wwwです。 FISHプロトコル(Krusaderを使用)を使用してファイルを転送すると、ユーザーはwebslave @ hostとしてログインします。
たとえば、このユーザーが変更を加えると、グループは常にwwwデータ全体を維持します。
新しいサーバーは私のユーザー名name@hostを使用し、ファイルは通常私と私のチームが所有します。
上記のように、www-dataをデフォルトグループとして持ち、/ var / www以外のコンテンツにアクセスできないユーザーを追加したいと思います。
私がこの仕事をしっかりしていることを確認したいだけです。
明確に申し上げれば幸いです。すべての助けに感謝します。よろしくお願いします!
答え1
新しいユーザーは必要ありません。グループが常にwww-dataであることを確認してください。 setgidビットを持つように物理ディレクトリをchmodすると、そのディレクトリの下に作成されたすべての新しいファイルは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
より安全で信頼性が高く、柔軟性が高いため、FISHの代わりにSFTPに設定します。また、彼が残りのファイルシステムにアクセスできないようにし、それを内部SFTPに制限できるように、彼を彼の家にルートに移動する必要があります。 /etc/ssh/sshd_configに追加
Match User user
ChrootDirectory /var/www
ForceCommand internal-sftp
注:FISHは、SFTP以前に使用されたシェルである古い好奇心に近いです。
それでもUbuntuでFISHを使用したい場合:
sudo apt-add-repository ppa:fish-shell/release-2
sudo apt-get update
sudo apt-get install fish
次に、ユーザーのシェルを変更します。
chsh -s /usr/bin/fish
また、/etc/ssh/sshd_configでシェルを再度強制する必要があります。
Match User user
ForceCommand /usr/bin/fish
この記事はFISHにも役立ちます。
https://hackercodex.com/guide/install-fish-shell-mac-ubuntu/
homedirを制限することはFishで可能でなければなりませんが、/var/wwwの所有者がwww-dataであれば簡単になるため、設定がより複雑で適用が困難です。
これらの制限を設定するには、少なくとも/var/wwwに/usr/bin/fishをコピーする必要があります(良い考えではありません)、/var/wwwおよび/usr/bin/fishはルートに属します(これもmake /var/wwwディレクトリの setGID を変更する提案は効果がありません。
前述のように、SFTPはFISHよりもリモートファイル専用アクセスのより現代的で安全な方法です。
答え2
次のコマンドを使用して新しいユーザーを作成できます(RHEL準拠のディストリビューションを使用しているとします)。
# useradd -d /var/www/ -g www-data -M -N -s /sbin/nologin user
どのアプリケーションがフィッシュプロトコルを介したアクセスを提供しているのかわかりません。