特定のフォルダにのみアクセスできる SFTP ユーザー - ファイルを作成する権限が拒否されました

特定のフォルダにのみアクセスできる SFTP ユーザー - ファイルを作成する権限が拒否されました

そこで、自分のフォルダ内の特定のフォルダにのみアクセスできるユーザーを作成しようとしていますpublic_html。 ユーザーの作成に成功し、ログインできました。 最初はログインに問題がありました。これは、sftp ユーザーが sftp できるようにするには、フォルダを root が所有している必要があったためです。

そこで私はこのガイドに従いました:https://serverfault.com/questions/584986/bad-ownership-or-modes-for-chroot-directory-component- フォルダーの所有権をルートに変更するように指示します。

これを実行すると、正常にログインできますが、このフォルダはルートによって所有されているため、ログインすると、ファイルを追加したり、このフォルダ内で何も実行したりできなくなります。

グループを作成し、root ユーザーと sftp ユーザーをこのグループのメンバーとして追加してみましたが、それでもうまくいきませんでした。

私の回避策は、root ユーザーを使用して sftp フォルダー内に別のディレクトリを作成し、その後所有権を sftp ユーザーに変更することでしたが、これは私にとってはあまりにもハッキーすぎるように思われ、さらにツリー構造に別のフォルダーが追加されるため、あまり好きではありません。

ルートが所有者のままで、sftp ユーザーにフォルダーへの書き込みアクセスを許可する方法はありますか?

答え1

いくつかの Stack Exchange サイトで、この種のことについて多くの議論が行われています。ただし、これが重複でない場合は...

私の CentOS 7 では、ChrootDirectory を使用してユーザーをディレクトリに制限する場合、そのディレクトリは root が所有する必要があり、権限または FACL によって他のユーザーに書き込みアクセスを許可することはできません。シンボリック リンクを設定することはできますが、ディレクトリに制限されている sftp ユーザーはそのリンクをたどることができません。そのため、これを実行する必要があります。

ユーザーを作成する

useradd ftp_user

パスワードを設定する

passwd ftp_user

権限を設定します。彼のホームディレクトリが彼の監獄になります。

chown root:root /home/ftp_user
chmod 0755 /home/ftp_user

今すぐユーザーをその刑務所に制限する

vi /etc/ssh/sshd_config

これを変える:

#Subsystem sftp /usr/lib/openssh/sftp-server

Subsystem sftp internal-sftp

追加

Match User ftp_user
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTCPForwarding no
    X11Forwarding no

保存してviを終了します。

忘れないで:

systemctl restart sshd 

今度は彼らを騙します。あなたのクライアントが /var/www/corny_website で遊ばせ続けるウェブサイトを持っているとします。

そのディレクトリに対する権限があることを確認してください

setfacl -m u:ftp_user:rwx /var/www/corny_website
setfacl -d -m u:ftp_user:rwx /var/www/corny_website

今度は、シンボリックリンクの代わりにマウントします。

mkdir /home/ftp_user/corny_website
mount --bind /var/www/corny_website /home/ftp_user/

これで、ユーザーが sftp を実行すると、パイプ破損エラーは表示されなくなり、/home/ftp_user のみが表示されます。さらに、/corny_website として表示される /var/www/corny_website へのアップロードまたはそこからのダウンロードのみが可能になります。

関連情報