他のFTPディレクトリchmod設定と組み合わせたSFTPログインの成功/失敗の動作を説明する方法は?

他のFTPディレクトリchmod設定と組み合わせたSFTPログインの成功/失敗の動作を説明する方法は?

始めたら -

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サービスが最終的にここでやろうとしている仕事のメカニズムを明らかに誤解しています。誰かがこれを説明できますか -

  1. 'chmod -R 640 /testdir' と所有者 'test_user:test_group'読むことができます) - そうですか? - しかし、なぜSFTP接続が失敗するのですか?
  2. 「d rwx rx rx root root」ケースが、ユーザー「test_user」への成功したSFTP接続を有効にした場合、なぜですか?広げるrwx r 権限を付与しました。勝つx rx root root'(775)と入力すると、SFTP接続が失敗しますか?
  3. SFTP接続を介してこれらの「/testdir / ...」ディレクトリへの「test_user」読み取り/書き込みアクセスを許可しますが、他の(rootではない)ユーザーへのアクセスは許可しない正しい/最も良い方法は何ですか?
  4. SFTPサーバー(おそらく他のユーザーとして実行されている)のSFTP接続/認証フェーズ全体の一連のステップとプロセスについて詳しく説明すると、ここで何が起こっているのかをより明確かつ直感的に理解できますか?

ベストアンサー1

これChrootDirectorysshd オプションのドキュメント部分的には次のように言います。

セッションの開始時に、sshd(8)は、パス名のすべてのコンポーネントが他のユーザーまたはグループが書き込めないルートが所有するディレクトリであることを確認します。

つまり、/testdirディレクトリはグループやその他の書き込み権限なしでルートが所有する必要があります。これらの条件が満たされない場合、sshd会議はキャンセルされると思います。

これらの制限は、chrootディレクトリとその親ディレクトリにのみ適用されます。/testdir必要な所有権と権限でファイルとディレクトリを作成できます。

おすすめ記事