Gosto nano
e uso muito. Um aplicativo relacionado é o rnano
.
Do rnano
manual:
DESCRIPTION
rnano runs the nano editor in restricted mode. This allows editing
only the specified file or files, and doesn't allow the user access to
the filesystem nor to a command shell.
In restricted mode, nano will:
• not allow suspending;
• not allow saving the current buffer under a different name;
• not allow inserting another file or opening a new buffer;
• not allow appending or prepending to any file;
• not make backup files nor do spell checking.
Quando devo usar rnano
?
Suspeito que o caso de uso pretendido para
rnano
(ounano -R
) seja fornecer um editor utilizável em cenários privilegiados ou com entrada de teclado não confiável. Por exemplo, se você quiser dar a outra pessoa um editor usando sua conta, ela não poderá acessar outros arquivos. Da mesma forma, seria útil limitar o perigo desudo
acesso a um editor; mas nesses casossudoedit
deve ser usado.O modo restrito foi adicionado na versão 1.3.3 , lançada em junho de 2004. O patch inicial de fevereiro de 2004 não dá muita justificativa:
David Lawrence Ramsey estendeu bastante o patch antes de fundi-lo em abril de 2004.
Outros editores possuem modos restritos, com definições variadas de “restrito”; por exemplo, o Vim 5 adicionou um modo restrito em 2002 (invocado usando
-Z
ourvim
, igual aornano
patch original) que impede qualquer acesso a um shell externo.Você pode usá-lo assim
sudoers
, para permitir que um conjunto selecionado de usuários edite um arquivo de configuração específicoO arquivo só deve ser gravável por
otheruser
, portanto, esses usuários não poderão editá-lo normalmente. Então eles poderão usar:Eles poderão editar o arquivo, mas não farão mais nada com os privilégios desse usuário, pois
rnano
proíbe o acesso a outros arquivos ou a saída para um shell.Você pode usá-lo para permitir que as pessoas editem os arquivos selecionados sem conceder acesso ao shell.
Digamos que Steve, o secretário, precise ser capaz de atribuir aos funcionários vários aliases de e-mail da empresa. No entanto, você não deseja dar a Steve uma conta shell completa no servidor de e-mail da empresa, porque isso permitiria que ele bisbilhotasse e executasse comandos arbitrários. Talvez Steve fique entediado um dia e encontre um comando explorável no servidor que eles possam usar para ler as conversas privadas do CEO, ou a conta de uso único de Steve seja comprometida por algum malware e usada para implantar um minerador de bitcoin no servidor. Todo tipo de coisas desagradáveis podem acontecer quando as pessoas têm privilégios de que não precisam.
Então, o que você faz? Você cria uma conta para Steve no servidor de e-mail, mas configura-o para permitir apenas
rnano /etc/aliases
e nada mais. Você pode fazer isso usando aForceCommand
opção insshd_config
ou usandocommand=
inauthorized_keys
(nesse caso, eles nem precisam de sua própria conta) ou configurando seu shell de login adequadamente, se eles fizerem login usando algo diferente de SSH.Poderia ser usado para fornecer uma janela de editor como parte de algum outro aplicativo.
Um exemplo fácil seria corrigir um conflito de mesclagem (acho que os fluxos de trabalho do CVS funcionavam muito assim) ou editar uma mensagem de feedback de erro antes de enviá-la.
Nem precisa ser privilegiado, apenas não é desejável alterar o nome do arquivo.