CHROOTを使用して特定のディレクトリに投獄されているSFTPユーザーを設定する方法について、多くのWebサイトやフォーラムをスカウトしました。ここに私が従った手順がありますが、書き込み権限を取得できないようです。
セットアップ
sshd_config
#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp
Match group webmaster
X11Forwarding no
ChrootDirectory %h
AllowTcpForwarding no
ForceCommand internal-sftp
フォルダーの作成
mkdir /var/www/sites
ユーザーとグループの作成
useradd uploader
passwd uploader
usermod -d /var/www/sites uploader
groupadd webmaster uploader
groupadd www-data uploader
許可と所有権
chown root:root /var/www
chmod 755 /var/www/sites
これらの設定により、ユーザーアップローダーはホームディレクトリにSFTPを実行できますが、ディレクトリに書き込むことができません。
発生する典型的なエラーは2つあります。ログインできないか、書き込み権限がありません。
ログインエラー
Error: Network error: Software caused connection abort
Error: Could not connect to server
Changing permissions of /var/www/sites to 775 or 777 causes login error.
chown /var/www/sites to uploader:root causes login error.
chwon root:webmaster or root:www-data I have no write permissions
私はこれを理解しようと試みていますが、誰かが私を正しい方向に向けることができれば、とても感謝しています。
ありがとうございました。
ソリューションを見つけました。ユーザーは/var/www/sites
に投獄されます。次に、別のフォルダー/var/www/sites/site1
を作成しました。
私が使う:
chown root:webmaster /var/www/sites/site1
chmod 775 /var/www/sites/site1
これにより、ホームディレクトリにログインするための適切なアクセス許可が付与され、次のフォルダに書き込むことができるようになりました。
ユーザーが/var/www/sites
への書き込みアクセスを必要とする場合、/var/www
所有権と755の許可を持つroot:root
でユーザーを投獄する必要があります。その後、/var/www/sites
所有権を与える必要がありますroot :(あなたのグループ)と775の許可。
おそらく最大の解決策は次のとおりです。
mkdir /var/www/sites/myfirstuser/hisownsite
mkdir /var/www/sites/myseconduser/hisownsite
...
chown root:root /var/www/sites /var/www/sites/{myfirstuser,myseconduser} && chmod 755 /var/www/sites/{myfirstuser,myseconduser}
chmod 775 /var/www/sites/myfirstuser/hisownsite
chmod 775 /var/www/sites/myseconduser/hisownsite
chgrp www-data /www/sites/myfirstuser/hisownsite /var/www/sites/myseconduser/hisownsite
ユーザーを追加します。
useradd -d /var/www/sites/myfirstuser -s /bin/false -g www-data dev1
useradd -d /var/www/sites/myseconduser -s /bin/false -g www-data dev2
passwd dev1
passwd dev2
次に、作成した各ユーザーに対して、次のようなsshタグを追加します(「Match User」の代わりに、例のように「Match Group」ディレクティブを使用することもできます)
Match User dev1
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
Match user dev2
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
したがって、必要なすべてのユーザーをchrooted環境で管理できます。
ファブリツィオ