本当に助けが必要です。ubuntu
を使用してユーザーを投獄しようとしています。
注意すること:
james
はユーザーですsshusers
はグループです/home/james/upload/
は、ユーザーをロックするディレクトリですsshd_config:
AllowGroups sshusers
Match Group sshusers
ChrootDirectory /home/%u/upload/
ForceCommand internal-sftp
I 答えに続いて askubuntuで、ここに私のコマンドがあります
Sudo chown root /home/james
Sudo chmod go-w /home/james
Sudo mkdir /home/james/upload
Sudo chown james:sshusers /home/james/upload
Sudo chmod ug+rwX /home/james/upload
問題:
このエラーが表示されます
Error: Network error: Software caused connection abort
Error: Could not connect to server
ログで調査したところ、次のことがわかりました。
致命的:不正な所有権またはchrootディレクトリコンポーネント "/ home/james/upload /"のモード
しかし、次のコマンドを実行すると
Sudo chown root /home/james/upload
Sudo chmod go-w /home/james/upload
完璧に動作し、ユーザーは接続でき、フォルダーはロックされていますしかし、ディレクトリにファイルをドロップできません
Status: Listing directory /
Status: Directory listing successful
Status: Starting upload of C:\Users\Program\AppData\Local\Temp\fz3temp-1\empty_file_yq744zm
Command: put "C:\Users\Program\AppData\Local\Temp\fz3temp-1\empty_file_yq744zm" "test"
Error: /test: open for write: permission denied
Error: File transfer failed
アドバイスしてください、私は検索グーグルを持っているので、今ではすべてのリンクが紫色になっています(:P
にアクセス)
Filezillaクライアントを使用してSFTP
をテストしています。
ChrootDirectory
ディレクティブは、chrootディレクトリがroot
によって所有され、他の誰かによって書き込み可能ではないことを想定しています。したがって、cannotユーザーをディレクトリに投獄し、ユーザーにそのディレクトリへの書き込み許可を与えます。あなたはできる:
upload/
にアップロードします試した最初のコマンドセットは、これに適しています。
Sudo chown root /home/james
Sudo chmod go-w /home/james
Sudo mkdir /home/james/upload
Sudo chown james:sshusers /home/james/upload
Sudo chmod ug+rwX /home/james/upload
ただし、sshd_config
のオプションは次のようになります。
Match Group sshusers
ChrootDirectory %h
ForceCommand internal-sftp
(%h
は、認証されるユーザーのホームディレクトリに置き換えられます。ほとんどの場合、/home/%u
と同等です。)さらに、/home/james
内のフォルダーの可視性を制限し、書き込み権限を制限します。そこで、/home/james
の最初のコマンドでchown
とchmod
の再帰オプションを使用し、read
パーミッションを削除します。変更されたセットは次のようになります。
Sudo chown root /home/james -R
Sudo chmod go-rwx /home/james -R # Disallow traversing any directory in home
Sudo chmod go+x /home/james # Allow traversing this directory
Sudo mkdir /home/james/upload
Sudo chown james:sshusers /home/james/upload
Sudo chmod ug+rwx /home/james/upload
これで、ユーザーは/home/james/upload
または/upload
にのみアクセスできるようになります。
upload/some_directory
へのアップロード上記とほとんど同じで、/home/james/
を/home/james/upload
に、/home/james/upload
を/home/james/upload/some_directory
に置き換えます。特に利益はありません。
james
のホームディレクトリを/upload
に変更しますChrootDirectoryの通常の動作は次のとおりです。「chrootの後、sshd(8)は作業ディレクトリをユーザーのホームディレクトリに変更します。」したがって、james
のホームディレクトリを変更します。
usermod -d /upload user
次に、ChrootDirectory
を/home/%u
に設定します。最初のオプションで同じ制限を使用します。
OpenSSHに組み込まれているsftp chrootメカニズムでは、chrootディレクトリがルートによって所有されている必要があります(ユーザーは書き込みできません)。たとえば、ディレクトリがSMB/CIFS共有であり、マウントをバインドする必要がある場合、これは苦痛になる可能性があります。
より柔軟なソリューションの1つは、MySecureShellを使用することです( http://mysecureshell.readthedocs.io/en/latest/ )
apt install mysecureshell
デフォルトのOpenSSH設定を変更することなく機能します。必要なことは、SFTPユーザーにシェルをmysecureshellにログインさせることだけです。これにより、ACL /仮想chrootが処理されます。詳細についてはドキュメントを参照してください。
たとえば、MySecureShellをインストールしたら、次のようにSFTPユーザー(ホームディレクトリに制限されている)を追加できます。
Sudo useradd -m -d /home/sftpuser01 --Shell /usr/bin/mysecureshell sftpuser01
上記から、ユーザー「sftpuser01」はSFTPセッションで「/ home/sftpuser01」に仮想chrootされます。
また、「/ etc/ssh/sftp-config」を設定することにより、ACL、グループなどを制御するための柔軟なオプションを多数提供します。詳細については http://mysecureshell.readthedocs.io/en/latest/configuration.html を参照してください。