Мне нужно установить права на чтение и запись для root
пользователя в каталог subfolderN
и все его родительские папки до root
.
Я могу сделать это руками:
$ sudo chmod +rx /root/subfolder1/subfolder2/subfolderN
$ sudo chmod +rx /root/subfolder1/subfolder2
$ sudo chmod +rx /root/subfolder1
$ sudo chmod +rx /root
Но если N
большой, я устал. Как сделать это автоматически одной командой?
permissions
directory
Максим Ефремов
источник
источник
/root
мир читабельным.Ответы:
Это можно легко сделать в оболочке, начиная с subdir и двигаясь вверх:
Это начинается с любого файла / каталога, который вы также установили для f, и работает с каждым родительским каталогом, пока не встретится "/" (или с тем, что для строки в условии цикла установлено). Это не chmod "/".
источник
f
это относительный путь, и я хочу остановиться на том, к чему он относится вместо/
?$f
этоfoo/bar
будет$f
когда - нибудь изменится.
? Да,dirname
делает это. СпасибоС
csh
,tcsh
,ksh
,zsh
,bash
,fish
илиyash -o braceexpand
:С
zsh
:Или вы можете определить функцию квалификатора glob, например:
Используется, например, как:
Обратите внимание, что
chmod +rx
это зависит от Umask. Если выumask
не включите007
, это сделает/root
каталог доступным для чтения и доступным для мира, что является плохой идеей./root
как правило, для личных вещей суперпользователя, плохая идея разоблачить это.источник
,
в{,/subfolder}
делает?/subfolder
; так/root{,/subfolder}
производит/root
и/root/subfolder
sh
Ну, вы можете сделать что-то более сложное, например:
Чтобы увидеть, что это будет делать, замените
chmod
вызов на print:источник
Я не знаю, что вы пытаетесь сделать, но лучше, чем вы не принимаете рекурсивную легкомысленность . Тем не менее, прочитайте фактический ответ:
Хм ... почему бы просто не использовать рекурсивный.
Или, если вам не нравится, вы можете дать
chmod
несколько каталогов:источник
chmod -R /root
меняет все под/root
- включая обычные файлы и все каталоги. Речь идет об изменении только одной цепочки каталогов.