私はデジタルオーシャンにubuntuサーバーを持っていますが、私のサーバー上のドメイン用のフォルダーを誰かに与えたいのですが、私の問題は、そのユーザーが私のフォルダーやファイルを見たり、そのフォルダーを移動したくないことです。
フォルダ内のこのユーザーを制限して、他のファイルやディレクトリを移動したり表示したりできないようにするにはどうすればよいですか?
私はデジタルオーシャンにubuntuサーバーを持っていますが、私のサーバー上のドメイン用のフォルダーを誰かに与えたいのですが、私の問題は、そのユーザーが私のフォルダーやファイルを見たり、そのフォルダーを移動したくないことです。
フォルダ内のこのユーザーを制限して、他のファイルやディレクトリを移動したり表示したりできないようにするにはどうすればよいですか?
回答:
この方法で問題を解決しました:
$ sudo addgroup exchangefiles
$ sudo mkdir /var/www/GroupFolder/
$ sudo chmod g+rx /var/www/GroupFolder/
$ sudo mkdir -p /var/www/GroupFolder/files/
$ sudo chmod g+rwx /var/www/GroupFolder/files/
$ sudo chgrp -R exchangefiles /var/www/GroupFolder/
その後/etc/ssh/sshd_config
、ファイルの最後に移動して追加しました:
Match Group exchangefiles
# Force the connection to use SFTP and chroot to the required directory.
ForceCommand internal-sftp
ChrootDirectory /var/www/GroupFolder/
# Disable tunneling, authentication agent, TCP and X11 forwarding.
PermitTunnel no
AllowAgentForwarding no
AllowTcpForwarding no
X11Forwarding no
次に、グループにオバマ名を持つ新しいユーザーを追加します。
$ sudo adduser --ingroup exchangefiles obama
これですべてが完了したので、sshサービスを再起動する必要があります。
$ sudo service ssh restart
注意:ユーザーはfile
ディレクトリ
から何もできなくなります。つまり、彼のファイルはすべてファイルフォルダーになければなりません。
sudo su - obama
、それでも他のファイルを見ることができる@badr
制限は賢明な問題であり、一貫して定義する必要があります。できることは、ユーザーの制限付きシェルをデフォルトのシェルとして定義することです。
たとえば/bin/rksh
、のユーザーの既定のシェルとして、ユーザーの定義済みシェルの代わりに(制限付きkornshell)を設定します/etc/profile
。
注:この名前の実行可能ファイルがシステムに存在しない場合は、ハードリンクln /bin/ksh /bin/rksh
を作成ksh
し、名前によって制限されているかどうかを判断します。
制限されたシェルは、(例えば)こと防止するcd
コマンドを、またはしてコマンドを指定する/
呼び出しで(明示的なパス)、それは変更不許可PATH
、SHELL
またはENV
変数を、出力リダイレクションも禁止されています。
あなたはできるまだ提供事前定義(スクリプトの実装者の管理下に!)、ユーザーが無制限の環境で、特定のスクリプトを(複数可)を実行することを可能にするユーザーにシェルスクリプトを。
このコマンドをchroot
使用すると、ユーザーの制限付きルートを作成できます。この質問では、その概念chroot
と使用方法について説明します。
更新:デジタルオーシャンに設定されたchroot jailを検索すると、その環境に固有のドキュメントがさらに表示されます。ここに、あなたが必要かもしれないものに関連していると思うカップルがあります。
Ubuntu 12.04 VPSでテストするためにChroot環境を構成する方法