'www/website1' の所有者とグループは root:www-data であり、root または sudo ユーザーとしてそのコンテンツや構成を変更できます。
しかし、今、私は website2 という名前の別の Web サイト (「www」ディレクトリ自体の下) を作成したいと思っています。そのアクセス権限を友人に付与する必要があります (友人が私のためにこの Web サイトを好きなように簡単に構成できるようにするため)。ただし、友人は sudo を使用しても、私の OS 内の他のディレクトリを変更したり、表示したりすることはできません。
この目的のために、Ubuntu OS に新しいユーザーを作成し、そのユーザー用の FTP ログイン ID/パスワードを作成できます。しかし、この Web サイト 2 への 777 のアクセスに加えて、そのユーザーには、完全なルート フォルダーとそのすべてのサブフォルダーへの読み取りアクセスも自動的に付与されていることがわかりました。
これを制御する簡単な方法はありますか? 必要な 1 つ (または 2 つのフォルダー) のみを表示し、指定されたフォルダー以上は表示しないようにします。また、OS 全体の他のすべてのフォルダーのプロパティを 1 つずつ変更したくありません。よろしくお願いします。
答え1
www-data
ここで重要なのはグループです。ユーザーをグループに追加すると、グループの権限に基づいてファイルやディレクトリにアクセスできるようになります。
コマンドは次のようになります。
usermod -a -G www-data {user2}
そうすると、{user2} は、このグループに接続されているファイル(自身が所有し変更できるファイル以外)を変更できるようになります。
必要に応じて、新しいグループを作成し、そのグループを 2 人のユーザーに接続して、user2 をそのグループに接続されたファイルにのみ制限することもできます。Apache はユーザーとして www-data を使用しますが、そのユーザーは www-data 以外のグループも持つことができます。
この Web サイト 2 への 777 のアクセスに加えて、完全なルート フォルダーとそのすべてのサブフォルダーへの読み取りアクセスも自動的に取得していることがわかりました。
スティッキー ビットも含めない限り、chmod 777 は決して答えにはなりません。
答え2
次のコマンドを使用します。
setfacl -R -m user:{user2}:rwX www/website2
これにより、ユーザー {user2} に www/website2 とそのディレクトリ内のすべてのものへのフルアクセス権が付与されます。
編集:問題は、{user2} が www/website2 以外のディレクトリへの読み取りアクセス権を持っていることです。これらのディレクトリは通常、デフォルトで「その他」、つまりすべてのユーザーに対して読み取りアクセス権が有効になっています。そのため、{user2} はそれらを読み取ることができます。このアクセス権を削除しないと、{user2} がそれらを表示するのを防ぐことはできません。唯一の方法は、質問のコメントで述べたように、{user2} を FTP chroot jail にロックして、www/website2 がそのユーザーのルート ディレクトリになるようにすることです。FTP サーバーがこれをサポートしているかどうかを確認してください。