GNU/Linux >> Linux の 問題 >  >> Linux

Chrooted SFTP ユーザーの書き込み権限

最近、次のような回避策が見つかりました:

/etc/ssh/sshd_config:

...

Subsystem sftp internal-sftp

Match Group sftponly
    ChrootDirectory /home
    AllowTCPForwarding no
    X11Forwarding no
    ForceCommand internal-sftp

ディレクトリのパーミッション:

[email protected]:~ # chown root:root /home
[email protected]:~ # chmod 111 /home
[email protected]:~ # chmod 700 /home/*

/home ChrootDirectory の要件を満たす 制限されたユーザーはリストできませんが、sftponly ホーム ディレクトリが通常どおりに設定されている場合、ユーザーはログインできません (/home/$LOGNAME ):chroot 環境では、ホーム ディレクトリが /home 内にありません ただし、ルート直下 (/ )。

回避策 1

制限されたユーザーのホームを chroot で表示されるように設定します:

[email protected]:~ # usermod -d /username username

警告 1

無制限のユーザーまたは一部の管理スクリプトが ~username のような bash のチルダ展開を使用している場合 /username に展開されます

sftponly を作成した管理者も ユーザーは、デフォルト以外のホームを使用することを覚えておく必要があります。スクリプトで解決可能。管理者が使用することを覚えておく必要があります。

回避策 2

これは、最終的に使用することになった以前のものの代替です:

[email protected]:~ # ln -s . /home/home

つまり、/home 内にシンボリック リンクを作成します。 独自のディレクトリ名に。現在、chroot /home/username の下にあります chroot がない場合と同じディレクトリを指します。 sftp でログインした制限付きユーザーの場合、/username と表示されます。 .このディレクトリは、その所有者 (制限付きユーザー) に書き込み可能です。制限付きユーザーは、兄弟の親ディレクトリまたはホーム ディレクトリを名前で一覧表示することはできません。

sftponly の唯一の特別な点 ユーザーは sftponly への参加です グループ。回避策 1 よりも対処が簡単であることがわかりました。

注意事項 2

<オール>
  • ホーム ディレクトリ /home/home で「home」という名前のユーザーを指定することはできません
  • /home をトラバースするスクリプトには注意が必要です 階層とシンボリックリンクに従います。

  • in ディレクトリと out ディレクトリのように、ユーザーのホーム ディレクトリ内に構造を作成する必要があります。これらのディレクトリはユーザーが所有する必要があり、そこにファイルを置いたり取得したりできます。


    私たちのサーバーにも同じ設定があります。 SSHD の同じ構成を使用します。ユーザーのホーム ディレクトリは root が所有し、その中に documents フォルダがあります と public_html それぞれのユーザーが所有しています。次に、ユーザーは SFTP を使用してログインし、(ホームに直接ではなく) それらのフォルダーに書き込みます。 SSH は許可されていないため、完全に機能します。 /etc/skel/ で新規ユーザー用に作成されるディレクトリを調整できます (少なくとも openSUSE では、私は他のディストリビューションにあまり詳しくありません)。

    もう 1 つの可能性は ACL (openSUSE のドキュメント) です。これにより、各ユーザーのホーム ディレクトリに書き込み権限を追加できます。


    Linux
    1. Linuxは複数の連続したパスセパレーター(/ home //// username /// file)をどのように処理しますか?

    2. Debian – / var、/ homeを別のパーティションに移動しますか?

    3. Xemacs:すべてのファイルを/home/barry/.emacs_barryにロードしますか?

    1. 別の user.home 用に Jenkins を構成する

    2. cp:ディレクトリを作成できません:そのようなファイルまたはディレクトリはありません

    3. なぜ /home 以外のものを別のパーティションに入れるのですか?

    1. Linux で LDAP ユーザーのホーム ディレクトリを編集する

    2. Linux ホーム ディレクトリに対するデフォルトの権限

    3. mv:home から home-old に移動できません:デバイスまたはリソースがビジーです