私は自分のrootアカウントでSSHを使用して接続できるVirtual Private Serverを持っています。これにより、任意のLinuxコマンドを実行してすべてのディスク領域にアクセスできます。
SSHを使用してこのサーバーにアクセスできる別のユーザーアカウントを作成したいのですが、/var/www/example.com/
などの特定のディレクトリにしかアクセスできません
たとえば、このユーザーの巨大なerror.logファイル(500 MB)が/var/www/example.com/logs/error.log
にあるとします。FTPを使用してこのファイルにアクセスする場合、このユーザーはログの最後の行を表示するために500 MBをダウンロードする必要がありますが、 d彼がこのようなことを実行できるように:
tail error.log
したがって、SSHを使用してサーバーにアクセスできるようにする必要がありますが、すべてのサーバー領域へのアクセスを許可したくありません。
これどうやってするの?
chroot
ユーザー。
更新:
Vincent DanenによるTechRepublicの記事 のコメント:
OpenSSH 4.9p1のリリースにより、ユーザーをホームディレクトリに制限したり、SFTPサービスへのアクセス権を付与したりするために、サードパーティのハックや複雑なchroot設定に依存する必要がなくなりました。
/ etc/ssh/sshd_config(一部のディストリビューションでは/ etc/sshd_config)を編集して、次のオプションを設定します。
Subsystem sftp internal-sftp Match Group sftp ChrootDirectory %h ForceCommand internal-sftp AllowTcpForwarding no
「Match」ディレクティブがファイルの最後にあることを確認してください。これはOpenSSHに、sftpグループのすべてのユーザーがホームディレクトリ(%hはChrootDirectoryコマンドで表す)にchrootされることを通知します
Chrootしたいすべてのユーザーについて、以下を使用してsftpグループに追加します。
# usermod -G sftp joe # usermod -s /bin/false joe # chown root:root /home/joe # chmod 0755 /home/joe
上記のusermodコマンドは、ユーザーjoeをsftpグループに追加し、シェルを/ bin/falseに設定して、絶対にシェルアクセスを取得できないようにします。 chownコマンドとchmodコマンドは、ディレクトリに必要なアクセス許可を設定します。これらの権限を設定すると、ユーザーはファイルのアップロードとダウンロードを許可されますが、ルートディレクトリにディレクトリまたはファイルを作成できません
シェルアカウントのChrootは、特定のデバイスファイルとシェルがユーザーのホームディレクトリで利用可能である必要があるため、もう少し複雑です。次のコマンドは、Mandriva Linuxに非常に基本的なchrootシステムをセットアップします。
# mkdir /chroot # cd /chroot # mkdir {bin,dev,lib} # cp -p /bin/bash bin/ # cp -p /lib/{ld-linux.so.2,libc.so.6,libdl.so.2,libtermcap.so.2} lib/ # mknod dev/null c 1 3 # mknod dev/zero c 1 5 # chmod 0666 dev/{null,zero} # mkdir -p /chroot/home/joe
上記により、ユーザーjoeはsshでログインでき、chrootに制限されます。残念ながら、これではあまり効果はありませんが、どのように設定できるかがわかります。提供するものに応じて、追加のライブラリとバイナリをインストールする必要があります。
chrootの作成
Dchrootおよびdebootstrapパッケージをインストールします。
管理者として(つまり、Sudoを使用して)、chrootの新しいディレクトリを作成します。この手順では、ディレクトリ
/var/chroot
が使用されます。これを行うには、コマンドラインにSudo mkdir /var/chroot
と入力します。管理者として、テキストエディタで
/etc/schroot/schroot.conf
を開きます。cd /etc/schroot
と入力し、続けてgksu gedit schroot.conf
と入力します。これにより、ファイルを編集できます。次の行を
schroot.conf
に追加し、ファイルを保存して閉じます。your_username
をユーザー名に置き換えます。[lucid] description = Ubuntu Lucid location =/var/chroot priority = 3 users = your_username groups = sbuild root-groups = root
端末を開いて次のように入力します。
Sudo debootstrap --variant=buildd --Arch i386 lucid /var/chroot/ \ http://mirror.url.com/ubuntu/
これにより、chrootにUbuntu 10.04(Lucid Lynx)の基本的な「インストール」が作成されます。パッケージのダウンロードにはしばらく時間がかかる場合があります。注:lucidを任意のUbuntuバージョンに置き換えることができます。注:上記の
mirror.url.com
は、ローカルの有効なアーカイブミラーのURLに変更する必要があります。基本的なchrootが作成されているはずです。Sudo chroot /var/chroot
と入力して、chroot内のルートシェルに変更します。chrootの設定
Chrootを設定するための基本的な手順がいくつかあり、DNS解決や
/proc
へのアクセスなどの機能が提供されています。注:これらのコマンドは、chrootの外部にあるシェルに入力してください。
次のように入力して、
/proc
ファイルシステムをchrootにマウントします(プロセスの管理に必要)。Sudo mount -o bind /proc /var/chroot/proc
次のように入力して、chroot内からのDNS解決を許可します(インターネットアクセスに必要)。
Sudo cp /etc/resolv.conf /var/chroot/etc/resolv.conf
非常に少数のパッケージがデフォルトでchrootにインストールされます(Sudoがインストールされていない場合でも)。パッケージをインストールするには、
apt-get install package_name
を使用します。
あなたの最善の策は、私見ですが、ssh chroot jailをセットアップすることです。つまり、/var/www/example.com/
dir。これを行うには、次のようにします。