/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
それとも私が質問を間違って理解したのでしょうか?たぶん、このユーザーが他のディレクトリを読み取れないようにしますか?この場合、次のことができますchroot
。
http://how-to.linuxcareer.com/how-to-automatically-chroot-jail-selected-ssh-user-logins
SFTPを使用したい場合:https://bensmann.no/restrict-sftp-users-to-home-folder/
答え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サーバーに関する情報を覚えておいてください)。