2014-09-14 3 views
0

У меня есть сайт (много файлов и папок), и мне нужно изменить разрешения по умолчанию. Файлы: 644 и папки 755. Теперь у меня 666 для файлов и 777 для папок. Я не могу сделать это вручную, потому что у меня есть много папок, в которые входят папки и файлы и т. Д.Изменение разрешений в centos автоматически

Моя ОС - Centos, поэтому я могу запустить сценарий оболочки bash.

Как я могу автоматически изменить эти разрешения? Любой код будет приветствоваться.

ответ

1

Решение найдено! Просто проделайте следующее:

find /path/path -type d -exec chmod 755 {} \;

find /path/path/ -type f -exec chmod 644 {} \;

+0

не забудьте принять свой собственный ответ! – OneHoopyFrood

+0

Как это автоматическое? Вы должны запускать это вручную каждый раз, когда хотите это сделать. – Barmar

+0

Да, это руководство, но вам не нужно менять разрешения для каждого руководства по файлу. Вы просто запускаете это comamnds и его нормально. Если вы хотите сделать полную автоматическую, просто сделайте cronjob с этими командами. – Greg

3

Вы можете объединить решение в единую find команду. Это должно быть примерно в два раза быстрее, потому что ему не придется дважды ходить по файловой системе.

find /path/path -type d -exec chmod 755 {} + -o -type f -exec chmod 644 {} + 

Завершение команды с + вместо \; также является более эффективным. Вместо того, чтобы запускать команду chmod отдельно для каждого файла, она объединяет все имена файлов в длинный аргумент с одним исполнением (хотя, если аргумент слишком длинный для одного выполнения, он будет разбивать их оптимально).

Если вы хотите сделать это автоматически, вы можете поместить его в задание cron, которое периодически запускается.

1

Не очень хорошо документированная, но очень полезная функция Gnu chmod заключается в том, что вы можете использовать символическое разрешение X вместо x. x просто представляет исполняемое разрешение, тогда как X представляет собой исполняемое разрешение, если (а) целью является каталог или (б) целью является файл и установлен один из исполняемых разрешений.

Это позволяет сделать следующее:

chmod -R u=rwX,go=rX /path/to/directory 

, который будет рекурсивно (-R) установить права доступа всех каталоги и исполняемые файлы для rwxr-xr-x и разрешение всех обычных файлов в rwxr--r-- (то есть, 0755 и 0644 соответственно).

Другой пример: предположим, что у вас есть проект с исполняемыми файлами, которые в настоящее время доступны только вам. (Таким образом, в настоящее время разрешениями являются rwx------ или rw-------). Теперь вы хотите, чтобы сделать их читаемыми, с возможностью поиска (для каталогов) и исполняемый файл (для исполняемых файлов) членам группы pundits:

chgrp -R pundits /path/to/the/project 
chmod -R g+rX /path/to/the/project 

Теперь каталоги и исполняемые файлы rwxr-x--- и другие файлы rwxr----- (а также , все группы были изменены на pundits).

0

Мы можем установить cron для выполнения этой задачи.

(make sure the /root/permission.sh should be 755) 
# cat /root/permission.sh 
#!/bin/bash 
/bin/find /path/to/change -type f -not -perm 644 -exec chmod 644 {} \; >/dev/null 2>&1 
/bin/find /path/to/change -type d -not -perm 755 -exec chmod 755 {} \; >/dev/null 2>&1 

каждые 5 минут хрон:

0 */5 * * * /root/permission.sh