Não faça isso. rbash
deve somente ser usado em um ambiente já seguro, a menos que você saiba o que está fazendo. Há muitas maneiras de criar um shell bash restrito que não é fácil prever com antecedência.
As funções podem ser facilmente substituídas simplesmente fazendo command bash
ou command sh
.
Quanto às suas perguntas:
- Você não pode definir várias funções ao mesmo tempo diretamente. Você teria que fazer algo assim:
x() { foo; }
alias f1=x
alias f2=x
-
rbash
funciona porquebash
verifica o valor deargv[0]
no lançamento. Se o nome da base, com os traços iniciais separados, for igual aRESTRICTED_SHELL_NAME
(o padrão érbash
, consulteconfig.h
), ele será executado no modo restrito. Esta é a mesma maneira que ele é executado no modo de conformidade POSIX se chamado comosh
. Você pode ver isso no código a seguir deshell.c
no bash 4.2, linhas 1132-1147:
/* Return 1 if the shell should be a restricted one based on NAME or the
value of 'restricted'. Don't actually do anything, just return a
boolean value. */
int
shell_is_restricted (name)
char *name;
{
char *temp;
if (restricted)
return 1;
temp = base_pathname (name);
if (*temp == '-')
temp++;
return (STREQ (temp, RESTRICTED_SHELL_NAME));
}