Como faço para definir o chmod para uma pasta e todas as suas subpastas e arquivos? [fechado]

existe uma maneira de definir chmod 755 para /opt/lampp/htdocs e todo o seu conteúdo, incluindo subpastas e ficheiros?

também, no futuro, se eu criar uma nova pasta ou ficheiro dentro de htdocs, Como é que as permissões disso podem ser configuradas automaticamente para 755?

isto funciona, mas só para esta pasta:

chmod 775 /opt/lampp/htdocs
Author: jww, 2010-09-18

16 answers

As outras respostas estão correctas, pois {[2] } irá definir estas permissões para todos os ficheiros e subpastas da árvore. Mas por que raio haverias de querer isso? Pode fazer sentido para os diretórios, mas por que definir o bit de execução em todos os arquivos?

Eu suspeito que o que você realmente quer fazer é definir os diretórios para 755 e ou deixar os arquivos em paz ou configurá-los para 644. Para isso, você pode usar o comando find. Por exemplo:

Para mudar todas as pastas para 755 (drwxr-xr-x):

find /opt/lampp/htdocs -type d -exec chmod 755 {} \;

Para mudar todos os ficheiros para 644 (-rw-r--r--):

find /opt/lampp/htdocs -type f -exec chmod 644 {} \;
 2327
Author: WombleGoneBad, 2018-09-26 10:48:25

Verifique a opção-R

chmod -R <permissionsettings> <dirname>

No futuro, pode poupar muito tempo, verificando primeiro a página do homem.
man <command name>

Neste caso:

man chmod
 658
Author: Steve Robillard, 2013-09-25 02:47:26

Se quiser definir as permissões em todos os ficheiros para a+r, e todas as pastas para a+x, e fazê-lo recursivamente através da árvore de sub-pastas completa, use:

chmod -R a+rX *

O X (que é o capital X, Não pequeno x!) é ignorado para arquivos (a menos que eles sejam executáveis para alguém já), mas é usado para diretórios.

 298
Author: Pete, 2013-11-11 20:57:02

Pode usar -R com chmod para atravessar recursivamente todos os ficheiros e subpastas.

Você pode precisar de sudo pois depende de lâmpada ser instalada pelo utilizador actual ou por outro:

sudo chmod 755 -R /opt/lampp/htdocs
 109
Author: ravi ranjan, 2016-07-05 13:24:06

Para definir para todas as subpastas (recursivamente) use-R

chmod 755 /folder -R

e usar umask para definir o padrão para novas pastas / ficheiros cd / pasta umask 755

 67
Author: Topera, 2010-09-18 02:43:19

chmod 755 -R /opt/lampp/htdocs irá definir recursivamente as permissões. Não existe forma de definir automaticamente as permissões para os ficheiros apenas nesta pasta que são criadas depois de definir as permissões, mas você poderá alterar as suas permissões de ficheiros predefinidas para todo o sistema se configurar umask 022.

 47
Author: sleepynate, 2010-09-18 02:38:42

O comando recursivo correcto é:

sudo chmod 755 -R /opt/lampp/htdocs

-R: mudar todas as sub-pastas, incluindo a pasta actual

 44
Author: Pramendra Gupta, 2017-10-11 09:34:03

Você pode querer considerar esta resposta dada pelo nik no superusuário e usar "um chmod" para todos os ficheiros/pastas como este:

chmod 755 $(find /path/to/base/dir -type d)
chmod 644 $(find /path/to/base/dir -type f)
 22
Author: Iam Zesh, 2017-03-20 10:18:14

Utilizar:

sudo chmod 755 -R /whatever/your/directory/is
No entanto, tem cuidado com isso. Ele pode realmente prejudicá-lo se você alterar as permissões dos arquivos/pastas erradas.
 20
Author: Nate Starner, 2013-09-25 02:49:26
Aqui está outra maneira de definir diretórios para 775 e arquivos para 664.
find /opt/lampp/htdocs \
\( -type f -exec chmod ug+rw,o+r {} \; \) , \
\( -type d -exec chmod ug+rwxs,o+rx {} \; \)
Pode parecer longo, mas é muito fixe por três razões:
    Varre pelo sistema de arquivos apenas uma vez em vez de duas.
  1. proporciona um melhor controlo sobre como os ficheiros são tratados vs. como as pastas são tratadas. Isto é útil ao trabalhar com os modos especiais como o sticky bit , que provavelmente quer aplicar nas pastas, mas não arquivo.
  2. usa uma técnica directamente das páginas man (ver abaixo).

Note que eu não confirmei a diferença de desempenho (se houver) entre esta solução e a de simplesmente usar dois comandos find (como na solução de Peter Mortensen). No entanto, ver um exemplo semelhante no manual é encorajador.

Exemplo de man find Página:

find / \
\( -perm -4000 -fprintf /root/suid.txt %#m %u %p\n \) , \
\( -size +100M -fprintf /root/big.txt %-10s %p\n \)

Traverse the filesystem just once, listing setuid files and  direc‐
tories into /root/suid.txt and large files into /root/big.txt.
Saúde.
 19
Author: chrisfargen, 2013-11-17 07:04:26

chmod -R 755 directory_name funciona, mas como você guardaria arquivos novos para 755 também? As permissões do arquivo se tornam a permissão padrão.

 11
Author: Sanchit Gupta, 2017-08-22 12:03:34

Quer certificar-se de que os ficheiros e pastas apropriados são chmod-ed/as permissões para esses ficheiros são apropriadas. Para todas as pastas que deseja

find /opt/lampp/htdocs -type d -exec chmod 711 {} \;

E para todas as imagens, JavaScript, CSS, HTML...não devias executá-los. Então use

chmod 644 img/* js/* html/*

Mas para todo o código lógico( por exemplo, o código PHP), você deve definir permissões de modo que o Usuário não possa ver esse código:

chmod 600 file
 9
Author: NikolaiDante, 2014-06-22 22:07:22

Para Mac OS X 10, 7 (Leão), é:

chmod -R 755 /directory
E sim, como todos os outros dizem, Tem cuidado ao fazer isto.
 7
Author: wmartin, 2013-09-25 02:56:19

Acho que o Adam estava a perguntar como mudar o valor de umaask para todos os processos que ligam para operar no directório {[[2]}.

A máscara de modo de criação de ficheiros do utilizador (umask) é usada para determinar a permissão de ficheiros para os ficheiros recentemente criados. Ele pode ser usado para controlar a permissão de arquivo padrão para novos arquivos.

Por isso, se irá usar algum tipo de programa de ftp para enviar ficheiros para /opt/lampp/htdocs, terá de configurar o seu servidor de ftp para usar uma máscara que deseje.

Se forem criados ficheiros / directórios por exemplo pelo php, você precisa modificar o código php

<?php
umask(0022);
// other code
?>

Se irá criar novos ficheiros/pastas da sua sessão da bash, poderá definir um valor umask no seu perfil de linha de comandos~/.bashrc Ou pode configurar umask em /etc/bashrc ou /etc/profile ficheiro para todos os utilizadores. adicionar o seguinte ao ficheiro: umask 022

Sample umask Values and File Creation Permissions
If umask value set to   User permission     Group permission     Others permission
000                         all              all                   all
007                         all              all                   none
027                         all          read / execute            none

E para alterar as permissões dos ficheiros já criados, poderá usar o find. Espero que isto ajude.

 5
Author: Viktor, 2015-12-21 09:03:06
Existem duas respostas para encontrar arquivos e aplicar a eles. O primeiro é find O arquivo e aplicar {[[2]} como ele encontra (como sugerido por @WombleGoneBad).
find /opt/lampp/htdocs -type d -exec chmod 755 {} \;

A segunda solução é gerar uma lista de todos os ficheiros com o comando find e fornecer esta lista ao comando chmod (como sugerido por @lamgesh).

chmod 755 $(find /path/to/base/dir -type d)

Ambas as versões funcionam bem, desde que o número de ficheiros devolvidos pelo comando find seja pequeno. A segunda solução parece óptima para os olhos e mais legível do que o primeiro. Se houver um grande número de arquivos, a segunda solução retorna erro : Argument list too long.

Então a minha sugestão é:
  1. Use chmod -R 755 /opt/lampp/htdocs Se quiser alterar as permissões de todos os ficheiros e pastas de uma vez.
  2. utilize find /opt/lampp/htdocs -type d -exec chmod 755 {} \; Se o número de ficheiros que está a utilizar for muito grande. A opção -type x procura apenas por um tipo específico de ficheiro, onde o d é usado para encontrar o directório, o f para o ficheiro e o l para a ligação.
  3. utilizar chmod 755 $(find /path/to/base/dir -type d) caso contrário
  4. Melhor para utilizar o primeiro em qualquer situação
 4
Author: Prabhu, 2013-10-21 19:58:49
É muito simples.

No Terminal, ir para o Gestor de ficheiros. exemplo: sudo nemo. Go /opt/ em seguida, clique propriedades → Permissão. e depois Outras. Finalmente, mude para criar e excluir e acess de arquivo para ler e escrever e clique no botão Aplicar... E trabalho.

 2
Author: Debian., 2014-06-16 09:57:54