web-dev-qa-db-ja.com

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

私は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のセキュリティのためにグループに対して書き込み不可に設定されている場合、ユーザーがフォルダーへの書き込み権限を持つことは不可能になります。

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

10
Adionditsak

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

別の可能性は [〜#〜] acl [〜#〜]openSUSEドキュメント )です-それは彼のホームディレクトリにそれぞれのユーザーの書き込み権限を追加できます。

2
Tilia

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

/ 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/*

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

回避策1

制限付きユーザーのホームをchrootの下での表示方法に設定します。

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

洞窟1

無制限のユーザーまたは管理スクリプトのいずれかが~usernameのようなbashのチルダ拡張を使用している場合、これは/usernameに拡張されますが、これは意図されたものではありません。

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

回避策2

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

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

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

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

洞窟2

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

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

4
YoMismo

「ディレクトリ権限」セクションを参照 @artmからの回答(私はテストしたところです)..私が見つけた:

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

これは、すべてに対して許可のみを実行するubuntuでsftp接続が機能することを許可しません(111など)。

見つけた:

root@server:~ # chmod 555 /home

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

0
willm

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

/ home/user

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

オプション:

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

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

例えば:

Sudo chown usertest:groupsftp /home/rootsftp/usertest
0
Miguel Dueñas