LShellまたはLimitedShellは、特定のコマンドとディレクトリのセットに対してユーザーを制限するためにPythonで記述されています。アクセスが制限されたユーザー環境を作成できます。また、SSHアクセスを介してコマンドを無効にすることもできます。
限定シェルのインストール
次のコマンドを使用して、DebianベースのシステムにLShellパッケージをインストールします。その他のオペレーティングシステムの場合は、ディストリビューション用のlshellのパッケージをGoogleで検索する必要があります。
$ sudo apt-get install lshell
ユーザーをLShellに切り替えます
次に、必要なユーザーのデフォルトシェルとしてLShellを設定します。たとえば、ユーザーsarahのシェルを変更します。
$sudo chsh sarah Changing the login shell for sarah Enter the new value, or press ENTER for the default Login Shell [/bin/lshell]:/usr/bin/lshell
次のように、ユーザーアカウントの作成時にユーザーのデフォルトシェルとしてlshellを設定することもできます。
$ sudo adduser --shell /usr/bin/lshell raj
LShellの構成
次に、lshellの構成から始めます。 lshell構成ファイル/etc/lshell.confを編集します 。構成ファイルには4つの基本的なセクションがあります。
- <オレンジ>[グローバル]: このセクションでは、グローバルに適用される設定を定義します。たとえば、ログ。
- <オレンジ>[デフォルト]: このセクションでは、すべてのユーザーとグループに適用されるデフォルト値を設定します。このセクションの設定は、ユーザーおよびグループ固有の設定で上書きできます。
- <オレンジ>[ユーザー名]: このセクションでは、ユーザー固有の設定を指定します。このセクション設定はユーザーにのみ適用されます
- <オレンジ>[grp:GROUPNAME]: このセクションでは、グループ固有の設定を指定します。このセクション設定は、グループのすべてのユーザーに適用されます
[デフォルト] プロファイルは、lshellを使用するすべてのユーザーに適用されます。 [ユーザー名]を作成できます セクションまたはグループ[grp:groupname] ユーザーとグループ固有の設定をカスタマイズするセクション。
優先順位はユーザーです>>グループ>>デフォルト 。ユーザーセクションの優先度が最も高く、デフォルトの優先度が最も低くなります。
[global] logpath : /var/log/lshell/ loglevel : 2[default] allowed : ['ls','pwd','cd','cat','cp'] forbidden : [';', '&', '|','`','>','<', '$(', '${'] sudo_commands : ['ls', 'more'] warning_counter : 2 aliases : {'ll':'ls -l', 'vim':'rvim'} prompt : "%[email protected]%h" timer : 0 path : ['/home', '/usr'] env_path : ':/usr/bin/usr/local/bin' env_vars : {'foo':1, 'bar':'helloworld'} scp : 1 # or 0 sftp : 1 # or 0 overssh : ['rsync','ls'] strict : 0 history_file : "/home/%u/.lshell_history"[grp:wheel] warning_counter : 5 overssh : - ['ls'][raj] allowed : 'all' - ['su','rm','mv'] path : ['/etc', '/usr'] - ['/usr/local'] home_path : '/home/raj'[sarah] allowed : + ['ping'] - ['ls'] path : - ['/usr/local'] strict : 1 scpforce : '/home/sarah/uploads/'
たとえば、ユーザー「rja」とユーザー「sarah」はどちらも「wheel」UNIXグループに属しています。
グループホイール:
- ホイールグループのユーザーの警告カウンターは5に設定されています
- ホイールグループのユーザーは「ls」コマンドを使用できません。
ユーザーraj:
- /etcおよび/varにはアクセスできますが、/ usr/localにはアクセスできません
- 彼のPATHexecptコマンドのすべてのコマンドにアクセスできます– su、rm、vm
- 警告カウンターが5に設定されています[デフォルト]
- ホームパスが「/home/raj」に設定されています
ユーザーサラ:
- /homeと/usrにはアクセスできますが、/ usr/localにはアクセスできません
- デフォルトのコマンド「ping」は許可されていますが、「ls」は許可されていません
- strictnessは1に設定されています(不明なコマンドを入力することはできません)
オプション名 | 説明 |
---|---|
| ログディレクトリ(デフォルトは/ var / log / lshell /) |
ログレベルを0、1、2、3、または4に設定します(0:ログなし、1:冗長性が最も少ない、4:すべてのコマンドをログに記録する) | |
| ログファイル名を設定します(デフォルトは%u、つまりusername.logです) |
許可されたコマンドのリスト、またはユーザーのPATH内のすべてのコマンドを許可するための「すべて」 | |
禁止されている文字またはコマンドのリスト— lshellをエスケープできるため、vimを拒否します | |
| sudo(8)で使用できるコマンドのリスト |
| ユーザーがlshellを終了する前に禁止値を入力したときの警告の数。無効にするには、-1に設定します。 |
コマンドエイリアスリスト(bashのエイリアスディレクティブに類似) | |
印刷する紹介テキスト(lshellを入力する場合) | |
%uまたは%h(デフォルト:ユーザー名)を使用してpromtを構成します | |
| ソートプロンプトの現在のディレクトリ更新を設定します(デフォルト:0) |
セッションタイマーの秒単位の値 | |
ユーザーを「地理的に」制限するパスのリスト | |
| ユーザーのホームフォルダを設定する |
| ユーザーの環境変数$PATHを設定します |
| パスのリスト。これらのパス内のすべての実行可能ファイルが許可されます |
| 環境変数を追加する |
| scpの使用を許可または禁止します(1または0に設定) |
| scpのアップロードを禁止する |
| scpのダウンロードを禁止する |
| sftp(1または0に設定)の使用を禁止することを許可する |
| ssh上で実行できるコマンドのリスト |
ログの厳密さ。不明なコマンドの場合は1が禁止され、0が不明と見なされます | |
| scpを介して特定のディレクトリに送信されるファイルを強制する |
| 履歴ファイルの最大サイズ |
| 履歴ファイル名を設定します(デフォルトは/home/%u/.lhistory) |
| ユーザーログイン時に実行するスクリプトを定義する |