Eu preciso definir permissões de leitura e gravação para root
o diretório do usuário subfolderN
e todas as suas pastas pai até root
.
Eu posso fazer isso pelas mãos:
$ sudo chmod +rx /root/subfolder1/subfolder2/subfolderN
$ sudo chmod +rx /root/subfolder1/subfolder2
$ sudo chmod +rx /root/subfolder1
$ sudo chmod +rx /root
Mas se N
for grande, estou cansado. Como fazer automaticamente por um comando?
permissions
directory
Maxim Yefremov
fonte
fonte
/root
mundo legível.Respostas:
Isso pode ser feito facilmente no shell, começando no subdir e movendo-se para cima:
Isso começa com qualquer arquivo / diretório que você definir f também e funciona em todos os diretórios pai, até encontrar "/" (ou o que quer que você configure a string na condição do loop para). Não chmod "/".
fonte
f
for um caminho relativo, e eu quero parar com o que é relativo em vez de/
?$f
forfoo/bar
,$f
alguma vez mudará para.
? Simdirname
faz isso. ObrigadoCom
csh
,tcsh
,ksh
,zsh
,bash
,fish
ouyash -o braceexpand
:Com
zsh
:Ou você pode definir uma função qualificadora global como:
Para ser usado, por exemplo, como:
Observe que
chmod +rx
é afetado pelo umask. Se o seuumask
não incluir007
, tornará o/root
diretório legível e acessível ao mundo, o que é uma má ideia./root
é tipicamente para coisas particulares do superusuário, é uma má ideia expô-lo.fonte
,
em{,/subfolder}
faz?/subfolder
; então/root{,/subfolder}
produz/root
e/root/subfolder
sh
Bem, você poderia fazer algo um pouco mais complexo como:
Para ver o que isso fará, substitua a
chmod
chamada por print:fonte
Não sei o que você está tentando fazer, mas é melhor do que você não vê a recursiva de ânimo leve . Dito isto, leia a resposta real:
Umm ... por que não usar apenas recursivo.
Ou, se você não gostar, pode fornecer
chmod
vários diretórios:fonte
chmod -R /root
muda tudo sob/root
- incluindo arquivos regulares e todos os diretórios. A questão é alterar apenas uma cadeia de diretórios.