К примеру мы имеем чужую папку на винчестере. Но мы довольно часто ею пользуемся и в ней нет ничего особо важного, но для каждого изменения приходиться набирать заветное слово sudo. Конечно можно выставить права 777 на все файлы и папки одной командой, но тогда каждый файл по двойному клику будет предлагать запуститься. А если выставить стандартные для файла права 644, то нельзя будет зайти в папки. Что же делать?
Решение того вопроса, а также краткая информация о правах в linux — под катом.
Для начала совсем немного теории, но в подробном и понятном виде, а также с картинками картинкой
В ОС Linux каждый файл может быть прочитан, записан (т.е. изменён) или выполнен (как программа или различный скрипт).
Например. Видео файлу достаточно только прав на чтение, но вот плеер, который будет его читать должен быть с правами на выполнение.
Каждый файл (или папка) всегда кому-то принадлежит. Обычно его владельцем является создатель. К примеру, файлы системы принадлежат руту (главному пользователю),а файлы в домашней вам. Кроме владельца ещё существуют группы пользователей (к примеру: бухгалтерия, родители, дети и т.п. Несколько пользователей можно легко объединить в группу) и все остальные(те кто не является ни владельцем и ни входит в группу).
Итого у нас есть 3 состояния файла и с ним могут производить различные действия три разных типа пользователей. Если их перемножить, то получится 9 различных… ячеек, куда можно вписать атрибуты файла.
Что бы было понятней рассмотрим скриншот.
Если обратить внимание на второе выделение, то видно, что это файл (нет буквы d в первой ячейке). Затем идёт три «красных» ячейки, которые указывают на права для владельца. Потом «зеленое » выделение о правах для группы и «желтое» куда относятся все остальные. В данном случае это скрипт, а значит он должен уметь исполняться, о чём и свидетельствует буква «x». Причём права для всех трёх групп (владелец, группы и остальные) одинаковые. Этот скрип лежит в моей личной папке, я один пользуюсь этим компьютером и мне нечего опасаться.
Если посмотреть на первое выделение, то видно, что это jpeg-овый файл (картинка). Ему не зачем думать, что он программа, а значит и нету буквы «x» в параметрах. Его могут читать все, однако нарисовать на картинке кляксу или удалить его может только хозяин. Именно такие права система по умолчанию ставит для всех ваших личных файлов.
В некоторых случаях удобней записывать права в виде цифр. Через команду stat можно посмотреть циферные права на файл или папку. Можете поискать «калькулятор прав доступа» в гугле и поиграться с правами.
Что бы назначить новые права на файл или папку следует выполнить команду: chmod права имя_файла.
Под правами можно писать буквенное обозначение (rwxrwxrwx) или циферное (777). Например отберём права на исполнение скрипта, но оставим предыдущие права:
chmod 666 'Монтировать образ'
Или можно проще
chmod -x 'Монтировать образ'
То есть, что бы отобрать какой-то право у всех групп просто достаточно поставить «-» и написать букву r, w или x. А что бы добавить право, то ставим не «-«, а «+».
Когда требуется приметь одинаковые права на все папки и файлы в каталоге, то перед именем папки нужно поставить ключ -R
chmod 777 -R ~/test
Однако, как писалось выше, это не лучший способ.
Так мы и подошли к тому, ради чего и писалась данная статья. Что бы установить, например, права 755 на все папки следует выполнить следующую команду:
find . -type d -exec chmod 0755 "{}" \;
А для того, что бы выставить права 644 на все файлы в папке и во всех вложенных ниже папках, выполняем команду:
find . -type f -exec chmod 0644 "{}" \;
Напомню, что если изначально файлы вам не принадлежат, то следует добавлять перед командой «sudo».