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


45

ルートアカウントでSSHを使用して接続できる仮想プライベートサーバーがあり、任意のlinuxコマンドを実行して、すべてのディスク領域にアクセスできることは明らかです。

別のユーザーアカウントを作成します。このアカウントは、SSHを使用してこのサーバーにアクセスできますが、たとえば特定のディレクトリのみにアクセスできます。 /var/www/example.com/

たとえば/var/www/example.com/logs/error.log 、このユーザーがFTPを使用してこのファイルにアクセスするときに、巨大なerror.logファイル(500 MB)がある場合、このユーザーはログの最後の行を表示するために500 MBをダウンロードする必要がありますが、次のようなものを実行できます:

tail error.log

したがって、SSHを使用してサーバーにアクセスできるようにする必要がありますが、すべてのサーバー領域へのアクセスを許可したくありません。

これどうやってするの?

回答:


29

chroot ユーザー。


更新:

ヴィンセント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グループ内のすべてのユーザーがホームディレクトリにchrootされることを伝えます(%hはChrootDirectoryコマンドで表します)

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コマンドは、ディレクトリに必要な権限を設定します。これらの権限を設定すると、ユーザーはファイルをアップロードおよびダウンロードできますが、ルートディレクトリにディレクトリまたはファイルを作成できません

シェルアカウントのChrootingは、特定のデバイスファイルとシェルをユーザーのホームディレクトリで使用可能にする必要があるため、もう少し複雑です。次のコマンドは、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に制限されます。残念ながら、これはあまり効果的ではありませんが、どのように設定できるのかがわかります。提供する内容に応じて、追加のライブラリとバイナリをインストールする必要があります。


Ubuntuのコミュニティウェブサイトは言います

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のセットアップ

DNS解決やへのアクセスなどの機能を提供して、chrootをセットアップするために実行できる基本的な手順がいくつかあります/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パッケージのインストールに使用します。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.