web-dev-qa-db-ja.com

特定のディレクトリのみにアクセスできるSSHユーザーを作成できますか?

私は自分の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を使用してサーバーにアクセスできるようにする必要がありますが、すべてのサーバー領域へのアクセスを許可したくありません。

これどうやってするの?

45

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に制限されます。残念ながら、これではあまり効果はありませんが、どのように設定できるかがわかります。提供するものに応じて、追加のライブラリとバイナリをインストールする必要があります。


buntu Community Website は言う

chrootの作成

  1. Dchrootおよびdebootstrapパッケージをインストールします。

  2. 管理者として(つまり、Sudoを使用して)、chrootの新しいディレクトリを作成します。この手順では、ディレクトリ/var/chrootが使用されます。これを行うには、コマンドラインにSudo mkdir /var/chrootと入力します。

  3. 管理者として、テキストエディタで/etc/schroot/schroot.confを開きます。 cd /etc/schrootと入力し、続けてgksu gedit schroot.confと入力します。これにより、ファイルを編集できます。

  4. 次の行を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を使用します。

29
RedGrittyBrick

あなたの最善の策は、私見ですが、ssh chroot jailをセットアップすることです。つまり、/var/www/example.com/ dir。これを行うには、次のようにします。

16
celebdor