Lshell-限定シェル
ユーザーが歩いて、指定されたディレクトリでユーザーを簡単かつ簡単にロックし、実行するコマンドを制限できるようにしました。 CentOSおよびDebianリポジトリにあり、次のようにインストールできます。
yum install lshell
apt-get install lshell
最新バージョンが必要な場合:
wget https://github.com/ghantoos/lshell/releases/download/0.9.16/lshell-0.9.16.tar.gz tar xvfz lshell-0.9.16.tar.gz cd lshell-0.9.16 python setup.py install --no-compile --install-scripts=/usr/bin/
その後、単にユーザーに追加しました
ユーザー:x:502:502 :: /ホーム/ユーザー:/ usr / bin / lshell
構成ファイル
/etc/lshell.conf:
#lshell.py構成ファイル
#
#$ Id:lshell.conf、v 1.27 2010/10/18 19:05:17 ghantoos Exp $
[グローバル]
##ログディレクトリ(デフォルト/ var / log / lshell /)
ログパス:/ var / log / lshell /
##ログレベルを0、1、2、3、または4に設定します(0:ログなし、1:最小冗長、
## 4:すべてのコマンドを記録)
ログレベル:2
##ログファイル名を構成する(デフォルトは%uすなわちusername.log)
#logfilename:%y%m%d-%u
#logfilename:syslog
## syslogを使用している場合は、ログ名を選択できます
#syslogname:myapp
[デフォルト]
##許可されたコマンドのリスト、またはユーザーのPATH内のすべてのコマンドを許可する「all」
許可:['ls'、 'echo'、 'cd'、 'll']
##禁止された文字またはコマンドのリスト
禁止:[';'、 '&'、 '|'、 '' '、'> '、' <'、' $( '、' $ {']
## sudoで使用できる許可されたコマンドのリスト(8)
#sudo_commands:['ls'、 'more']
##ユーザーが取得する前に禁止値を入力したときの警告の数
## lshellを終了し、-1に設定して無効にします。
warning_counter:2
##コマンドエイリアスリスト(bashのエイリアスディレクティブに類似)
エイリアス:{'ll': 'ls -l'、 'vi': 'vim'}
##印刷する紹介テキスト(lshellを入力する場合)
#intro: "==私の個人的なイントロ== \ nlshellへようこそ\ nType '?' または「help」を使用して、許可されたコマンドのリストを取得します "
##%uまたは%hを使用してpromtを構成します(デフォルト:ユーザー名)
#プロンプト:「%u @%h」
##セッションタイマーの秒単位の値
#タイマー:5
##ユーザーを「地理的に」制限するパスのリスト
#path:['/ home / bla /'、 '/ etc']
##ユーザーのホームフォルダーを設定します。 指定されていない場合、home_pathは
## $ HOME環境変数
#home_path: '/ home / bla /'
##ユーザーの環境変数$ PATHを更新します
#env_path: ':/ usr / local / bin:/ usr / sbin'
##環境変数を追加する
#env_vars:{'foo':1、 'bar': 'helloworld'}
## scpの使用を許可または禁止(1または0に設定)
#scp:1
## scpアップロードを禁止
#scp_upload:0
## scpダウンロードを禁止
#scp_download:0
## sftpの使用を禁止または禁止(1または0に設定)
#sftp:1
## sshを介して実行できるコマンドのリスト(例:rsync、rdiff-backupなど)
#overssh:['ls'、 'rsync']
##ロギングの厳格さ。 1に設定されている場合、不明なコマンドはすべて見なされます
##禁止。ユーザーの警告カウンターは減少します。 0に設定されている場合、コマンドは
##不明とみなされ、ユーザーは警告のみを受けます(つまり、***不明なシンタックス)
#strict:1
## scpを介して特定のディレクトリにファイルを送信する
#scpforce: '/ home / bla / uploads /'
##履歴ファイルの最大サイズ
#history_size:100
##履歴ファイル名を設定(デフォルトは/home/%u/.lhistory)
#history_file: "/home/%u/.lshell_history"
ご覧のとおり、デフォルトの構成ファイルは、グローバル[global]セクションとデフォルトセクション[default]に分かれています。 特定のユーザーの構成を設定することも可能です:[ユーザー]
ユーザーセクションで指定された設定は、[デフォルト]セクションよりも優先されます
ユーザー向けのサンプルセクションを考えてみましょう。
[ユーザー]
許可:['ls'、 'echo'、 'cd'、 'll'、 'cp'、 'mv']
厳格:1
warning_counter:2
#タイマー:5
パス:['/ var / www / site1'、 '/ var / www / site2']
#allowed_cmd_path:['/ home / user / bin']
scp:1
sftp:1
overssh:['ls'、 'rsync']
許可-許可されたコマンド
warning_counter-ユーザーが端末からスローされるまでの禁止アクションの数(strictが有効な場合のみ機能します)
timer-ユーザーが端末からスローされるまでのタイムアウト(秒)
path-ホームに加えて、ユーザーの訪問を許可されているディレクトリ
allowed_cmd_path-ユーザーが実行可能ファイルを実行できるディレクトリ
scp-ユーザーによるscpの使用を禁止または許可します
sftp-sftpユーザーの無効化または許可
overssh-ユーザーが使用できる許可されたコマンドのリスト、ssh経由で送信
私が発見した唯一の重大な欠陥は、設計のバグです:
cd / && <>
エラーが発生します。 例:
user:~$ cd /home/user && ls lshell: /home/user && ls: No such file or directory
開発者はこのバグを修正することを約束しました
参照:
github.comの製品ページ