Можно сделать это с GNU find
и GNU mv
:
find /dir1 -mindepth 2 -type f -exec mv -t /dir1 -i '{}' +
В основном, путь, который работает если это find
проходит все дерево каталогов и для каждого файла (-type f
) это не находится в каталоге верхнего уровня (-mindepth 2
), это выполняет a mv
для перемещения его в каталог, Вы хотите (-exec mv … +
). -t
аргумент mv
позволяет Вам указать целевой каталог сначала, который необходим потому что +
форма -exec
помещает все исходные местоположения в конце команды. -i
делает mv
спросите прежде, чем перезаписать любые дубликаты; можно занять место -f
перезаписывать их, не спрашивая (или -n
не спросить или перезаписать).
Как Stephane Chazelas указывает, вышеупомянутое только работает с инструментами GNU (которые являются стандартными на Linux, но не большинстве других систем). Следующее несколько медленнее (потому что оно вызывает mv
многократно), но намного более универсальный:
find /dir1 -mindepth 2 -type f -exec mv -i '{}' /dir1 ';'
Я предполагаю, что Вы хотите дать user1
доступ к/var/www/A, потому что Вы посещаете содержание, управляемое user1
с помощью http://your.domain/A? Почему бы не апачи перенаправляют содержание к каталогу в соответствии с пользовательским корневым каталогом?
Alias /A/ /path/to/users/homedir/A
Это достигнет результата и не иметь для изменения владения/полномочий группы/пользователя/path/to/users/homedir/A.
Однако, если Вы захотите сделать это полномочиями файла, то Вы только сможете достигнуть его путем изменения владения/полномочий/var/www и/var/www/A.
Создайте 'новую группу' (большинство unixes обеспечивает a groupadd
команда), добавляют и апача и user1 к нему. Измените владение группы/var/www/A этой 'новой группе' (с также chown
или chgrp
). Установите полномочия запретить доступ к rw для 'новой группы' и 'других пользователей' к/var/www каталогу (chmod 711 /var/www
) и предоставьте доступ к 'новой группе' для/var/www/A (chmod g+rwx /var/www/A
).
Ссылки:
Создайте группу group1
, добавить apache
и user1
кому: group1
, затем измените группу, которая владеет /var/www/A
кому: group1
использование chgrp
как так:
# use `-R' if you want to do this recursively, that is grant `group1' access to
# all sub-directories of `A' as well as access to `A' itself.
# as a regular user with sudo rights:
sudo chgrp -R group1 /var/www/A
# as root
chgrp -R group1 /var/www/A
Таким образом, user1
не будет член апача и так не сможет читать /var/www
, но все еще сможет читать /var/www/A
, в то время как апач также сможет все еще читать /var/www/A
.
Наконец, проверяют это дважды, элементы группы имеют read/write
использование доступа chmod
как так:
# use `-R' at your own discretion--it acts the same way as `-R' in `chgrp'
# as root
chmod -R g=rw /var/www/A
# as a regular user with sudo rights
sudo chmod -R g=rw /var/www/A
Или что-то как этот.
apache
разве пользователь, это не, группа, и я не могу добавить группу к другой группе в Linux, не так ли?
– slashsbin
07.08.2013, 10:37
user1
администратор Drupal, который должен загрузить/загрузить файлы Модуля Drupal на Многоузловую установку Drupal, полагающийся в/var/www/
– slashsbin 07.08.2013, 10:39Options +FollowSymLinks
для того каталога. – Drav Sloan 07.08.2013, 12:13/var/www/
должен иметь доступ для чтения-записи к, он - каталог модулей, который в вышеупомянутом сценарии является папкойA
. – slashsbin 07.08.2013, 13:40A
все, что требуется - это являющийся за пределами/var/www не имеет никакого значения (символьная ссылка заботится и о php доступе и о веб-контенте). И это двигается Ваш, "не может делать изменения в/var/www владение/разрешение" проблемой. – Drav Sloan 07.08.2013, 14:02