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


10

私はsftpのみのユーザーでセットアップしています:

Match Group sftponly
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTcpForwarding no

secure.logに次のメッセージが表示されます。

fatal: bad ownership or modes for chroot directory

matchキーワードを使用すると、いくつかのセキュリティ機能が付属します...ディレクトリはrootが所有する必要があり、ディレクトリはchmod 755(drwxr-xr-x)である必要があります。そのため、ユーザーrootに対してのみ書き込み可能であり、sshのセキュリティのためにグループに対して書き込み不可に設定されている場合、ユーザーはフォルダーへの書き込み権限を持つことができません。

誰かが良い回避策を知っていますか?


行いchroot、ユーザーが自分のエドChrootDirectory?彼らはそれにアクセスできますか?
ジョンWHスミス

回答:


2

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

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


1
私にとって、Debian Jessie(8.10)では、ユーザーの家にACLを設定しても機能しません。ユーザーがSFTPでログインしようとすると、次のエラーが発生しますpacket_write_wait: Connection to 10.0.0.42 port 22: Broken pipe
Drew Chapin

7

最近、次のような回避策を見つけました。

/ etc / ssh / sshd_config:

...

Subsystem sftp internal-sftp

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

ディレクトリの権限:

root@server:~ # chown root:root /home
root@server:~ # chmod 111 /home
root@server:~ # chmod 700 /home/*

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

回避策1

制限されたユーザーの家をchrootの下での表示方法に設定します。

root@server:~ # usermod -d /username username

洞窟1

無制限のユーザーまたは一部の管理スクリプトのいずれかがbashのチルダ展開を使用~usernameして/usernameいる場合は、それが現在に展開されるようになりますが、これは意味がありません。

また、sftponlyユーザーを作成する管理者は、デフォルト以外の家を使用することを忘れないでください。スクリプトで解決できます。管理者が使用することを覚えておく必要があります。

回避策2

これは、私たちが最終的に使用した前のものの代替です:

root@server:~ # ln -s . /home/home

それは/homeそれ自身のdirnameへのシンボリックリンクを作成します。chrootの下では、chroot /home/usernameを使用しない場合と同じディレクトリをポイントしています。sftpでログインした制限付きユーザーの場合、と表示され/usernameます。このディレクトリは、その所有者(制限付きユーザー)に書き込み可能です。制限付きユーザーは、兄弟の親ディレクトリまたはホームディレクトリを名前でリストすることはできません。

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

洞窟2

  1. 'home'という名前のユーザーにホームディレクトリを設定することはできません /home/home
  2. /home階層を横断してシンボリックリンクをたどるスクリプトには注意が必要です。

こんにちは、artmまたは他の読者の皆さん、これは古い投稿であることは承知していますが、回避策2を理解していただけませんか?ホームディレクトリ(/ home / ftpuser /)に投獄する必要があるユーザー(ftpuser)がいますが、これは達成できますが、/ home / ftpuserにはもちろん755が必要です。ホームディレクトリにファイルとフォルダを作成できるようにするには、ftpuserが必要です。作成する必要があるシンボリックリンク、およびChrootDirectoryに必要な値
Blatant 2017

4

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


0

次のディレクトリ構造を作成する必要があります。

/ home / user

/ home / user / home / user <-ユーザーがアクセスできる実際のディレクトリ

オプション:

/home/user/.ssh/authorized_keys <-公開鍵で認証したい場合


0

@artm(私がテストしたばかり)からの回答の「ディレクトリ権限」セクションを参照してください。

root@server:~ # chmod 111 /home <- Does not work

それはすべてのすなわち111の実行のみのパーミッションでubuntuでsftp接続が機能することを許可しません。

見つけた:

root@server:~ # chmod 555 /home

読み取りと実行のアクセス許可、つまり555でsftpへの接続で動作します。debianと他のフレーバーが異なるかどうかはわかりませんが、私のubuntuインストールではそれが機能します。


0

ユーザーを作成するときchown、すべてのユーザーのすべてのディレクトリに使用する所有権を設定する必要があります。

例えば:

sudo chown usertest:groupsftp /home/rootsftp/usertest
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.