Como posso chmod 777 todas as subpastas de / var / www?

54

Estou executando um servidor web e servidor FTP, no qual /var/wwwestá vinculado /home/user/www.

Defino os dois diretórios como chmod 777(o que é bom, pois é apenas para teste).

Posso fazer upload de arquivos /home/user/www, mas sempre que crio um novo diretório, sempre tenho que executar chmod 777nessa pasta.

Caso contrário, quando tento procurar, recebo a mensagem de erro

Você não tem permissão para acessar / testar / neste servidor.

Existe uma maneira de tornar todas as subpastas dentro /var/wwwacessíveis por qualquer pessoa? Ou suas permissões podem ser definidas automaticamente 777? É irritante que eu tenha que digitar chmod 777toda vez.

user1645034
fonte
12
Só vou deixar isso aqui POR FAVOR, CONSIDERE NÃO USAR 777 EM UM SERVIDOR WEB . Uma pergunta melhor a ser feita é "Como faço para que meu servidor web funcione sem usar as permissões 777?"
Marco Ceppi
12
pena que é uma prática ruim e eu me recuso a responder a esta :) esperança eveyone concorda :)
Rinzwind

Respostas:

90

Essa é uma prática ruim, mas espero que você esteja usando isso apenas para desenvolvimento ou tenha outro bom motivo. Você pode especificar as permissões ao criar um diretório usando a -mopção:

mkdir -m 777 dirname

Ou você pode definir as permissões recursivamente.

sudo chmod -R 777 /var/www

Antes de usar qualquer um desses, considere realmente se você deseja que seu sistema de arquivos seja tão acessível.


Edit: Como mencionado por Rinzwind aqui é uma maneira melhor de realizar o que você deseja.

Verifique qual grupo possui o seu /var/wwwdiretório e adicione seu usuário a esse grupo.

sudo adduser yourusername group

O grupo é provavelmente www-data.

Você ficará bem ao definir suas permissões para 775.

Dan
fonte
4
Isso faz o que você solicitou, mas leia isto primeiro. Por que o / var / www não deve ter o chmod 777 . Realmente não é uma prática recomendada.
Warren Hill
8
Por favor, não ajude as pessoas com um método que é uma má prática. Eu preferiria se você explicou como fazê-lo: pela adição de seu usuário a um grupo www-data ou apache;)
Rinzwind
4
A educação vem em primeiro lugar. Ajudar as pessoas a estragar sua máquina não é o caminho do Linux. Então, eu discordo totalmente de você.
Rinzwind
2
O autor da pergunta disse que isso é apenas para teste. Definitivamente, posso entender que o seu lado do desenvolvimento seja facilmente acessível para que você possa trabalhar mais rapidamente. Vou dar a ele o benefício da dúvida, de que ele não é tolo o suficiente para fazer isso com um servidor de produção.
Dan
11
@ dan08 Existem maneiras melhores de testar, incluindo o uso do diretório inicial. Veja askubuntu.com/questions/46331/… e kimbriggs.com/computers/computer-notes/linux-notes/… . Existem maneiras seguras para realizar estes objectivos;)
Panther
7

Arquivos e diretórios no Unix podem ter três tipos de permissões: read ( r), write ( w) e execute ( x). Cada permissão pode ser onou offpara cada uma das três categorias de usuários: o proprietário do arquivo ou diretório; outras pessoas no mesmo grupo que o proprietário; e todos os outros. Para alterar o modo de um arquivo, use o comando chmod. A forma geral é chmod X @ Y arquivo1 arquivo2 ...

chmod a-w file (removes all writing permissions)
chmod o+x file (sets execute permissions for other (public permissions))
chmod u=rx file        (Give the owner rx permissions, not w)
chmod go-rwx file      (Deny rwx permission for group, others)
chmod g+w file         (Give write permission to the group)
chmod a+x file1 file2  (Give execute permission to everybody)
chmod g+rx,o+x file    (OK to combine like this with a comma)

u = user that owns the file
g = group that owns the file
o = other (everyone else)
a = all (everybody)

r = read aces to the file
w = write access
x = execute (run) access 
Lokesh Kumar Bandi
fonte
4
cd /var/www
find -type d ! -perm 777 -exec chmod 777 {} \;

para o ftp que cria todos os arquivos com permissões diferentes, você pode procurar pelo umask do ftpd, como esse daemon é iniciado

Dê uma olhada neste site https://linuxaria.com/article/linux-shell-understanding-umask-with-examples

Jose Pla
fonte
11
+1 para esta é a única resposta que atualiza APENAS pastas e não arquivos
janmyszkier
3

Anúncio de serviço público:


Nunca use o chmod 777 para corrigir problemas


  • É um grande risco de segurança se você executar qualquer serviço disponível ao público, especialmente aplicativos da Web (por exemplo, PHP).

    O modelo de segurança do sistema operacional pressupõe que muitos serviços (como o servidor da web) sejam executados com privilégios reduzidos, para impedir que eles possam modificar arquivos. Definir 777 em arquivos quebra esse design.

    Um usuário remoto pode gravar ou fazer upload de arquivos e, em seguida, induzir o servidor (ou algum outro processo em seu sistema) a lê-los ou executá-los. Scripts ou software podem ter falhas que permitem isso. É muito difícil bloquear de todas as formas possíveis isso se houver diretórios graváveis ​​em todo o mundo.

  • Usado em determinados diretórios do sistema (/ usr, / etc, / var, etc.), ele pode danificar seu sistema de maneiras surpreendentes.

    Alguns arquivos essenciais do sistema precisam de permissões especiais, como permissões setuid / setgid, para serem executados. Por exemplo, sudo. Evite alterar as permissões de arquivo nos diretórios e arquivos configurados pelo próprio sistema.

  • Não há como desfazer e recuperar todas as permissões antigas.

    Ou seja, se você tinha arquivos e pastas com várias permissões diferentes antes, não há como voltar a essas permissões específicas - apenas alterá-las para a mesma coisa, o que pode perder as configurações de permissão específicas necessárias em arquivos específicos.

  • Sempre há uma maneira mais apropriada de alcançar o que você deseja alcançar.

Nesse caso, parece que você deseja apenas que seu servidor da Web possa ler um diretório. Dar permissão de escrita no mundo é muito mais do que você precisa.

Encontre o motivo pelo qual o servidor da Web não pode ler esse diretório (dica: provavelmente é porque o diretório inicial não é legível pelo mundo. O legível pelo mundo é muito mais seguro do que o gravável no mundo - defina seu diretório inicial para algo como 755 ou mova esse diretório www fora de sua casa para algum lugar como / var / www ou / srv).

thomasrutter
fonte
0

Isso não funciona para mim.

sudo chmod -f 777 /path/to/your/file/or/directory

Eu tenho que usar -ftambém.

sudo chmod -R -f 777 /path/to/your/file/or/directory
Janaka Pushpakumara
fonte
0

Se você deseja copiar permissões e / ou propriedade de outro arquivo com o qual esteja satisfeito, use-o sudo chmod --reference = caminho / para / arquivo / para / caminho de referência / para / arquivo / você / deseja / para / alterar / permissino / para

E você também pode fazer o mesmo pela propriedade dos arquivos.

Amir Khalil
fonte