始めたら -
sudo groupadd test_group
sudo useradd -g test_group -s /sbin/nologin test_user
sudo passwd test_user
...(some password)...
sudo mkdir -p /testdir/dev
また、次のように "/etc/ssh/sshd_config"があります。
Include /etc/ssh/sshd_config.d/*.conf
ChallengeResponseAuthentication no
UsePAM yes
X11Forwarding no
PrintMotd no
AcceptEnv LANG LC_*
Subsystem sftp internal-sftp
Match User test_user
ChrootDirectory /testdir
PermitTunnel no
ForceCommand internal-sftp -d /dev
X11Forwarding no
AllowTcpForwarding no
また、「iptables」ルールがない場合は、「test_user」ユーザー名とパスワードを指定して、別のコンピューター(この場合はfilezillaを使用するWindows PC)でSFTP接続を正常に作成できます。 /testdir/dev ディレクトリの内容のみ。
ただし、SFTPセッションにはディレクトリの内容のみがリストされており、実際にファイルを送信または書き込みする権限はありません。つまり、私は -
drwxr-xr-x root root ... /testdir
drwxr-xr-x root root ... /testdir/dev
それはできません。今、私の "test_user"が "/testdir"で読み書き可能で、すべての "test_group"ユーザーが読み取ることができますが、他のユーザーはアクセスできないように所有権と権限を適用しようとしています。それから私は -
sudo chown -R test_user:test_group /testdir
sudo chmod -R 640 /testdir
これで、以前に成功したSFTP接続が「エラー:サーバーに接続できません」というメッセージで失敗します。
理由はわかりませんが、より多くの自由とすべてへの無料アクセスはどうですか?
sudo chown -R test_user:test_group /testdir
sudo chmod -R 777 /testdir
"test_user"接続でも同じSFTPエラーが発生しました。
少し混乱して、所有権を元のケースに戻しましたが、アクセス権がさらに広がりました。
sudo chown -R root:root /testdir
sudo chmod -R 775 /testdir
それでも接続できません。以前に覚えておいてくださいユーザー:rwx、グループ:rx、その他:rxルートルート正常に、私は今ユーザー:rwx、グループ:rwx、その他:rxルートルート、より広い範囲ですが、今SFTPは失敗します。
その後、確認のために以下を使用してアクセス権を強化しました。
sudo chown -R root:root /testdir
sudo chmod -R 755 /testdir
私のsftp / filezilla 'test_user' + pw接続は再び成功し、/testdir/devディレクトリの内容を表示しますが、書き込み権限はまだ許可されていません。
私は、所有権とアクセス、そしてsftpサービスが最終的にここでやろうとしている仕事のメカニズムを明らかに誤解しています。誰かがこれを説明できますか -
- 'chmod -R 640 /testdir' と所有者 'test_user:test_group'読むことができます) - そうですか? - しかし、なぜSFTP接続が失敗するのですか?
- 「d rwx rx rx root root」ケースが、ユーザー「test_user」への成功したSFTP接続を有効にした場合、なぜですか?広げるrwx r 権限を付与しました。勝つx rx root root'(775)と入力すると、SFTP接続が失敗しますか?
- SFTP接続を介してこれらの「/testdir / ...」ディレクトリへの「test_user」読み取り/書き込みアクセスを許可しますが、他の(rootではない)ユーザーへのアクセスは許可しない正しい/最も良い方法は何ですか?
- SFTPサーバー(おそらく他のユーザーとして実行されている)のSFTP接続/認証フェーズ全体の一連のステップとプロセスについて詳しく説明すると、ここで何が起こっているのかをより明確かつ直感的に理解できますか?
ベストアンサー1
これChrootDirectory
sshd オプションのドキュメント部分的には次のように言います。
セッションの開始時に、sshd(8)は、パス名のすべてのコンポーネントが他のユーザーまたはグループが書き込めないルートが所有するディレクトリであることを確認します。
つまり、/testdir
ディレクトリはグループやその他の書き込み権限なしでルートが所有する必要があります。これらの条件が満たされない場合、sshd
会議はキャンセルされると思います。
これらの制限は、chrootディレクトリとその親ディレクトリにのみ適用されます。/testdir
必要な所有権と権限でファイルとディレクトリを作成できます。