Gostaria de alterar as permissões de uma pasta e todas as suas subpastas e arquivos em uma única etapa (comando) no Linux.
Eu já tentei o comando abaixo, mas ele funciona apenas para a pasta mencionada:
chmod 775 /opt/lampp/htdocs
Existe uma maneira para definir chmod 755
para /opt/lampp/htdocs
e todo o seu conteúdo, incluindo subpastas e arquivos?
Além disso, no futuro, se eu criar uma nova pasta ou arquivo htdocs
, como as permissões dele serão automaticamente definidas 755
?
Também dei uma olhada neste link:
http://stackoverflow.com/questions/3740187/how-to-set-default-chmod-in-linux-terminal
linux
permissions
directory
chmod
Adão
fonte
fonte
chmod 75 /opt/lampp/htdocs
ou deveria ser mesmochmod 755 /opt/lampp/htdocs
?Respostas:
As outras respostas estão corretas, pois
chmod -R 755
definirão essas permissões para todos os arquivos e subpastas da árvore. Mas por que diabos você gostaria ? 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 deseja fazer é definir os diretórios para 755 e deixar os arquivos em paz ou configurá-los para 644. Para isso, você pode usar o
find
comando Por exemplo:Para alterar todos os diretórios para 755 (
drwxr-xr-x
):Para alterar todos os arquivos para 644 (
-rw-r--r--
):fonte
{} \;
significa a linha?chmod 644 {} \;
especifica o comando que será executadofind
para cada arquivo.{}
é substituído pelo caminho do arquivo e o ponto-e-vírgula indica o final do comando (escapado, caso contrário, seria interpretado pelo shell em vez defind
).Marque a opção -R
chmod -R <permissionsettings> <dirname>
No futuro, você poderá economizar muito tempo verificando primeiro a página do manual:
Então, neste caso:
fonte
man
?man
. Especialmente para algo comogrep
onde se você é novoman
, pode levar muito tempo para localizar exemplos no documento, mas o Google ou o SO fornecem exemplos em segundos.Se você deseja definir permissões em todos os arquivos
a+r
e diretórios ema+x
e fazer isso recursivamente através da árvore de subdiretórios completa, use:O
X
(que é maiúsculoX
, não pequenox
!) É ignorado para arquivos (a menos que já sejam executáveis para alguém), mas é usado para diretórios.fonte
chmod
documentos, onde eu descobri que poderia usarchmod -R g+wX .
. Bravo!x
dos arquivos, se eles já tiverem.Você pode usar
-R
comchmod
para percorrer recursivamente todos os arquivos e subpastas.Você pode precisar do sudo, pois depende da instalação do LAMP pelo usuário atual ou por outro:
fonte
sudo chmod 755 -R /directory
não funcionou, massudo chmod -R 755 /directory
funcionou. Esquisito. Estou usando o Mac os x por sinal.sudo chmod 755 -R
trabalhouO comando recursivo correto é:
-R
: altera todas as subpastas, incluindo a pasta atualfonte
Para definir para todas as subpastas (recursivamente), use -R
E use umask para definir o padrão para novas pastas / arquivos cd / folder umask 755fonte
umask
em 755! Você não poderá listar, ler ou usar quaisquer arquivos ou diretórios criados!λ ~ → umask 022 λ ~ → umask -S u=rwx,g=rx,o=rx λ ~ → umask 755 λ ~ → umask -S u=,g=w,o=w
chmod 755 -R /opt/lampp/htdocs
irá definir recursivamente as permissões. Não há como definir as permissões para arquivos automaticamente somente neste diretório criado após a definição das permissões, mas você pode alterar as permissões de arquivo padrão em todo o sistema definindoumask 022
.fonte
inherit
ser uma solução para muitos casos ou funcionará exclusivamente com o NTFS-3G?myforlder
de outros lugares (como um PC) para esse diretório de destino (em um servidor) porque ele tentará criar uma nova pasta no o diretório de destino com o nome para omyfolder
qual você não tem permissão. Como eu tenhoroot
, eu apenas usochown -R username:usergroup /directory
.Você pode considerar esta resposta dada por nik no superusuário e usar "one chmod" para todos os arquivos / pastas como este:
fonte
-exec
opção defind
para superar oArgument list too long
erro.Usar:
No entanto, tenha cuidado com isso. Pode realmente machucá-lo se você alterar as permissões dos arquivos / pastas errados.
fonte
Aqui está outra maneira de definir diretórios para 775 e arquivos para 664.
Pode parecer longo, mas é bem legal por três razões:
man
páginas (veja abaixo).Observe que 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 da
man find
página:Felicidades
fonte
chmod -R 755 directory_name
funciona, mas como você manteria novos arquivos para 755 também? As permissões do arquivo se tornam a permissão padrão.fonte
Para o Mac OS X 10.7 (Lion), é:
E sim, como todos os outros dizem, tenha cuidado ao fazer isso.
fonte
Você deseja certificar-se de que os arquivos e diretórios apropriados sejam chmod-ed / Permissions para aqueles apropriados. Para todos os diretórios que você deseja
E para todas as imagens, JavaScript, CSS, HTML ... bem, você não deve executá-las. Então use
Mas para todo o código lógico (por exemplo, código PHP), você deve definir permissões para que o usuário não possa ver esse código:
fonte
Eu acho que Adam estava perguntando como alterar o valor umask para todos os processos que tentam operar no
/opt/lampp/htdocs
diretório.A máscara do modo de criação de arquivo do usuário (umask) é usada para determinar a permissão de arquivo para arquivos recém-criados. Pode ser usado para controlar a permissão de arquivo padrão para novos arquivos.
portanto, se você usar algum tipo de programa ftp para fazer upload de arquivos,
/opt/lampp/htdocs
precisará configurar o servidor ftp para usar umask que desejar.Se arquivos / diretórios forem criados, por exemplo, pelo php, você precisará modificar o código php
se você criar novos arquivos / pastas a partir da sua sessão do bash, poderá definir o valor umask no seu perfil do shell ~ / .bashrc Ou pode configurar o umask
/etc/bashrc
ou/etc/profile
arquivo para todos os usuários. adicione o seguinte ao arquivo: umask 022E para alterar as permissões dos arquivos já criados, você pode usar o find. Espero que isto ajude.
fonte
Existem duas respostas para encontrar arquivos e aplicar
chmod
a eles. O primeiro éfind
o arquivo e aplica-sechmod
como ele encontra (como sugerido por @WombleGoneBad).A segunda solução é gerar a lista de todos os arquivos com o
find
comando e fornecer essa lista aochmod
comando (conforme sugerido por @lamgesh).Ambas as versões funcionam bem, desde que o número de arquivos retornados pelo
find
comando seja pequeno. A segunda solução parece ótima para os olhos e mais legível que a primeira. Se houver um grande número de arquivos, a segunda solução retornará um erro:Argument list too long.
Então, minha sugestão é
chmod -R 755 /opt/lampp/htdocs
se você deseja alterar as permissões de todos os arquivos e diretórios de uma só vez.find /opt/lampp/htdocs -type d -exec chmod 755 {} \;
se o número de arquivos que você estiver usando for muito grande. A-type x
opção procura apenas por tipo específico de arquivo, em que d é usado para localizar diretório, f para arquivo e l para link.chmod 755 $(find /path/to/base/dir -type d)
outra formafonte
É muito simples.
No Terminal, vá para o gerenciador de arquivos. exemplo:
sudo nemo
. Vá/opt/
e clique em Propriedades → Permissão . e depois Outro . Por fim, altere para criar e excluir e acessar o arquivo para ler e escrever e clique no botão aplicar ... E trabalhe.fonte