本当に助けが必要です。 を使用しているユーザーを監禁しようとしていますubuntu
。
注意事項:
james
ユーザーですsshusers
グループは/home/james/upload/
ユーザーをロックしたいディレクトリです
sshd_config:
AllowGroups sshusers
Match Group sshusers
ChrootDirectory /home/%u/upload/
ForceCommand internal-sftp
私答えに続いて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
アドバイスをお願いします。Google で検索しすぎて、リンクがすべて紫色になっています (訪問済み:P
)
私はテストにFileZillaクライアントを使用していますSFTP
。
答え1
このChrootDirectory
ディレクティブは、chrootディレクトリが によって所有されroot
、他のユーザーが書き込みできないことを想定しています。できないユーザーをディレクトリに監禁し、そのディレクトリへの書き込み権限をユーザーに付与します。次の操作を実行できます。
ホームにchrootし、アップロードする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
の再帰オプションを使用し、権限を削除します。変更されたセットは次のようになります。chown
chmod
/home/james
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
。
アップロードするにはchroot、アップロード先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
。最初のオプションと同じ制限を使用します。
答え2
OpenSSH に組み込まれている sftp chroot メカニズムでは、chroot ディレクトリが root によって所有され (ユーザーが書き込みできない) ている必要があります。たとえば、ディレクトリが 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詳細については。