Usando Crontab -e com editor não padrão com shell limitado (não pode exportar uma variável ou executar um editor)

1

Eu tenho um usuário com direitos altamente restritos.

Embora eu possa modificar meu crontab, o editor padrão é nano , o que pode se tornar um problema real quando você está acostumado com vi e não quer estragar um ambiente de produção.

Não consigo exportar uma variável nem declarar uma, por isso export EDITOR='vi' ou EDITOR=vi crontab -e simplesmente não funcionam ... e eu nem tenho permissão para executar o vi (ou nano) diretamente, então não tenho idéia de como eu realmente poderia lidar com isso.

Existe uma maneira de contornar essas restrições?


Para dar uma ideia das minhas limitações, a mensagem de login é:

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

e o resultado do "?" comando é

cd  clear  crontab  exit  help  history  lpath  ls  lsudo  php  pwd

EDITAR: Esqueci de procurar minha versão do sistema operacional

/ proc / version me diz isso:
Versão 2.6.26-2-amd64 do Linux (Debian 2.6.26-29) ([email protected]) (gcc versão 4.1.3 20080704 (pré-lançamento) ( Debian 4.1.2-25 )) # 1 SMP Dom 4 de março 21:48: 06 UTC 2012

... e cat /etc/debian_version me diz 5.0.10 (o que?!)

Estou mais acostumado a jogar com o Ubuntu agora, mas ainda estou um pouco surpreso.

    
por Balmipour 05.09.2017 / 14:51

2 respostas

1

A julgar pela mensagem de uso, você está executando lshell . Este não é um shell estilo Bourne como bash, ksh, zsh, BusyBox e outros. Não é nem mesmo uma shell restrita como rksh ou rbash. Não tem variáveis, redirecionamentos ou qualquer outro recurso além de executar um conjunto fixo de comandos com alguns argumentos.

Se você conseguir executar o vi, isso significa que há um bug no lshell ou foi configurado incorretamente. Ele foi projetado para impedir a execução de comandos arbitrários.

Como você pode executar php , talvez consiga contorná-lo. Mas obviamente os administradores não pretendem que você faça isso.

Um crontab é geralmente curto, então se você quiser editá-lo com um editor diferente, abra um terminal grande o suficiente, copie tudo para sua máquina local através da área de transferência da GUI, edite e copie na outra direção. No nano, certifique-se de que o agrupamento automático de linha esteja desativado ( Alt + L para alternar), bem como (mas este não deve importar para um crontab) automático indentação ( Alt + I ).

    
por 06.09.2017 / 01:38
0

Se você conseguir transferir arquivos para dentro e fora do sistema, faça um backup do crontab atual:

$ crontab -l >crontab.txt

Se você não conseguir realizar redirecionamentos, basta fazer crontab -l e copiar e colar o crontab (certificando-se de que tudo é idêntico).

Depois, com o arquivo de texto crontab em um sistema não tão bloqueado, atualize-o em um editor.

Transfira o arquivo de volta e faça

$ crontab crontab.txt

Isso deve ser testado adequadamente em um servidor de desenvolvimento idêntico, incluindo se as especificações do trabalho estão corretas, antes da implementação em um servidor de produção. Note que carregar um crontab em crontab desta forma substitui o crontab atual .

Eu não me responsabilizo.

    
por 05.09.2017 / 15:19