Eu posso configurar o sudo (através do arquivo sudoers) para permitir que um usuário execute os comandos chown
e chmod
em qualquer arquivo ou diretório do sistema. No entanto, quero apenas conceder permissão ao usuário para executar esses comandos em arquivos que residem abaixo do /var/www/html
diretório.
Como posso restringir comandos privilegiados para que o usuário possa executá-los apenas em um diretório pré-especificado?
Por exemplo: O comando a seguir concede 777 permissões ao index.html
arquivo.
sudo chmod 777 /var/www/html/index.html
Agora eu quero realizar duas ações
Restrinja de
sudo
forma que o usuário possa executar apenaschmod
echown
de dentro/var/www/html
Impedir que o usuário execute esses comandos em outras partes do sistema (por exemplo, os comandos não podem ser executados
/var/www
ou/var/ftp
)
www-data
grupo eliminando a necessidade dechmod
/chown
qualquer coisa?chown
. Além disso, não vejo razãochmod
para ser executado como root.Respostas:
O que você está pedindo é difícil, se não impossível. Mesmo se você restringisse a aplicação de
chown
echmod
para arquivos em um diretório específico, alguém ainda poderia transmitir um link simbólico e afetar os arquivos em qualquer lugar que quisesse.Felizmente, é altamente provável que o que você está tentando fazer não seja a solução certa para o seu problema real e que exista outro método que funcione.
Geralmente, os usuários que precisam de permissões adicionais para criar e modificar arquivos
/var/www
são adicionados a um grupo (geralmentewww-data
, ou você pode ter grupos diferentes para diferentes partes do site). Você pode usar a propriedade do grupo e os diretórios setgid:chgrp www-data /var/www/html; chmod g+ws /var/www/html
permite que todos nowww-data
grupo gravem no/var/www/html
diretório, e os arquivos criados nesse diretório pertencerão aowww-data
grupo, em vez do grupo principal do usuário que criou o arquivo. No entanto, isso não é muito flexível.O que você provavelmente deve fazer é configurar as listas de controle de acesso para arquivos em
/var/www
. Primeiro, verifique se as ACLs estão ativadas: o sistema de arquivos ativado/var/www
deve ser montado com aacl
opção Consulte Tornar todos os novos arquivos em um diretório acessível a um grupo para obter ajuda sobre isso. Instale também os utilitários da ACL (getfacl
esetfacl
). Em seguida, dê permissões extras à árvore/var/www/html
para os usuários que devem tê-las. Você pode definir ACLs por usuário, mas geralmente é mais fácil colocar usuários que devem ter os mesmos direitos em uma parte do sistema de arquivos em um grupo e definir ACLs para esse grupo. Por exemplo, se os usuários do grupohtml-writers
tiverem acesso de leitura e gravação à árvore em/var/www/html
:fonte
Você pode restringir o comando a ser usado por "myuser" com todos os argumentos no
/etc/sudoers
arquivo com o comandovisudo
add:habilite o log para cada operação adicionando:
saída de amostra:
Quando você usa o sudo, a premissa deve ser que "meu usuário" seja uma pessoa confiável. Cuidado com as permissões de arquivo, não existe uma maneira simples de impedir que um usuário sudo malicioso vincule um arquivo de um recurso externo e altere-o.
fonte
su - prashant
ousu prashant
?sudo /bin/chmod 666 /var/www/html/../../../etc/passwd
e se você consertar isso de alguma forma,ln -s /etc /var/www/html/foo/etc; sudo /bin/chmod 666 /var/www/html/foo/etc/passwd
Na verdade, existe uma maneira bastante simples de fazer isso, criando um script Bash (ou shell de sua escolha) para restringir as modificações feitas em um arquivo ou diretório específico.
No seu exemplo, seria assim:
Então você alteraria o arquivo sudoers para permitir que www-data execute / usr / local / bin / mychmod.
No entanto, lembre-se de que permitir a entrada do usuário (por exemplo, permitir que um usuário altere qual arquivo ou diretório está modificado para chmod) nesse espaço é extremamente perigoso e você precisa saber como filtrar os ataques de injeção se quiser fazer algo como naquela. Um invasor pode facilmente executar qualquer comando como root dessa maneira, comprometendo efetivamente a segurança do seu sistema.
fonte