Changing Permissions of Files and Folders in Linux — Chmod Basics — ShellHacks

Руководство для новичков Linux. Список полезных команд. Как изменить права доступа в Linux. Типы прав и владельцев.

Основные права доступа к файлам в Linux

Изначально каждый файл имел три параметра доступа. Вот они:

  • Чтение — разрешает получать содержимое файла, но на запись нет. Для каталога позволяет получить список файлов и каталогов, расположенных в нем;
  • Запись — разрешает записывать новые данные в файл или изменять существующие, а также позволяет создавать и изменять файлы и каталоги;
  • Выполнение — вы не можете выполнить программу, если у нее нет флага выполнения. Этот атрибут устанавливается для всех программ и скриптов, именно с помощью него система может понять, что этот файл нужно запускать как программу.

Но все эти права были бы бессмысленными, если бы применялись сразу для всех пользователей. Поэтому каждый файл имеет три категории пользователей, для которых можно устанавливать различные сочетания прав доступа:

  • Владелец — набор прав для владельца файла, пользователя, который его создал или сейчас установлен его владельцем. Обычно владелец имеет все права, чтение, запись и выполнение.
  • Группа — любая группа пользователей, существующая в системе и привязанная к файлу. Но это может быть только одна группа и обычно это группа владельца, хотя для файла можно назначить и другую группу.
  • Остальные — все пользователи, кроме владельца и пользователей, входящих в группу файла.

Именно с помощью этих наборов полномочий устанавливаются права файлов в linux. Каждый пользователь может получить полный доступ только к файлам, владельцем которых он является или к тем, доступ к которым ему разрешен. Только пользователь Root может работать со всеми файлами независимо от их набора их полномочий.

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

Введение

В этом руководстве вы научитесь изменять права доступа в Linux / Unix и устанавливать нового владельца файла/папки через командную строку. Существует 2 базовые команды, которые могут быть использованы для данных целей: chmod и chown.

Прокачайте ваш Linux сервер, воспользовавшись скидками на VPS-хостинг в Hostinger!

К предложению

Первый символ обозначает тип данных.

Данный символ может быть следующим:

В большинстве случаев это будет:

обычный файл;
d директория/каталог/папка (directory);
l символическая ссылка (link).

Но может быть следующим:

b файл блочного устройства (block);
c файл символьного устройства;
s доменное гнездо (socket);
p именованный канал (pipe).

Следовательно, в нашем случае это директория (каталог, папка).

Syntax

Syntax of the chmod command is the following:

$ chmod [options] permissions file[s]

Options:

  • -R, –recursive – Change files and directories recursively;
  • -f, –silent, –quiet – Suppress most error messages.

View the current file / directory mode using ls command:

$ ls -l MyFile.txt-rw-r—r— 1 john admin 0 2012-12-02 04:30 MyFile.txt$ ls -ld MyDirdrwxr-xr-x 2 john admin 4096 2012-12-02 04:29 MyDir

or using stat command:

$ stat -c ‘%A %a %n’ MyFile.txt-rw-r—r— 644 MyFile.txt$ stat -c ‘%A %a %n’ MyDirdrwxr-xr-x 755 MyDir

Выдаем права через терминал

В описанной ниже инструкции мы будем выдавать права на папку с названием test (вы, естественно, можете выбрать любое другое имя и для папки, и для группы), создав одноименную группу и добавив туда пользователя компьютера.

  • Сначала создадим группу test, пользователи которой смогут управлять папкой. Для этого вводим в терминал команду sudo groupadd test.
Для удобства назовем группу так же, как папкуДля удобства назовем группу так же, как папку

Для удобства назовем группу так же, как папку

  • Введем пароль суперпользователя, чтобы выполнить эту (и дальнейшие) команды от имени администратора.
При вводе паролей в терминале не отображаются вводимые символы. Придется набирать вслепуюПри вводе паролей в терминале не отображаются вводимые символы. Придется набирать вслепую

При вводе паролей в терминале не отображаются вводимые символы. Придется набирать вслепую

  • Затем добавляем в группу пользователя, которому хотим выдать права на работу с папкой. Для этого вводим команду sudo usermod -aG название группыимя пользователя.
Если что, parallels — имя пользователяЕсли что, parallels — имя пользователя

Если что, parallels — имя пользователя

Чтобы проверить, в каких группах состоит пользователь, введем команду groups parallels._

Выполнять эту процедуру необязательноВыполнять эту процедуру необязательно

Выполнять эту процедуру необязательно

Также проверить, добавился ли пользователь в группу можно с помощью утилиты members. Но сначала нужно будет ее скачать, введя команду sudo apt-get install members (в Fedora вводим sudo dnf install members).

По умолчанию этого инструмента в системе нетПо умолчанию этого инструмента в системе нет

По умолчанию этого инструмента в системе нет

Потом вводим название программы, а следом за ней название группыПотом вводим название программы, а следом за ней название группы

Потом вводим название программы, а следом за ней название группы

Эта процедура тоже необязательная, но для диагностики в случае возникновения проблем может пригодитьсяЭта процедура тоже необязательная, но для диагностики в случае возникновения проблем может пригодиться

Эта процедура тоже необязательная, но для диагностики в случае возникновения проблем может пригодиться

  • Потом выдадим права на работу с папкой нашей группе с помощью команды sudo chgrp название группыназвание папки.
Устанавливаем связь между папкой и группойУстанавливаем связь между папкой и группой

Устанавливаем связь между папкой и группой

  • И в конце повышаем привилегии конкретной группы. Для этого используем команду chmod g+rw название папки.
Теперь выдаем праваТеперь выдаем права

Теперь выдаем права

Изменение прав на файл в цифровом виде

В цифровом виде всё точно также, только с чётким указанием прав для каждой категории:

root@server:~# chmod 0755 filename

Команда в примере выше выставит права 755 для файла с именем filename.

Шаг 2 – Изменение владельца файла или папки через командную строку

chown – команда используется для смены владельца файла или папки. Самый стандартный синтаксис для этой команды:

chown [владелец/группа владельца] [имя файла]

К примеру, если у нас есть файл “demo.txt” и мы хотим изменить владельца на “jerry” и группу владельца на “clients”, нам необходима эта команда:

chown jerry:clients demo.txt

Как вы видите, мы отделили владельца и группу владельца символом “:” (двоеточие). Если мы хотим поменять только владельца файла, используем этот код:

chown jerry demo.txt

Мы просто убрали группу владельца и вписали нового владельца файла, в таком случае группа владельца останется без изменений.

Другой схожий пример, если мы хотим поменять только группу владельца:

chown :clients demo.txt

В этом случае, группа владельца изменится на clients (владелец останется прежним).

Использование справочного файла

Параметр —reference=ref_file позволяет вам установить права доступа к файлу такими же, как у указанного справочного файла ( ref_file ).

chmod —reference=REF_FILE FILE

Например, следующая команда назначит права доступа file1 к file2

chmod —reference=file1 file2

Шаг 3 – Использование дополнительных опций с командами chmod и chown

Одна из основных опций работающая с обеими командами это -R, которая означает рекурсивный. Эта опция позволяет вам менять права доступа и владельца файла, заданной папки и ВСЕХ других файлов внутри нее.

ВАЖНО! Будьте очень осторожны с этой опцией, если вы используете ее неправильно, вы можете изменить права доступа и владельца ВСЕХ файлов в вашей системе, что приведет к ошибкам в работе и трате огромного количества времени на откат изменений.

Другие опции для “chmod” и “chown”:

  • “-f” – тихая или силовая опция. При использовании данной опции скроет большинство сообщений об ошибках.
  • “-v” – делает диагностику каждого файла затронутого командой.
  • “-c” – схожа с опцией -v, но предоставляет информацию только в случае реальных изменений.

Рекурсивно изменить права доступа к файлу

Чтобы рекурсивно работать со всеми файлами и каталогами в данном каталоге, используйте параметр -R ( —recursive ):

Например, чтобы изменить права доступа для всех файлов и подкаталогов в каталоге /var/www на 755 вы должны использовать:

chmod -R 755 /var/www

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: