chroot sshの代わりにLshell

誰もが、時々、開発者が通常のftpを欠いており、sshアクセスを提供する必要があるという事実に出くわします。 そのためクライアントから制限付きのsshアクセスを提供するように依頼されることがあります。 以前はchroot sshを使用していましたが、セットアップは簡単な作業ではありませんでしたが、最近、すばらしいlshell製品に慣れました。



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の製品ページ



All Articles