クライアントの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に到達し、アクセス許可がないことだと思います(?)
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つの規則は、元の例に示されている「ホーム」ディレクトリの代わりに、ユーザーのアップロード用に「着信」と呼ばれるサブディレクトリを作成することです。