Права доступа к файлам и директориям

Каждый файл или директория принадлежат какой-то определённой учётной записи и группе. Система позволяет независимо установить разрешения на чтение, запись и исполнение для владельца, группы и для всех остальных. При отсутствии разрешения соответствующая операция будет блокироваться операционной системой.

По умолчанию создаваемые пользователями файлы доступны на чтение всем остальным пользователям. Модифицировать файлы может только их владелец.

Учётная запись пользователя может входить в несколько групп. Одна группа, обязательно существующая у любой учетной записи, называется основной ('primary'), остальные - дополнительными ('supplementary', 'secondary'). На нашем комплексе основная группа у всех пользователей - 'users'. При необходимости организовать коллективную работу нескольких пользователей могут создаваться дополнительные группы, как описано ниже.

Отобразить установленные права и владельцев файлов можно следующей командой:

ls -l

Если вы хотите, чтобы ваши файлы были доступны на чтение только вам (и администраторам ИВЦ), добавьте в файл '.bashrc' в своей домашней директории такую строчку:

umask 077

Затем необходимо разорвать все SSH-соединения к интерфейсному сервера и подключиться заново. С этого момента все новые файлы и директории будут создаваться с правами, запрещающими доступ всем остальным пользователям.

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

chmod -R go-rwx ~


:!: Никогда не выполняйте над домашней директорией 'обратную' операцию, предоставляя права всем. Этим вы установите некорректные права на свои служебные файлы, некоторые из которых должны быть доступны на чтение только самому владельцу, и можете заблокировать себе SSH-доступ. Если необходимо разрешить доступ другим пользователям комплекса, делайте это только для определённых поддиректорий:

chmod -R go+rX ~/поддиректория

Символ 'X' в параметрах этой команды должен быть именно заглавным, в отличии от предыдущей команды.

Часто возникает задача организовать соместную работу нескольких пользователей с индивидуальными учётными записями.

  • Если членам коллектива достаточно иметь возможность читать файлы друг-друга, не запрещая при этом доступ остальным пользователям комплекса, то ничего дополнительно настраивать не требуется.
  • Если необходимо запретить доступ к определённым директориям всем, кроме членов коллектива, этому коллективу создаётся дополнительная группа. И затем для нужных файлов и директорий запрещается доступ всем, кроме членов этой группы. Более подробно этот случай описан ниже.
  • Пользователи не должны предоставлять права на модификацию своих файлов другим пользователям кластера. Каждая учетная запись имеет персональные ограничения на доступное дисковое пространство. Эти ограничения учитывают все файлы, созданные определённым пользователем, независимо от того, кто их позже модифицировал. Таким образом может возникнуть ситуация, когда у пользователя будет достигнуто ограничение и заблокируется возможность дальнейшей записи данных из-за того, что кто-то другой модифицировал файлы, ранее им созданные.
  • Пользователи не должны предоставлять права на запись другим в свои директории. Дело в том, что не важно, где находится файл, важно, кто его создал. Если вы позволите другому пользователю создать файл в вашей домашней дирктории, то этот файл будет принадлежать не вам, а создавшему. Правильным будет не разрешать другим запись в вашу директорию, а самостоятельно скопировать себе файл из директории другого пользователя - при этом владельцем нового файла станете вы.

Дополнительная группа

Может потребоваться запретить просмотр определённых директорий всем, кроме членов определённого коллектива. Например, доступ к домашним директориям или к установленному коммерческому ПО, лицензированному только для определённого коллектива. В таком случае коллективу создаётся дополнительная POSIX группа.

Затем для всех указанных директорий группа меняется на эту новую дополнительную группу, а для категории «все остальные» (т.е. всем учётным записям, не входящим в эту дополнительную группу) доступ полностью запрещается:

chown -R :дополнительная_группа путь_до_директории
chmod -R o-rwx путь_до_директории

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

  • Имели правильно установленные права доступа. Это обеспечивается добавлением в файл ~/.bashrc владельца директории следующей строчки:
    umask 027
  • Принадлежали дополнительной группе, а не группе 'users'. Для этого на директории и всех поддиректориях нужно установить флаг 'Set GID on execution':
    find путь_до_директории -type d -exec chmod g+rXs {} \;