Ubuntuサーバー14.04を共有ドライブとして使用するマルチユーザー環境
すべてのユーザーはFilezilla/WinSCPを使用してSFTP経由で接続し、/home/company-folder/
にchrootします
各ユーザーは、/home/company-folder/users/
の下に独自の個人フォルダーも持っています。例えば。 /home/company-folder/users/username-1
、/home/company-folder/users/username-2
など...
username-1
は他のユーザーの個人フォルダー(/home/company-folder/users/username-2
、/home/company-folder/users/username-3
など)を見ることができるようになり、他のユーザーフォルダーにアクセスできませんが、リストに表示されます。
質問:ユーザーが/home/company-folder/users/
の下にある互いの個人ディレクトリを表示できないようにするにはどうすればよいですか?とにかく、Ubuntu-Linuxに読み取り不可のフォルダーを隠す方法はありますか?
100人以上のユーザーがいるシステムでは、ユーザーがユーザーフォルダーのリスト全体を参照して自分の個人フォルダーを見つけるのは便利ではないためです。
一般的に、いいえ。 (あなたの観点から)parentディレクトリの許可のみが、そのコンテンツを特定のユーザーがリストできるかどうかを決定します。これには、このユーザーが開いたり読んだりできないディレクトリエントリが含まれます。 SSH/SFTPサーバーは各セッションのサブプロセスを生成し、サブプロセスの所有権をそれぞれのユーザーに正常に認証されるとすぐに変更するため、SSH/SFTPアクセスのメカニズムはローカルツールと同じです。
次の例を考えてみましょう。
david@localhost:~$ ls -la /home
dr-xr-xr-x 1 root root 80 Nov 10 09:05 .
drwxr-xr-x 23 root root 4,0K Dec 17 11:09 ..
drwxr-xr-x 1 guest guest 836 Sep 4 20:58 guest
drwxr-x--- 1 david users 4,2K Dec 14 22:07 david
drwx------ 1 root root 614 Nov 10 12:42 root
ご覧のとおり、david
は、誰でも読むことができるため、所有者ではありませんが、/home
のコンテンツをリストできます(.
エントリの前にある許可マスクを参照)。同じ理由で/home/guest
の内容をリストできます。私はその所有者であり、所有者が読み取り許可を持っているため、/home/david
のコンテンツをリストすることもできます。ただし、私は所有者ではなく、誰もそのディレクトリの読み取り権限を持たないため、/home/root
のコンテンツをリストすることはできません。
david@localhost:~$ ls /home/root
ls: cannot open directory /home/root: Permission denied
非所有者の読み取り許可を削除するために/home
の所有権を変更した場合、/home
のコンテンツをリストできなくなりました。
david@localhost:~$ Sudo chmod o-r /home
david@localhost:~$ ls -ld /home
drwxr-x--x 2 root root 40 Dez 17 21:17 /home
david@localhost:~$ ls -l /home
ls: cannot open directory /home: Permission denied
ただし、/home
(および/home/david
)でトラバース許可(ディレクトリの「実行」ビットのセマンティクス)が設定されているため、/home
をトラバースして、/
を読み取ることができます。
david@localhost:~$ ls -l /home/david
total 732K
drwx------ 1 david users 4,2K Dec 14 22:07 .
dr-xr-x--x 1 root root 80 Nov 10 09:05 ..
drwx------ 1 david users 60 Aug 24 2014 .Adobe
-rw------- 1 david users 83 Dec 6 19:49 .bash_aliases
-rw------- 1 david users 66 May 12 2011 .bash_completion
-rw------- 1 david users 703 Nov 23 05:41 .bash_exports
[etc...]
あなたの基本的な目的への可能な代替アプローチについては Jakujeの答え を参照してください。
あなたが説明することをする方法はわかりませんが、openssh -d
にはsftp-server
オプションがあります。これは、ディレクトリを開始するユーザーを指定します。
[...]ユーザーフォルダーのリスト全体を参照して、個人フォルダーを見つけます。
次のようなsftp-server
を指定した場合:
Subsystem sftp internal-sftp -d /users/%u
(/home/company-folder/
は省略する必要があります。すでにchrootされているためです)。