投獄されたSFTPの書き込み許可を変更するとログインが拒否される


14

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

私はこれを理解しようと試みており、誰かが私を正しい方向に向けることができれば、とても感謝しています。

ありがとうございました。

回答:


16

ソリューションを見つけました。ユーザーはに投獄され/var/www/sitesます。次に、別のフォルダーを作成しました/var/www/sites/site1

私が使う:

chown root:webmaster /var/www/sites/site1 
chmod 775 /var/www/sites/site1

これにより、ホームディレクトリにログインするための適切な権限が与えられ、次のフォルダに書き込むことができるようになりました。

ユーザーがへの書き込みアクセスを必要とする場合、所有権と755の許可を持つ/var/www/sitesユーザーを投獄する必要があります。次に、root :(グループ)の所有権と775の許可を与える必要があります。/var/wwwroot:root/var/www/sites


1

たぶん最大の解決策は:

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環境で管理できます。

ファブリツィオ


最終的なコードブロック再:MatchESは、両方のユーザーのためのオーバーライドの単一のセットを持つことによって、見出しによってように、我々は可能性が大幅に簡素化/整頓、コンマ区切りのリストで複数のターゲットをサポートMatch User dev1,dev2
underscore_d

1
では、読み取り/書き込みアクセス権があるフォルダーにロックされるように設定するにはどうすればよいですか?
ケビンBバーンズ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.