Sobre as permissões de arquivo e o proprietário do arquivo

0

Eu estava tentando instalar um Joomla no meu Macbook Air no XAMPP. Eu o instalei com sucesso, mas quando tento abrir o front-end, fico recebendo esse erro mkdir():permission denied .

Duas questões levantadas enquanto eu tentava resolver este problema:

1) Eu percebi que quando eu faço ls -l , os proprietários de algumas pastas são myname : admin , enquanto os de outras pastas são root:admin . Eu sou o único usuário deste computador e o usuário myname deve ter todos os privilégios de root. Eu não entendo:

A. por que quando eu faço chmod eu tive que sudo chmod .

B. por que existem pastas com diferentes proprietários.

2) Para resolver o problema, eu mudei violentamente o proprietário de todos os arquivos e diretórios relacionados para root:root e permissões daqueles para 0777 . Mas, eventualmente, terei que passar isso para o servidor de produção, não é aconselhável manter o proprietário e permissão como este. Existe alguma maneira melhor de resolver o problema, mantendo a configuração do proprietário / permissão o mais intacta possível?

    
por shenkwen 29.03.2016 / 16:20

1 resposta

1

O OS X opera um pouco como o Ubuntu, pois o usuário padrão não tem privilégios administrativos diretamente, mas é dado a eles por meio de sudo . Ainda existe uma conta root, mesmo que você não consiga entrar nela. Isso é feito por razões de segurança - uma grande quantidade de malware do Windows na era dos anos 2000 teve acesso a fazer coisas ruins em um nível de sistema, porque todos os comandos executados eram como um administrador.

A resposta para por que certos arquivos eram de propriedade do root depende de quais arquivos específicos eles eram e como chegavam lá. Mas eu diria:

  • arquivos de sistema criados pelo OS X são root porque você normalmente não deveria tocá-los
  • as coisas criadas pelo instalador do xampp provavelmente definem as permissões para o root porque você não deve mexer com elas
  • e / ou você executou o instalador como root (via sudo) e esse foi o usuário que foi selecionado e recebeu a propriedade

Você tinha que usar o sudo no comando chown / chmod porque os usuários não privilegiados não têm permissão para alterar a propriedade dos arquivos e diretórios de outros usuários. Imagine se eles pudessem! Eu poderia me dar permissão para editar seu diretório pessoal, ou /etc/passwd !

Você está certo ao verificar que o 777 não é apropriado para a produção. Você esperançosamente não estará usando o xampp em produção, já que ele não é projetado especificamente para isso, mas além disso, em /var/www (ou onde quer que você esteja colocando isso):

  • coisas que precisam ser modificadas pelo servidor da Web (como diretórios de cache com preenchimento automático) podem ser graváveis em grupo
  • todo o resto só deve ser escrito pelo proprietário
  • tudo deve ser de propriedade de: www-data (ou qualquer grupo em que o apache esteja)

Isso impede que um invasor que encontre uma vulnerabilidade em um de seus scripts hospedados seja capaz de escrever muito de qualquer coisa, mas ainda assim facilita a inserção de alterações no site.

    
por 29.03.2016 / 18:12