Как установить разрешения для каждого каталога по пути к каталогу - PullRequest
3 голосов
/ 30 августа 2011

Я создаю удаленный путь к каталогу на веб-сервере, который хотел бы быть исполняемым. Я создаю его удаленно с помощью команды вроде:

ssh user@machine mkdir -p a/b/c/d/e/f

Далее, я бы хотел иметь возможность использовать каталоги chmod a - f, но избегать chmod -r в корне удаленного каталога.

Существует ли элегантный механизм для запуска с пути a/b/c/d/e/f и выполнения эффективного chmod a+x a; chmod a+x a/b; chmod a+x a/b/c; ... без разбора каждого chmod?

Ответы [ 4 ]

1 голос
/ 30 августа 2011

Может быть что-то вроде этого:

DIR=
for i in a b c d e f; do
    DIR=$DIR$i/
    chmod a+x $DIR
done
1 голос
/ 30 августа 2011

Можно подумать, что вы могли бы создать скрипт удаленного bash следующим образом (имена каталогов должны быть разделены пробелами):

#!/bin/bash
for i in $*
do
  mkdir $i
  chmod a+x $i
  cd $i
done

Или вы можете установить umask как umask 066, который будет устанавливать разрешения по умолчанию для всего, что вы создаете. См. этот сайт для объяснения.

0 голосов
/ 30 августа 2011
#!/bin/sh

perm=$1
shift

# iterate over all argument paths
for p; do
    # chmod up successively from destination 
    while true; do
        case $p in
            */* ) chmod "$perm" "$p"
                   p=${p%/*} ;;
            * ) break ;;
        esac
    done
done
0 голосов
/ 30 августа 2011

вы можете использовать find команду

find /path_at_remote -type d -exec chmod a+x "{}" \;  (not tested)
...