私は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のセキュリティのためにグループに対して書き込み不可に設定されている場合、ユーザーがフォルダーへの書き込み権限を持つことは不可能になります。
誰かが良い回避策について知っていますか?
私のサーバーにも同じ設定があります。 SSHDの同じ設定を使用します。ユーザーのホームディレクトリはrootが所有し、その中には各ユーザーが所有するdocuments
およびpublic_html
フォルダーがあります。次に、ユーザーはSFTPを使用してログインし、それらのフォルダーに書き込みます(直接家にではありません)。 SSHは許可されていないため、完全に機能します。/etc/skel /で、新しいユーザー用に作成するディレクトリを調整できます(少なくともopenSUSEでは、私は他のディストリビューションにはあまり詳しくありません)。
別の可能性は [〜#〜] acl [〜#〜] ( openSUSEドキュメント )です-それは彼のホームディレクトリにそれぞれのユーザーの書き込み権限を追加できます。
最近、次のような回避策を見つけました。
...
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
内ではなく、ルート(/
)の直下にあります。
制限付きユーザーのホームをchrootの下での表示方法に設定します。
root@server:~ # usermod -d /username username
無制限のユーザーまたは管理スクリプトのいずれかが~username
のようなbashのチルダ拡張を使用している場合、これは/username
に拡張されますが、これは意図されたものではありません。
また、sftponly
ユーザーを作成する管理者は、デフォルト以外のホームを使用することを忘れないでください。スクリプトで解ける。管理者が使用することを覚えておく必要があります。
これは、私たちが最終的に使用した前のものの代替です:
root@server:~ # ln -s . /home/home
つまり、/home
内に独自のディレクトリ名へのシンボリックリンクを作成します。 chrootの下では、/home/username
はchrootを使用しない場合と同じディレクトリを指します。 sftpでログインした制限付きユーザーの場合、/username
と表示されます。このディレクトリは、その所有者(制限付きユーザー)に書き込み可能です。制限付きユーザーは、兄弟の親ディレクトリまたはホームディレクトリを名前でリストすることはできません。
sftponly
ユーザーの唯一の特別な点は、sftponly
グループへの参加です。回避策1よりも対処が簡単であることがわかりました。
/home/home
を設定することはできません/home
階層を走査してシンボリックリンクをたどるスクリプトには注意する必要があります。Inとoutのディレクトリのように、ユーザーのホームディレクトリ内に構造を作成する必要があります。これらのディレクトリはユーザーが所有する必要があり、そこでユーザーはファイルを配置および取得できます。
「ディレクトリ権限」セクションを参照 @artmからの回答(私はテストしたところです)..私が見つけた:
root@server:~ # chmod 111 /home <- Does not work
これは、すべてに対して許可のみを実行するubuntuでsftp接続が機能することを許可しません(111など)。
見つけた:
root@server:~ # chmod 555 /home
読み取りと実行のアクセス許可、つまり555でsftpへの接続で動作します。debianと他のフレーバーが異なるかどうかはわかりませんが、私のubuntuインストールではそれが機能します。
次のディレクトリ構造を作成する必要があります。
/ home/user
/ home/user/home/user <-ユーザーがアクセスできる実際のディレクトリ
オプション:
/home/user/.ssh/authorized_keys <-公開鍵で認証したい場合
ユーザーを作成するときは、chown
を使用して、すべてのユーザーのすべてのディレクトリに所有権を設定する必要があります。
例えば:
Sudo chown usertest:groupsftp /home/rootsftp/usertest