- Как установить права на файлы/папки рекурсивно в Linux
- Команда chmod Linux
- Команда chmod Linux
- Примеры использования chmod
- Выводы
- Команда chmod Linux. Как установить права доступа 777 на файл или папку в Linux
- Команды для управления правами на файлы и директории
- Команды для управления пользователями
- Базовые понятия прав доступа к файлам и папкам
- Привилегии для групп пользователей
- Чем отличаются права файлов и папок
- Базовые команды для работы с терминалом
- Команда chmod Linux
- Синтаксис chmod
- Параметры chmod
- Техническое описание
- Биты Setuid и Setgid
- Флаг ограниченного удаления (или «Sticky Bit»)
- Как посмотреть разрешения файла
- Примеры использования chmod
- Связанные команды
- Запись прав доступа числом
- Запись прав доступа символами
- Рекурсивное изменение прав доступа
- Видео-обзор команды chmod
- Примеры команд Chmod в Linux
- Изменить разрешение на все файлы в каталоге рекурсивно
- Изменение прав доступа командой chmod
- chmod 777: все для всех
- Как изменить права доступа
- Мнемонические обозначения прав доступа
- Как установить права доступа 777 через SSH
- Никогда не используйте chmod 777
- chmod + x или chmod a + x: выполнение для всех
- CHMOD 755: только владелец может писать, читать и выполнять для всех
- chmod 700: все только для владельца
- CHMOD 666: никто не выполняет
- CHMOD 644: каждый может читать, только владелец может писать
- CHMOD 600: владелец может читать и писать, больше ни для кого
- Примеры команд chmod в символическом режиме
Как установить права на файлы/папки рекурсивно в Linux
Слово рекурсия подходящее слово для того чтобы охарактеризовать работу этой команды по смене прав. Однако не всем знаком этот термин, полагаю можно не вдаваться в подробности, а просто сказать, что разговор идет о том, как можно сменить права доступа на директорию, а так же все вложенные директории и файлы.
Итак, для смены прав будет использоваться всё та же команда chmod, однако к ней будет добавлен параметр –R, который собственно и указывает на то, что необходимо сменить права не только самой директории, но и на вложенные папки и файлы.
Меняем права на директорию /home/qwerty, а так же на всё содержимое директории.
Цифра 755 содержит три атрибута, которые можно растолковать так:
7 — rwx — читать, писать, выполнять
6 — rw- — читать, писать
5 — r-x — читать, выполнять
4 — r— — читать
3 — -wx — писать, выполнять
2 — -w- — писать
1 — —x — выполнять
0 — — — ничего нельзя делать
Три цифры – три отдельных атрибута, первая – права для пользователя, вторая – права для группы, третья – права для остальных.
Кроме всего этого, можно по аналогии, как и с правами, сменить владельца каталогов и файлов в директории. Для этого достаточно воспользоваться командой chown с параметром –R.
Данная команда сменит владельца директории /home/qwerty, а так же все вложенные директории и файлы.
Источник
Команда chmod Linux
Система полномочий в Linux имеет очень важное значение, поскольку благодаря ей можно разделять привилегии между пользователями, ограничить доступ к нежелательным файлам или возможностям, контролировать доступные действия для сервисов и многое другое. В Linux существует всего три вида прав — право на чтение, запись и выполнение, а также три категории пользователей, к которым они могут применяться — владелец файла, группа файла и все остальные.
Эти права применяются для каждого файла, а поскольку все в системе Linux, даже устройства, считаются файлами, то, получается что эти права применимы ко всему. Мы более подробно рассматривали как работают права доступа к файлам Linux в отдельной статье, а этой, я хочу остановиться на команде chmod, которая используется для установки прав.
Команда chmod Linux
Эта команда имеет типичный для команд linux синтаксис, сначала команда, затем опции, а в конце файл или папка, к которой ее нужно применить:
$ chmod опции права /путь/к/файлу
Сначала рассмотрим какими бывают права доступа linux и как они устанавливаются. Пред этим рекомендую прочитать статью про права, ссылка на которую есть выше. Есть три основных вида прав:
- r — чтение;
- w — запись;
- x — выполнение;
- s — выполнение от имени суперпользователя (дополнительный);
Также есть три категории пользователей, для которых вы можете установить эти права на файл linux:
- u — владелец файла;
- g — группа файла;
- o — все остальные пользователи;
Синтаксис настройки прав такой:
группа_пользователей действие в ид_прав
В качестве действий могут использоваться знаки «+» — включить или «-« — отключить. Рассмотрим несколько примеров:
- u+x — разрешить выполнение для владельца;
- ugo+x — разрешить выполнение для всех;
- ug+w — разрешить запись для владельца и группы;
- o-x — запретить выполнение для остальных пользователей;
- ugo+rwx — разрешить все для всех;
Но права можно записывать не только таким способом. Есть еще восьмеричный формат записи, он более сложен для понимания, но пишется короче и проще. Я не буду рассказывать как считать эти цифры, просто запомните какая цифра за что отвечает, так проще:
- 0 — никаких прав;
- 1 — только выполнение;
- 2 — только запись;
- 3 — выполнение и запись;
- 4 — только чтение;
- 5 — чтение и выполнение;
- 6 — чтение и запись;
- 7 — чтение запись и выполнение.
Права на папку linux такие же, как и для файла. Во время установки прав сначала укажите цифру прав для владельца, затем для группы, а потом для остальных. Например, :
- 744 — разрешить все для владельца, а остальным только чтение;
- 755 — все для владельца, остальным только чтение и выполнение;
- 764 — все для владельца, чтение и запись для группы, и только чтение для остальных;
- 777 — всем разрешено все.
Каждая из цифр не зависит от предыдущих, вы вбираете именно то, что вам нужно. Теперь давайте рассмотрим несколько опций команды, которые нам понадобятся во время работы:
- -c — выводить информацию обо всех изменениях;
- -f — не выводить сообщения об ошибках;
- -v — выводить максимум информации;
- —preserve-root — не выполнять рекурсивные операции для корня «/»;
- —reference — взять маску прав из указанного файла;
- -R — включить поддержку рекурсии;
- —version — вывести версию утилиты;
Теперь, когда вы знаете опции и как настраиваются права доступа chmod, давайте рассмотрим несколько примеров как работает команда chmod linux.
Примеры использования chmod
Я не буду приводить много примеров, так как там и так все более-менее понятно после пояснения правил создания выражений установки прав. Сначала самый частый случай — разрешить выполнения скрипта владельцу:
Или можно воспользоваться цифровой записью:
chmod 766 file
ls — l file
Недостаток цифровой записи в том, что вы не можете модифицировать уже существующие права доступа linux. Например, в первом варианте вы просто добавили флаг выполнения для владельца файла, а все остальные права оставили неизменными. В восьмеричном варианте мы полностью заменили текущие права новыми — все для владельца и чтение/запись для группы и остальных. Как видите, права установлены как и ожидалось. Теперь отключим выполнение владельцем:
И снова проверяем:
Дальше разрешим только чтение всем, кроме владельца:
chmod 744 file
ls -l file
Или отберем все права:
chmod ugo-rwx file
Файлы с правами 000 недоступны никаким пользователям, кроме суперпользователя и владельца. Вернем права обратно:
chmod 755 file
ls -l file
Такая же ситуация с файлами, владельцем которых вы не являетесь, если вы хотите изменить их права — используйте sudo. Из модификаторов прав вы можете конструировать любые последовательности, я думаю тут нет смысла разбирать их все. Для того чтобы поменять права на все файлы в папке используйте опцию -R:
chmod -R ug+rw dir
ls -l dir/
Также вы можете смотреть подробную информацию про вносимые изменения, например:
chmod -Rv ug+rw dir
Выводы
В этой небольшой статье была рассмотрена команда chmod linux. Она очень часто используется наряду с такими командами, как chown и umask для управления правами. Надеюсь, эта информация была полезной для вас. Если у вас остались вопросы, спрашивайте в комментариях!
Источник
Команда chmod Linux. Как установить права доступа 777 на файл или папку в Linux
Команды для управления правами на файлы и директории
Все, что нужно для разрешения проблем, связанных с правами в Linux.
- sudo — выдает права суперпользователя. Используется перед любой другой командой в терминале, если нужно выполнить ее от имени администратора. Многие программы и операции запускаются исключительно при наличии этих прав, так что sudo используется часто. Например, чтобы обновить список пакетов в Ubuntu, введем: sudo apt-get update. При этом система запросит пароль администратора.
- sudo su — переводит терминал в режим суперпользователя. В нем каждая введенная команда будет восприниматься системой так, будто перед ней ввели sudo. Помогает запускать несколько скриптов и утилит, требующих права администратора, без необходимости постоянно корректировать их или вводить пароль от учетной записи.
- sudo gksudo — используется для запуска графических утилит от имени администратора. В Windows для этого есть специальная кнопка в контекстном меню, а в Linux — префикс. Синтаксис такой:
sudo gksudo название приложения, нуждающееся в запуске от имени администратора
- sudo !! — запускает предыдущую команду от имени администратора. Используется, если до этого была неудачная попытка запустить программу. Помогает не тратить время на повторный ввод большого количества символов.
- chmod — корректирует права доступа к выбранному файлу. Применяется исключительно с набором аргументов, обозначающих список прав. Допустим, я хочу выдать права на чтение и запись файла Timeweb.html на рабочем столе. Для этого введу в терминал: chmod 777
/Desktop/timeweb.html. Теперь его можно открывать и редактировать. Аналогичным образом пользователи поступают с системными файлами, когда приходит время что-то в них менять. По умолчанию большая их часть защищена от записи.
chown имя учетной записи, которому надо передать правапуть до файла, права на который нужно передать
Команды для управления пользователями
Linux — многопользовательская система. Ей одновременно могут управлять несколько людей. Поэтому здесь достаточно сложная система добавления и редактирования учетных записей.
- useradd — создает новую учетную запись. Например, мы хотим добавить пользователя с именем Timeweb. Для этого вводим: useradd Timeweb. Но свежесозданному аккаунту нужен не только логин, но и пароль. С помощью опций можно задать дополнительные характеристики новому пользователю.
- passwd — задает пароль для учетной записи, работает вкупе с предыдущей командой. То есть сразу после создания аккаунта, пишем: passwd Timeweb (в вашем случае может быть любой другой пользователь). После этого система попросит придумать и указать пароль для новой учетной записи. По ходу набора пароля в терминале не будут отображаться даже звездочки, но он все равно учитывает каждую нажатую клавишу. Продолжайте набирать пароль вслепую.
- userdel — удаляет выбранную учетную запись. Синтаксис простейший:
userdel имя учетной записи, которую нужно стереть
Базовые понятия прав доступа к файлам и папкам
Если же все пустить это дело на самотек и не заморачиваться с установкой нужных привилегий, то вероятность взлома вашего ресурса или заражения его вредоносным кодом будет очень велика. Хорошо, если вы осуществляли резервное копирование (бэкап) всех ваших данных, а если нет?!
Поэтому лучше сразу же, не откладывая в долгий ящик, произвести настройку и изменение Чмод для всех важных объектов вашего движка, исходя из принципа минимализма. Т.е. давать объектам минимально необходимые для корректной работы вебсайта права.
Давайте сначала разберемся в сути вопроса, чтобы понимать, что именно и каким образом мы настраиваем. Итак, приступим. Права доступа разделяются по отношению к файлам и к директориям. Обозначаются они одинаково, но означают немного разное.
В свою очередь, по отношению к файлам возможно:
- r — право на чтение данных.
- w — на изменение содержимого (запись – только изменение содержимого, но не удаление).
- x — на исполнение файла.
Остановимся чуть подробнее на возможности исполнения файла. Дело в том, что в linux любой файлик может быть исполнен. Является ли он исполнительным — определяется не по его расширению (понятие расширение отсутствует в файловой системе Unix), а по правам доступа Chmod. Если у какого-либо файлика установлено право на исполнение “X”, то это означает, что его можно запустить на выполнение.
По отношению к директориям возможно:
- r — право на чтение директории (можно прочитать содержимое директории, т.е. получить список объектов, находящихся в ней)
- w — на изменение содержимого директории (можно создавать и удалять объекты в ней, причем, если вы имеете право на запись, то удалять вы сможете даже те файлы, которые вам не принадлежат)
- x — на вход в директорию (оно всегда проверяется в первую очередь, и даже если вы имеете все нужные привилегии на объект, который закопан глубоко в цепочке каталогов, но не имеете атрибут “X” для доступа хотя бы к одной директории на пути к этому файлике, то к нему вы так и не пробьетесь )
В системах Линукс все это раздает главный администратор компьютера, доступ к которому он получает путем ввода пароля. И если большинство объектов будут иметь права только для чтения, то вирусам на таком компьютере делать будет практически нечего, т.к. они не смогут себя туда ни записать, ни затем исполниться. Именно этого результата нам нужно добиться, выставляя нужные Chmod на объекты нашего сайта.
Привилегии для групп пользователей
Сами привилегии подразделяются на три категории в зависимости от того, кто обращается к объекту:
- «user» — u (непосредственно владелец файлика)
- «group» — g (член той же группы, к которой принадлежит владелец)
- «world» — o (все остальные)
Сервер определяет, к какой группе пользователей вас отнести в момент подключения вас к серверу. Когда вы, например, подключаетесь к серверу по протоколу FTP, то вы входите под своим именем пользователя (и паролем), и тогда сервер относит вас к группе «user» («u)».
Прочие пользователи, которые тоже подключаются по FTP к серверу, будут отнесены к группе «group» («g»), а посетитель, который приходит к вам на вебсайт, используя свой браузер, попадает в группу «world» («o»).
Вариации трех возможных значений «r», «w» и «x» для трех категорий «u», «g» и «o» и определяют Chmod к файлам. Если не задана какая-то категория, то она заменяется знаком дефисом «-». Привилегии указываются последовательно в заданном порядке:
- сначала права для владельца — «u»
- затем для группы — «g»
- и в конце — для всех остальных — «o»
После того, как сервер отнесет посетителя к определенной группе, он предоставляет ему права на действия с объектами, после чего посетитель сможет прочитать, записать или выполнить файл (в зависимости от того, что разрешено делать с данным объектом его группе).
Чтобы посмотреть содержимое каталога, он должен иметь атрибут чтения «r» (для той группы, к которой сервер отнес посетителя). Чтобы создать файлик или папку в уже существующей необходимо, чтобы этот существующий каталог имел атрибут на запись «w».
Для наглядности давайте разберем пример, где владелец файла («user» — «u») имеет все права: на чтение, запись в него и исполнение, а все остальные пользователи только привилегию на чтение. Запись таких Chmod будет выглядеть так: «rwx r– r–».
Рассмотрим ее в деталях: «rwx» (эта запись задает права на объект для владельца — «u»), «r–» (эта запись задает права на тот же объект, но в случае, если посетитель отнесен сервером к группе — «g»), «r–» (эта запись задает привилегии на объект для всех остальных пользователей — «o»).
Чем отличаются права файлов и папок
Получается, что существует три группы пользователей и три возможных действия с объектами. Еще не запутались? Разложим все сказанное выше по полочкам в виде табличек. Сначала наглядно посмотрим, чем они отличаются:
Можно прочитать содержимое каталога
Можно изменять содержимое каталога —
писать и удалять объекты
Запуск файлика на выполнение
Позволяет зайти в каталог и обратиться к его файликам
А так же табличка, показывающая разнообразные комбинации Chmod для разных типов объектов:
Ничего нельзя делать
Доступ к каталогу и его подкаталогам запрещен
Можно читать содержимое
Можно прочитать содержимое каталога
Можно видеть и изменять содержимое
Можно добавить, удалить, изменить файл каталога
Читать, изменять и выполнять файлик
Можно читать, удалять, изменять файлики, сделать каталог текущим, т.е. “войти” в этот каталог.
Можно прочитать, либо выполнить
Можно зайти в каталог и прочитать его содержимое, удалять или добавлять файлы нельзя.
Выполнить, если файлик двоичный
Пользователь может выполнить двоичный файл о существовании которого ему известно, зайти или прочитать каталог запрещено
Базовые команды для работы с терминалом
То, что поможет при работе с консолью в целом.
- clear — очищает всю выведенную в консоль информацию. Пригодится на тот случай, если терминал будет забит выводом других команд или содержимом ранее открытых документов. Помогает «начать с чистого листа».
- history — отображает ранее введенные команды. По умолчанию показывает 10 последних, но при желании это значение можно изменить, добавив в качестве параметра любое число. Например, history 17, чтобы показать 17 последних выполненных операций.
- whatis — вкратце описывает любую установленную программу. Вводим whatis и скармливаем ей в качестве аргумента название интересующей утилиты. Чтобы узнать, что такое wget, напишем whatis wget и получим краткую справку одной строкой.
- man — демонстрирует подробное руководство по выбранной программе или команде. Чтобы выяснить, как работает wget и какие опции для него доступны, введем man wget. Получим массивное полотно со всей документацией для выбранной утилиты. P.S. Выйти из нее можно нажав на клавишу Q.
Команда chmod Linux
Эта команда имеет типичный для команд linux синтаксис, сначала команда, затем опции, а в конце файл или папка, к которой ее нужно применить:
$ chmodопцииправа/путь/к/файлу
Сначала рассмотрим какими бывают права доступа linux и как они устанавливаются. Пред этим рекомендую прочитать статью про права, ссылка на которую есть выше. Есть три основных вида прав:
- r – чтение;
- w – запись;
- x – выполнение;
- s – выполнение от имени суперпользователя (дополнительный);
Также есть три категории пользователей, для которых вы можете установить эти права на файл linux:
- u – владелец файла;
- g – группа файла;
- o – все остальные пользователи;
Синтаксис настройки прав такой:
группа_пользователейдействиевид_прав
В качестве действий могут использоваться знаки “+” – включить или “-“ – отключить. Рассмотрим несколько примеров:
- u+x – разрешить выполнение для владельца;
- ugo+x – разрешить выполнение для всех;
- ug+w – разрешить запись для владельца и группы;
- o-x – запретить выполнение для остальных пользователей;
- ugo+rwx – разрешить все для всех;
Но права можно записывать не только таким способом. Есть еще восьмеричный формат записи, он более сложен для понимания, но пишется короче и проще. Я не буду рассказывать как считать эти цифры, просто запомните какая цифра за что отвечает, так проще:
- 0 – никаких прав;
- 1 – только выполнение;
- 2 – только запись;
- 3 – выполнение и запись;
- 4 – только чтение;
- 5 – чтение и выполнение;
- 6 – чтение и запись;
- 7 – чтение запись и выполнение.
Права на папку linux такие же, как и для файла. Во время установки прав сначала укажите цифру прав для владельца, затем для группы, а потом для остальных. Например, :
- 744 – разрешить все для владельца, а остальным только чтение;
- 755 – все для владельца, остальным только чтение и выполнение;
- 764 – все для владельца, чтение и запись для группы, и только чтение для остальных;
- 777 – всем разрешено все.
Каждая из цифр не зависит от предыдущих, вы вбираете именно то, что вам нужно. Теперь давайте рассмотрим несколько опций команды, которые нам понадобятся во время работы:
- -c – выводить информацию обо всех изменениях;
- -f – не выводить сообщения об ошибках;
- -v – выводить максимум информации;
- –preserve-root – не выполнять рекурсивные операции для корня “/”;
- –reference – взять маску прав из указанного файла;
- -R – включить поддержку рекурсии;
- –version – вывести версию утилиты;
Теперь, когда вы знаете опции и как настраиваются права доступа chmod, давайте рассмотрим несколько примеров как работает команда chmod linux.
Синтаксис chmod
chmod [OPTION]… MODE[,MODE]… FILE…
chmod [OPTION]… OCTAL-MODE FILE…
chmod [OPTION]… –reference=RFILE FILE…
Параметры chmod
-c, –changes Подобно –verbose, но выдает подробный вывод только тогда, когда изменение действительно сделано.
-f, –silent, –quiet Бесшумный режим; подавлять большинство сообщений об ошибках.
-v, –verbose Подробный режим; вывести диагностическое сообщение для каждого обработанного файла.
–no-preserve-root Не обрабатывать ‘/’ (корневой каталог) каким-либо особым образом, который является настройкой по умолчанию.
–preserve-root Не работать рекурсивно на «/».
–reference=RFILE Установить разрешения, соответствующие разрешениям файла RFILE, игнорируя любой указанный РЕЖИМ.
-R, –recursive Менять файлы и каталоги рекурсивно.
–help Показать справочное сообщение и выйти.
–version Вывести информацию о версии и выйти.
Техническое описание
chmod изменяет режим файла каждого указанного ФАЙЛА в соответствии с MODE, который может быть либо символическим представлением вносимых изменений, либо восьмеричным числом, представляющим битовую комбинацию для битов нового режима.
Формат символического режима:
где perms – это ноль или более букв из набора r, w, x, X, s и t, или одна буква из набора u, g и o. Можно указать несколько символьных режимов, разделенных запятыми.
Комбинация букв u, g, o и элементов управления, которые изменят доступ пользователей к файлу: пользователь, которому он принадлежит (u), другие пользователи в группе файла (g), другие пользователи, которых нет в файле группа (o) или все пользователи (a). Если ничего из этого не дано, эффект будет таким, как если бы был задан a, но биты, которые установлены в umask, не затрагивались.
Оператор (+) вызывает добавление выбранных битов режима файла к существующим битам режима файла каждого файла; ” -” вызывает их удаление; и “=” вызывает их добавление и приводит к удалению не упомянутых битов, за исключением того, что неизменяемые установленные пользователем биты каталога и идентификаторы группы не затрагиваются.
Буквы r, w, x, X, s и t выбирают биты режима файла для затронутых пользователей: чтение (r), запись (w), выполнение (x), выполнение только в том случае, если файл является каталогом или уже имеет разрешение на выполнение для некоторого пользователя (X) установите идентификатор пользователя или группы при выполнении (s), флаг ограниченного удаления или фиксированный бит (t). Для каталогов параметры выполнения X и X определяют разрешение на просмотр содержимого каталога.
Вместо одной или нескольких из этих букв вы можете указать одну из букв u, g или o: разрешения, предоставленные пользователю, которому принадлежит файл (u), разрешения, предоставленные другим пользователям, которые являются членами группы файла (g) и разрешения, предоставленные пользователям, которые не входят ни в одну из двух предыдущих категорий (o).
Числовой режим – от одной до четырех восьмеричных цифр (0-7), полученных путем сложения битов со значениями 4, 2 и 1. Предполагается, что пропущенные цифры являются ведущими нулями. Первая цифра выбирает заданный идентификатор пользователя (4) и заданный идентификатор группы (2) и атрибуты ограниченного удаления или закрепления (1). Вторая цифра выбирает права доступа для пользователя, которому принадлежат операции чтения (4), записи (2) и выполнения (1); третий выбирает права доступа для других пользователей в группе файла с теми же значениями; и четвертый для других пользователей, не входящих в группу файла, с теми же значениями.
chmod никогда не меняет права доступа к символическим ссылкам; системный вызов chmod не может изменить их разрешения. Но это не проблема, поскольку разрешения символических ссылок никогда не используются. Однако для каждой символической ссылки, указанной в командной строке, chmod изменяет права доступа к указанному файлу. Напротив, chmod игнорирует символические ссылки, встречающиеся во время рекурсивных обходов каталогов.
Биты Setuid и Setgid
chmod очищает бит set-group-ID обычного файла, если идентификатор группы файла не совпадает с эффективным идентификатором группы пользователя или одним из идентификаторов дополнительной группы пользователя, если только у пользователя нет соответствующих привилегий. Дополнительные ограничения могут привести к игнорированию битов set-user-ID и set-group-ID в MODE или RFILE. Это поведение зависит от политики и функциональности основного системного вызова chmod. В случае сомнений проверьте поведение системы.
chmod сохраняет биты set-user-ID и set-group-ID каталога, если вы не укажете иное. Вы можете установить или очистить биты с помощью символических режимов, таких как u + s и g-s, и вы можете установить (но не очистить) биты с помощью числового режима.
Флаг ограниченного удаления (или «Sticky Bit»)
Ограниченный флаг удаления или закрепленный бит – это один бит, интерпретация которого зависит от типа файла. Это предотвращает удаление или переименование файла в каталоге пользователям, которые не владеют файлом или каталогом; это называется флагом ограниченного удаления для каталога и обычно встречается в каталогах, доступных для записи во всем мире, таких как / tmp. Для обычных файлов в некоторых старых системах этот бит сохраняет текстовое изображение программы на устройстве подкачки, поэтому при запуске он загружается быстрее; это называется липким битом.
Как посмотреть разрешения файла
Быстрый и простой способ составить список прав доступа к файлу с помощью опции длинного списка (-l) команды ls. Например, чтобы просмотреть разрешения для file.txt, вы можете использовать команду:
… который будет отображать вывод, который выглядит следующим образом:
rwxrw-r– 1 user usergroup 123 Feb 03 15:36 file.txt
Примеры использования chmod
Я не буду приводить много примеров, так как там и так все более-менее понятно после пояснения правил создания выражений установки прав. Сначала самый частый случай – разрешить выполнения скрипта владельцу:
Или можно воспользоваться цифровой записью:
chmod 766 file
ls – l file
Недостаток цифровой записи в том, что вы не можете модифицировать уже существующие права доступа linux. Например, в первом варианте вы просто добавили флаг выполнения для владельца файла, а все остальные права оставили неизменными. В восьмеричном варианте мы полностью заменили текущие права новыми – все для владельца и чтение/запись для группы и остальных. Как видите, права установлены как и ожидалось. Теперь отключим выполнение владельцем:
И снова проверяем:
Дальше разрешим только чтение всем, кроме владельца:
chmod 744 file
ls -l file
Или отберем все права:
chmod ugo-rwx file
Файлы с правами 000 недоступны никаким пользователям, кроме суперпользователя и владельца. Вернем права обратно:
chmod 755 file
ls -l file
Такая же ситуация с файлами, владельцем которых вы не являетесь, если вы хотите изменить их права – используйте sudo. Из модификаторов прав вы можете конструировать любые последовательности, я думаю тут нет смысла разбирать их все. Для того чтобы поменять права на все файлы в папке используйте опцию -R:
chmod -R ug+rw dir
ls -l dir/
Также вы можете смотреть подробную информацию про вносимые изменения, например:
chmod -Rv ug+rw dir
Связанные команды
chown – Изменить владельца файлов или каталогов.
getfacl – Показать списки контроля доступа к файлам.
ls – список содержимого каталога или каталогов.
Запись прав доступа числом
chmod 764 myfile
В данном формате права доступа задаются не символами rwx, как описано выше, а трехзначным числом. Каждая цифра числа означает определенный набор прав доступа.
- Первая цифра используется для указания прав доступа для пользователя.
- Вторая цифра для группы.
- Третья для всех остальных.
В таблице ниже приводятся все возможные комбинации разрешений rwx и соответсвующие им числа (которые используются в команде chmod):
0 | разрешения отсутствуют | — |
1 | x — запуск | –x |
2 | w — изменение | -w- |
3 | x+w — запуск+изменение | -wx |
4 | r — чтение | r– |
5 | r+x — чтение+запуск | r-x |
6 | r+w — чтение+изменение | rw- |
7 | r+w+x — чтение+изменение+запуск | rwx |
Рассмотрим использование команды chmod с записью прав доступа числом на примере. Установим для файла права доступа 764:
chmod 764 myfile
Это означает (см. таблицу выше), что для файла myfile мы устанавливаем права доступа 764, которые означают:
- 7 — права для владельца-пользователя. Владелец файла может читать, изменять и запускать файл (r+w+x).
- 6 — права для группы. Пользователи, которые принадлежат группе могут читать и изменять файл (r+w).
- 4 — права для всех остальных. Все остальные могут только читать файл (r).
Если записать 764 с помощью символов (см. таблицу), то мы получим: «rwxrw-r-».
В таблице ниже приведены некоторые часто используемые значения числовых значений прав доступа:
400 | -r——– | Владелец файла может только читать файл. Для всех остальных все действия с файлом запрещены. |
644 | -rw-r–r– | Все пользователи могут читать файл. Владелец может изменять файл. |
660 | -rw-rw—- | Владелец и группа могут читать и изменять файл. Для всех остальных все действия с файлом запрещены. |
664 | -rw-rw-r– | Все могут читать файл. Владелец и группа могут изменять. |
666 | -rw-rw-rw- | Все могут читать и изменять файл. |
700 | -rwx—— | Владелец может читать, изменять и запускать файл. Для всех остальных все действия с файлом запрещены. |
744 | -rwxr–r– | Все могут читать файл. Владелец может также изменять и запускать файл. |
755 | -rwxr-xr-x | Все могут читать и запускать файл. Владелец может также изменять файл. |
777 | -rwxrwxrwx | Все пользователи могут читать, изменять и редактировать файл. |
Запись прав доступа символами
chmod +x myfile1
chmod g=rw myfile2
chmod u-w myfile3
Как вы можете видеть, в данном формате права доступа задаются символами rwx, но в синтаксисе используются и другие вспомогательные символы, например, математические операции «+» и «-» и такие символы как, например, «g» или «u».
Общий синтаксис можно записать примерно так:
chmod (владелец)(математическая операция)(разрешения) имя_файла
Обозначения для владельцев файла следующие:
u | Владелец-пользователь. |
g | Группа. |
o | Все остальные. |
a | Вообще все. |
Математические операции означают следующее:
+ | Добавляет к текущим правам доступа новое разрешение. |
– | Удаляет из текущих прав доступа определенное разрешение. |
= | Устанавливает полностью новые разрешения (предыдущие перезаписываются новыми). |
В одной команде можно перечислять владельцев и их разрешения через запятую (см. пример ниже).
- chmod +x myfile1
В данном случае мы не используем обозначения для владельцев, а значит разрешения устанавливаются для всех пользователей. «+x» означает — установить разрешение на запуск (x) файла для всех пользователей. Это эквивалентно выполнению команды: chmod a+x myfile1.
chmod g=rw myfile2
Здесь используется обозначение g и символ равенства «=». Это означает, что для группы мы устанавливаем права доступа на чтение и запись файла (rw).
chmod u-w myfile3
Для владельца файла (u) мы удаляем разрешение на изменение (w) файла.
chmod ug+x myfile2
Разрешаем владельцу (u) и группе (g) запускать файл (x).
chmod u+x,g-w,o-r myfile3
Это как раз тот случай, когда мы перечисляем владельцев через запятую и устанавливаем для них разрешения. Для владельца файла (u) мы разрешаем запуск файла, для группы (g) мы запрещаем изменять файл, для всех остальных (o) мы запрещаем читать файл.
Рекурсивное изменение прав доступа
Если необходимо изменить права доступа на все файлы в директории, включая вложенные директории, то для этого существует опция -R, что означает рекурсивное изменение прав доступа для директорий и их содержимого. Например, изменим права доступа у всех файлов в директории Mydir:
chmod -R 644 Mydir
И еще один момент. Если пользователь не является владельцем файла, но ему нужно изменить права доступа у данного файла, то команду chmod необходимо выполнять с использованием sudo, например:
sudo chmod 644 file
Видео-обзор команды chmod
Примеры команд Chmod в Linux
Использование команды chmod очень просто, если вы знаете, какие права доступа вы должны установить для файла.
Например, если вы хотите, чтобы владелец имел все разрешения и не имел разрешений для группы и публики, вам нужно установить разрешение 700 в абсолютном режиме:
chmod 700 filename
Вы можете сделать то же самое в символическом режиме.
chmod u=rwx filename
Если вам нужен простой способ узнать разрешение файла Linux в числовом или символьном режиме, вы можете использовать этот калькулятор chmod. Просто выберите соответствующие разрешения, и они сообщат вам разрешения как в абсолютном, так и в символическом режиме.
Изменить разрешение на все файлы в каталоге рекурсивно
У chmod есть рекурсивная опция, которая позволяет вам изменять права доступа ко всем файлам в каталоге и его подкаталогах.
chmod -R 755 directory
Изменение прав доступа командой chmod
chmod 777: все для всех
Возможно, вы слышали о chmod 777. Эта команда предоставит права на чтение, запись и выполнение владельцу, группе и общедоступным.
Если вы хотите изменить режим на 777, вы можете использовать следующую команду:
chmod 777 filename
chmod 777 считается потенциально опасным, поскольку вы даете разрешение на чтение, запись и выполнение файла/каталога всем (кто находится в вашей системе). Вы должны полностью избежать этого.
Как изменить права доступа
Команда chmod может изменить режим пользовательского доступа к файлу. Как-либо менять эти права разрешено исключительно его владельцу либо суперпользователю. В Unix-системах код принято задавать в виде числа в восьмеричной форме, или при помощи специальных мнемонических знаков (букв). Использование каждого способа имеет свои преимущества и недостатки. Так, с помощью цифрового указания прав доступа системный администратор сможет быстрее настроить нужный тип доступа, а с помощью мнемонических кодов он сможет сделать это более точно – например, добавить или удалить право на запись, либо запретить право на чтение.
В качестве первого аргумента консольной команды chmod выступает спецификация пользовательских прав доступа, а это есть мнемоническое обозначение, или восьмеричное число. Второй и следующий аргументы это названия файлов, к которым мы пытаемся изменить права доступа. При установке прав в виде трех чисел, первая цифра определяет права для владельца, 2-ая для группы, и третья для всех остальных юзеров.
Мнемонические обозначения прав доступа
Доступ к файлам в системе прав имеет такие вариации:
- r – доступ к чтению файла;
- w – право редактирование данных (но не удаление);
- x – возможость запускать файл к исполнению.
По отношению к каталогам действует такия система прав:
- r — пользователь может читать любые файлы директории;
- w — с этими правами можно создавать и удалять файлы в папке, даже если некоторые из них в каталоге принадлежат другому юзеру;
- x — обозначает право входа в директорию. Если вы имеете права w к вложеной папке но не имеете прав на папку уровнем выше, то и к своей папке никак не пробьетесь.
Всего возможно 8 различных комбинаций, которые приведены на рисунке ниже.
С помощью таблицы ниже вы сможете понять, как реализовать сложные варианты назначения прав, а также как установить права доступа 777, используя мнемонические спецификации chmod.
Как установить права доступа 777 через SSH
Приведем некоторые примеры использование команды chmod:
Использование такого сценария распределения файлов приведет к тому, что у владельца будут все права на файл, а все остальные группы пользователей смогут только выполнять его.
При использования кода 775 мы предоставим владельцу и всей его группе полный перечень прав. Остальные же пользователи не смогут выполнять изменения в файле. Нужно сказать, что для указания файла только по его собственному имени, необходимо находится в директории, где расположен этот файл. В ином случае вы можете переместиться в эту директорию командой cd имя_директории/имя_вложеной_директории или использовать следующую структуру:
- chmod 775 /var/bin/file_name.txt.
Чтобы рекурсивно изменить права ко всем файлам в каталоге и всем вложенным папкам, нужно добавить ключ -R к команде chmod. Полученная команда будет выглядеть так:
В итоге, как выставить права доступа 777 для файла или каталога, не будет проблемой – просто необходимо залогиниться на вашем веб-сервере через SSH и выполнить команду:
Никогда не используйте chmod 777
Установка 777 разрешений для файла или каталога означает, что он будет доступен для чтения, записи и выполнения всеми пользователями и может представлять огромную угрозу безопасности.
Например, если вы рекурсивно измените разрешения всех файлов и подкаталогов в каталоге /var/www на 777, любой пользователь в системе сможет создавать, удалять или изменять файлы в этом каталоге.
Если у вас возникают проблемы с правами доступа к веб-серверу, вместо рекурсивной установки разрешения 777, измените владельца файла на пользователя, запустившего приложение, и установите права доступа к файлу и разрешения для каталога с 644 на 755.
Владелец файла может быть изменен с помощью chownкоманды и разрешений с командой chmod.
Допустим, на вашем сервере есть приложение PHP, работающее от имени пользователя «andreyex». Чтобы установить правильные разрешения, вы должны запустить:
chown -R andreyex: /var/wwwfind /var/www -type d -exec chmod 755 <> ;find /var/www -type f -exec chmod 644 <> ;
Только root, владелец файла или пользователь с правами sudo могут изменять права доступа к файлу. Будьте особенно осторожны при использовании chmod, особенно при рекурсивном изменении разрешений.
chmod + x или chmod a + x: выполнение для всех
Вероятно, один из наиболее часто используемых случаев chmod – дать файлу бит выполнения. Часто после загрузки исполняемого файла вам необходимо добавить это разрешение перед его использованием. Чтобы дать владельцу, группе и всем остальным разрешение на выполнение файла:
chmod +x /path/to/file
CHMOD 755: только владелец может писать, читать и выполнять для всех
Эта следующая команда установит следующее разрешение для файла: rwxr-xr-x. Только владельцу будет разрешено писать в файл. Владелец, члены группы и все остальные будут иметь разрешение на чтение и выполнение.
chmod 755 /path/to/file
chmod 700: все только для владельца
Эта команда предоставит владельцу права на чтение, запись и выполнение. Группа и другие не будут иметь никаких разрешений, даже читать.
chmod 700 /path/to/file
CHMOD 666: никто не выполняет
Чтобы дать владельцу, группе и всем остальным права на чтение и запись в файл.
chmod -c 666 /path/to/file
CHMOD 644: каждый может читать, только владелец может писать
С этим следующим, владелец будет иметь право на чтение и запись, в то время как группа и все остальные имеют разрешение на чтение.
chmod 644 /path/to/file
CHMOD 600: владелец может читать и писать, больше ни для кого
С этим следующим, владелец будет читать и писать, в то время как группа и все остальные не будут иметь никаких разрешений вообще.
chmod 600 /path/to/file
Примеры команд chmod в символическом режиме
В приведенных выше примерах мы использем битовую маску для установки нового РЕЖИМА. Это легко рассчитать. Требуется простое дополнение. Учтите следующее:
Теперь вы можете легко увидеть, откуда у нас 755, 666, 640 . Вам не нужно использовать битовую маску для установки нового разрешения. Доступен более читабельный способ. Этот второй формат выглядит так:
Хотя это может показаться сложным, это довольно просто. Сначала вы набираете chmod и нужные вам ОПЦИИ. Затем спросите себя: для кого я меняю права доступа? Пользователь, Группа, Другие. Это даст вам первый раздел команды:
На следующем шаге для завершения команды вы решаете добавить биты прав доступа (+), удалить права доступа (-) или установить разрешение (
. Последнее добавит или удалит разрешения по мере необходимости, чтобы установить разрешение по вашему запросу.
В следующем разделе вы решаете РЕЖИМ разрешения применить (+), удалить (-) или сопоставить (
. Вы можете указать любую комбинацию RWX.
В следующем примере будет применено разрешение на чтение/запись для файла для владельца. Подробная опция заставит chmod сообщать о действии.
chmod -v u+rw /path/to/file
Следующим будет установлено разрешение на запись группы в каталог и все его содержимое рекурсивно. Он будет сообщать только об изменениях.
chmod -cR g+w /path/to/directory
Вы можете объединить несколько операций, которые будут выполнены с разрешения, как в следующем примере. Он убедится, что владелец имеет права на чтение/запись/выполнение, а также добавит разрешение на запись для группы и удалит выполнение для всех остальных:
chmod u=rwx,g+w,o-x /path/to/file
Этот последний будет использовать rFile в качестве ссылки для установки разрешения на файл . После завершения разрешение файла будет точно таким же, как и для rFile.
chmod –reference=/path/to/rFile /path/to/file
Есть больше опций и режимов, которые можно использовать с chmod, которые не описаны или не упомянуты здесь. Мы хотели сохранить это в общих чертах и, надеюсь, помочь нескольким новым пользователям Linux.
Источник