web-dev-qa-db-ja.com

CentOS SFTP chroot

クライアントのSFTPアクセスをchrootする際に問題が発生しました。

ディレクトリにアクセスできますが、問題は読み取り/書き込みができず、ディレクトリにアクセスできることです。

以下は私がしたことです:

# cat /etc/passwd | grep comege
comege:x:1001:1001::/home/sftp/comege/home/:/sbin/nologin

# cat /etc/group | grep sftp
sftp-only:x:1001:

# sshd_config
Subsystem sftp internal-sftp
Match Group sftp-only
ChrootDirectory /home/sftp/%u
    AllowTCPForwarding no
    X11Forwarding no
    ForceCommand internal-sftp

SELinuxは、テスト目的でパーミッシブに設定されています。

SFTPを使用してサーバーに接続すると、次のエラーが発生します。

Error listing directory '/'. Permission denied

権限:

/home/sftp/comege and parent directories belongs to root:root.

/home/sftp/comege/home belongs to comege:sftp-only

問題は、comegeが接続時に/ home/sftp/comege/homeにリダイレクトされないため、rootに属する/ home/sftp/comegeに到達し、アクセス許可がないことだと思います(?)

2
Loïc

Chrootディレクトリ/home/sftp/comegeの権限が、comegeユーザーによる読み取りアクセスを許可するように設定されていないようです。

/home/sftp/comegeの権限は次のようになります。

# ls -la /home/sftp/comege
total 0
drwxr-xr-x 1 root   root       8 Jul 19 12:00 .
drwxr-xr-x 1 root   root      12 Jul 19 11:59 ..
drwx------ 1 comege sftp-only 76 Jul 19 12:00 home

次のコマンドで権限を変更します。

# chmod 755 /home/sftp/comege

これはSELinuxパーミッションを考慮していないことに注意してください。

設計上、chroot環境でのSFTPセッションは、rootが所有する必須 chroot「jail」内のユーザーから開始されます。これは、ユーザーが最上位のルートディレクトリのサブディレクトリにあるファイルにのみ書き込むことを目的としています。 1つの規則は、元の例に示されている「ホーム」ディレクトリの代わりに、ユーザーのアップロード用に「着信」と呼ばれるサブディレクトリを作成することです。

4