Chmod на субдиректории.

Статус
В этой теме нельзя размещать новые ответы.

elcaste

Постоялец
Регистрация
30 Ноя 2007
Сообщения
322
Реакции
175
Возможно ли одной коммандой поменять права сразу на все дерево или на папку с находящимися в ней папками/файлами?

Спасибо.
 
В Никсах да - CHMOD

Изменение прав доступа к файлу
Для установки (изменения) прав доступа к файлу используется команда chmod. Она имеет следующий синтаксис:

chmod [ -fR ] абсолютные_права файл ...
chmod [ -fR ] символьное_изменение_прав файл ...
Команда chmod устанавливает права доступа к указанным файлам. Права доступа к файлу может изменять или устанавливать только его владелец или пользователь root. Опция -f означает, что команда не будет сообщать о невозможности установки прав доступа. Опция -R означает, что заданное изменение прав доступа будет применяться рекурсивно для всех подкаталогов, указанных в списке файлов.

Абсолютные права доступа задаются восьмеричным числом, расчет которого (в соответствии с табл. 11) описан в предыдущем разделе. Описанию синтаксиса, используемого для задания символьного изменения прав доступа, посвящен следующий подраздел.

Символьное представление изменения прав доступа
Символьное изменение прав доступа задается в виде списка, через запятую, выражений следующего вида:

[пользователи] оператор [права]
Компонент пользователи определяет, для кого задаются или изменяются права. Он может иметь значения u, g, o и a, задающие изменения прав для владельца, группы, прочих пользователей и всех категорий пользователей. Если пользователи не указаны, права изменяются для всех категорий пользователей. Однако при этом не переопределяются установки, задаваемые маской создания файлов (umask).

Компонент оператор может иметь значения +, - или =, означающие добавление, отмену права доступа и установку в точности указанных прав, соответственно. Если после оператора = права не указаны, все права доступа для соответствующих категорий пользователей отменяются.

Компонент права задается в виде любой совместимой комбинации следующих символов:

r право на чтение

w право на запись

x право на выполнение

l блокирование изменения прав доступа

s выполнение с эффективным идентификатором владельца или группы-владельца

t клейкий бит

Не все сочетания символов для компонента пользователи и компонента права допустимы. Так, s можно задавать только для u или g, а t - только для u. Права x и s не совместимы с l и т.д.

Изменения прав доступа в списке выполняются последовательно, в порядке их перечисления.

Рассмотрим пример изменения прав доступа:

[kravchuk@arturo 10:51:43 /]$ cd /tmp
[kravchuk@arturo 10:51:46 /tmp]$ >f1.txt
[kravchuk@arturo 10:52:01 /tmp]$ chmod +w f1.txt
[kravchuk@arturo 10:52:13 /tmp]$ ls -l *.txt
-rw-r--r-- 1 kravchuk 50 0 Мар 27 10:52 f1.txt
[kravchuk@arturo 10:52:17 /tmp]$ chmod a+w f1.txt
[kravchuk@arturo 10:52:32 /tmp]$ ls -l *.txt
-rw-rw-rw- 1 kravchuk 50 0 Мар 27 10:52 f1.txt
[kravchuk@arturo 10:52:33 /tmp]$ chmod u+x,g=x,o= f1.txt
[kravchuk@arturo 10:53:18 /tmp]$ ls -l *.txt
-rwx--x--- 1 kravchuk 50 0 Мар 27 10:52 f1.txt
[kravchuk@arturo 10:53:20 /tmp]$ chmod ug-x,og+r,u=rwx f1.txt
[kravchuk@arturo 10:54:46 /tmp]$ ls -l *.txt
-rwxr--r-- 1 kravchuk 50 0 Мар 27 10:52 f1.txt
[kravchuk@arturo 10:55:15 /tmp]$ chmod 644 f1.txt
[kravchuk@arturo 10:55:23 /tmp]$ ls -l *.txt
-rw-r--r-- 1 kravchuk 50 0 Мар 27 10:52 f1.txt

Рассмотрим еще один пример, показывающий значение и изменение прав доступа к каталогу:

[kravchuk@arturo 11:05:38 /tmp]$ ls -l | grep d1
drw-r--r-- 2 kravchuk 50 108 Мар 26 17:39 d1
[kravchuk@arturo 11:05:47 /tmp]$ cd d1
bash: cd: d1: Permission denied
[kravchuk@arturo 11:05:57 /tmp]$ chmod 744 d1
[kravchuk@arturo 11:06:26 /tmp]$ cd d1
[kravchuk@arturo 11:06:27 /tmp/d1]$ cd ..
[kravchuk@arturo 11:06:39 /tmp]$ chmod -w d1
[kravchuk@arturo 11:06:51 /tmp]$ cd d1
[kravchuk@arturo 11:06:58 /tmp/d1]$ ls
f3.txt
[kravchuk@arturo 11:06:59 /tmp/d1]$ rm f3.txt
rm: f3.txt not removed: Permission denied


В Тотал Коммандире - нет.
Меняем права на папку. Если нужно на файлы, то выделяем файлы и меняем права.
Телепаты уже отдыхают.
Напиши в какой проге или ОСи, ты хочешь менять права.
 
ОС FreeBSD. Просто если пишу chmod папка1 666, то 666 ставится только на папку1, а на папка1/папка3 права остаются те же, что и были до комманды :nezn: Сервак сейчас лежит, как запустится попробую -R.
 
elcaste
Опция -R тебе поможет для рекурсивного чмoда на папку и все что внутри.
Просто если пишу chmod папка1 666 <...>
Надо писать chmod 666 папка1, а не chmod папка1 666. Иначе чмoд воспринимает параметр "папка1" как свой собственный аргумент.

Yuryus
Напиши в какой проге или ОСи, ты хочешь менять права.
А какая разница-то? :) В винде нету чмoда, а во всех *никс-осях везде одно и то же, потому что posix-стандарт един для всех.
 
  • Заблокирован
  • #5
Вот видел такой скрипт для *никсов, автор может тебе пригодится.

Создаешь файл chmod.php, вставляешь код, запускаешь .../chmod.php? и далее название директории. Какие нужны chmodы меняешь в самом скрипте.

 
Жесть. Такое может понадобиться только при полном отсутствии нормального шелла с условиями чрута веб-сервера и недоступности нормального бинарника chmod :).
 
chmod -R 777 /tmp в тмп будет доступ у всех
 
chmod -R 777 /tmp в тмп будет доступ у всех
Во-первых, в /tmp по-дефолту итак права на запись всем. Для того эта папка и нужна. А если делать рекурсивный чмoд когда там уже что-то есть, вполне вероятно компрометирование информации и, как следствие, раскрытие конфиденциальных данных. Ведь, как известно, многие софтины хранят временные данные в /tmp с правильными правами (доступными только юзеру, запустившему приложение). И если софт запущен от рута и в /tmp есть какая-то важная инфа (раскрытие связки юзер/пасс, важные конфиги, etc.), тот, кому понадобится, может с легкостью просмотреть всю эту информацию. Поэтому не вздумайте вообще такое запускать. Головой думать надо.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху