www-data グループが所有する www フォルダで、ユーザーが SFTP を実行できないように制限します。

www-data グループが所有する www フォルダで、ユーザーが SFTP を実行できないように制限します。

/var/www/ディレクトリ(すべてのサブディレクトリを含む)でのみ読み取り/書き込み権限を持つ新しいユーザーを作成したいと思います。 /var/www/ は www-data という組織に属しています。

最良の方法はSFTPを使用することです。すでにrootとしてSSHアクセス権があります。 SFTP アクセス制限に対するその他の多くの答えは、/home/ ディレクトリに関連しており、ディレクトリの所有権を root に変更する必要があります。 wwwディレクトリでもこれを行うのが良い考えなのかわかりません。

答え1

ユーザーを作成し、ホームディレクトリを/var/www/に設定し、www-dataグループに追加できます。彼が生成するファイルがwww-dataグループに属するようにするには、wwwディレクトリのmodに "s"ビットを追加する必要があります。

# useradd -m /var/www -g www-data
# chmod g+s /var/www

それとも私が質問を間違って理解したのでしょうか?たぶん、このユーザーが他のディレクトリを読み取れないようにしますか?この場合、次のことができますchroothttp://how-to.linuxcareer.com/how-to-automatically-chroot-jail-selected-ssh-user-logins

SFTPを使用したい場合:https://bensmann.no/restrict-sftp-users-to-home-folder/

ビット:http://en.wikipedia.org/wiki/Chmod#Special_modes

http://en.wikipedia.org/wiki/Setuid

答え2

より良いアプローチは、sshdとsftpサブシステムのchroot機能を使用することです。

与えられたDocumentRoot設定/var/www-sites/example.com/html

「chrootwebusers」というグループを作成します。

root@hostname:~# addgroup chrootwebusers

ユーザーを追加し、ホームディレクトリとその他のオプションを設定します。

useradd -g chrootwebusers -d /var/www-sites/example.com -s /bin/false theusername
mkdir -p /var/www-sites/example.com/html
chown theusername.www-data /var/www-sites/example.com
chmod -R 750 /var/www-sites/example.com
chmod g+s /var/www-sites/example.com
passwd theusername

theusernameこれにより、グループメンバーと呼ばれるユーザーがchrootwebusers/var/www-sites/example.comというホームディレクトリとその下のすべてのエントリへの読み取り/書き込みアクセス権を持つグループに追加されます。

このchmod g+s /var/www-sites/example.com作品の所有者はwww-dataグループです。ディレクトリでこのビットを使用すると、その中に作成されたすべての新しいファイル/ディレクトリがディレクトリと同じグループ所有権をsetgid維持します。example.comこれは、Webサーバーを実行しているユーザーは常にファイルです(これに注意してください!)

次に/etc/ssh/ssdh_configファイルを編集します。 sftp サブシステムを指定する行を変更してコメントアウトします。

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

内部的に sshd sftp サブシステムへの参照を追加します。

Subsystem sftp internal-sftp

最後に、ファイルの一番下に追加します。

Match Group chrootwebusers
    ChrootDirectory /var/www-sites
    ForceCommand internal-sftp -u 0027

それでは…これはどのように機能しますか?内部sftpサブシステムは、sshdグループメンバーシップを持つ人がログインするのを待ちますchrootwebusers。そのようなことが起こったら、あなたが見るものが/var/www-sites彼らが見るものとまったく同じになるようにそれらを根絶します/。 example.com ディレクトリを表示したり、そのディレクトリに変更したり、ディレクトリ内でファイルを読み書きできます。DocumentRootただし、/var/www-sites/example.com/htmlこの/example.com/htmlオプション-u 0027は生成されたすべての新しいファイル/ディレクトリにumaskを設定します。 640/750権限を持ち、setgid以前に使用したトリックを使用して、所有ユーザーtheusernameと所有グループをユーザーにしますwww-data(すべてのファイル/ディレクトリファイルを読み取ることができるWebサーバーに関する情報を覚えておいてください)。

関連情報