Sftpユーザーのchrootの設定について、半ダースの異なるチュートリアルを実行しましたが、投獄されたユーザーは引き続き親ディレクトリを参照できます。これはチュートリアル間で最も異なる部分であるため、権限が正しく設定されていないようです。これが私がこれまでにしたことです:
1)デフォルトのOpenSSHがバージョン4.3であるCentOS 5.6を使用しているため、最新の5.xバージョンを手動でインストールしました。 sshd -vを実行すると、OpenSSH_5.9p1、OpenSSL0.9.8e-fips-rhel5が返されるようになりました。
2)/ etc/ssh/sshd_configを編集して、サブシステムsftpをinternal-sftpに変更し、以下を追加しました。
Match user guest
ChrootDirectory %h
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
3)sshdを再起動しました。
4)ホームディレクトリ/ var/www/uploads/guestでユーザー「guest」を作成しました。
5)/ var/www/uploadsは、モード755のroot:rootによって所有されます。
6)/ var/www/uploads/guestは、モード755のguest:rootが所有しています。
MacでTransmitsftpクライアントを使用して、ゲストユーザーでログインしました。デフォルトではユーザーのホームディレクトリが開きますが、ディレクトリレベルを上に移動して、サーバー上の他のディレクトリを参照できます。
一部のチュートリアルでは、/ var/www/uploadsのモードは700または750である必要があるとされています。これを行うと、ゲストユーザーとしてログインできますが、デフォルトでサーバーのルートディレクトリが表示され、他のすべてのディレクトリを参照できます。
他のチュートリアルでは、ゲストユーザーのシェルを/ bin/falseに変更する必要があると書かれています。これを行うと、ゲストユーザーとしてまったくログインできなくなります。パスワードを入力すると、Transmitに「ユーザー名またはパスワードがサーバーに受け入れられませんでした」と表示され、コマンドラインのsftpクライアントに「接続が閉じられました」と表示されます。
私はすべてを試したと思います-誰かが欠けているものを見ることができますか?
ChrootDirectoryは、ホームディレクトリの上の1つのレベルを指している必要があるようです。
したがって、ゲストの家は/ var/www/uploads/guestであるため、ChrootDirectoryは/ var/www/uploads
それはMAYBEです....別の考えが私に起こりました:
新しいopensshを手動でインストールしましたが、古いバージョンを削除しましたか?新しいバージョンはどこにインストールされましたか? 時々、注意しないと、新しいものが/ usr/local /にインストールされます/ usrの代わりに、sftp対応サーバーが/ usr/local/etc/ssh/...期待される代わりに/ etc/ssh/...
少なくともチェックするもの。
私はまったく同じ問題に苦労しましたが、chrootされたディレクトリとすべての親ディレクトリを設定することで解決しました次の権限を持つ
1)所有者をルートに変更する:
Sudo chown root [directory]
2)すべてのグループ書き込み権限を削除します。
Sudo chmod 755 [directory]
残念ながら、rootが所有していないフォルダに直接ジャンプすることはできないと思いますが、誰かが私を修正してくれるかどうか聞いて喜んでいます!