制限されたシェルを持つデフォルト以外のエディタでCrontab -eを使用する(変数をエクスポートしたりエディタを実行したりすることはできません)

制限されたシェルを持つデフォルト以外のエディタでCrontab -eを使用する(変数をエクスポートしたりエディタを実行したりすることはできません)

権限が厳しく制限されたユーザーがいます。

crontabを変更できますが、デフォルトエディタはですnanoviこれは慣れていて、本番環境を中断したくない場合に実際の問題になる可能性があります。

変数をエクスポートまたは宣言できないため、export EDITOR='vi'機能EDITOR=vi crontab -eしません。 vi(またはnano)を直接実行することもできないので、実際にどのように処理するのかわかりません。

これらの制限を回避する方法はありますか?


私の制限に関するアイデアを提供するために、ログインメッセージは次のとおりです。

You are in a limited shell.
Type '?' or 'help' to get the list of allowed commands

「?」の結果コマンドは次のようになります。

cd  clear  crontab  exit  help  history  lpath  ls  lsudo  php  pwd

編集:私のOSのバージョンを見つけるのを忘れました。

/proc/versionによると、
Linuxバージョン2.6.26-2-amd64(Debian 2.6.26-29)([Eメール保護])(gccバージョン4.1.3 20080704(プレリリース)(Debian 4.1.2-25))#1 SMP Sun Mar 4 2012 21:48:06 UTC

...そしてcat /etc/debian_version 言ってみてください5.0.10(何?!)

今、Ubuntuに慣れていますが、まだ少し驚きました。

答え1

使用法メッセージで判断すると実行中です。シェル。これはbash、ksh、zsh、BusyBoxなどのBourneスタイルのシェルではありません。 rkshやrbashなどの制限されたシェルではありません。特定のパラメータを使用して固定命令セットを実行する以外に、変数、リダイレクト、またはその他の機能はありません。

viを実行できる場合は、lshellにバグや設定エラーがあることを意味します。ランダムな命令が実行されないように設計されています。

これで実行できるので、php問題を解決できます。しかし、明らかに管理者はあなたがそうすることを望んでいません。

crontabは通常非常に短いので、他のエディタで編集するには十分な大きさの端末を開き、GUIクリップボードを介してコンテンツ全体をローカルシステムにコピーし、編集して別の方向にコピーします。 nanoでは、自動単語改行(Alt+Lに切り替え)と(しかしcrontabでは重要ではありません)、自動インデント(Alt+)をオフにする必要がありますI

答え2

システムとファイルをやり取りできる場合は、現在のcrontabをバックアップしてください。

$ crontab -l >crontab.txt

リダイレクトできない場合は、crontab -lcrontabをコピーして貼り付けてください(すべてが同じであることを確認してください)。

次に、ロックされていないシステムでcrontabテキストファイルを使用してエディタで更新します。

ファイルを再度転送して実行します。

$ crontab crontab.txt

作業仕様が正しいかどうかを含む、適切なテストを本番サーバーで実装する前に、同じ開発サーバーで実行する必要があります。crontabこのようにcrontabをロードすることに注意してください現在のcrontabの交換

私は責任を負いません。

関連情報