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
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 {} \;
Verifique a opção-R
chmod -R <permissionsettings> <dirname>
man <command name>
Neste caso:
man chmod
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.
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
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
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
.
O comando recursivo correcto é:
sudo chmod 755 -R /opt/lampp/htdocs
-R
: mudar todas as sub-pastas, incluindo a pasta actual
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)
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.
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.
- 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.
- 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.
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.
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
Para Mac OS X 10, 7 (Leão), é:
chmod -R 755 /directory
E sim, como todos os outros dizem, Tem cuidado ao fazer isto.
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.
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.
- Use
chmod -R 755 /opt/lampp/htdocs
Se quiser alterar as permissões de todos os ficheiros e pastas de uma vez. - 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. - utilizar
chmod 755 $(find /path/to/base/dir -type d)
caso contrário
Melhor para utilizar o primeiro em qualquer situação
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.