This Might Be Useful

Файловая система - управление владельцами и правами доступа

У большинства пользователей ОС Linux (а также родственных ей систем) особенно в первое время с завидной регулярностью возникают одинаковые вопросы по поводу назначения прав доступа для файлов и каталогов. Данная заметка поможет в этом на самом деле легком деле.

Материал собран из нескольких источников, поэтому, возможно, изложен не слишком красиво. Зато полезно :).

Назначение владельца файла командой chown

Часто требуется сменить владельца файла или каталога. Возможно, Вы скопировали какой-нибудь файл в другой каталог, но не можете отредактировать его без смены владельца. Многие проблемы в Linux возникают из-за неправильно заданных раз решений или права принадлежности. В таких случаях сообщения вида «Permission denied» и «File is read-only» появляются там, где их быть не должно.

Для решение решения таких проблем воспользуйтесь командой chown и смените владельца и/или группу, которой принадлежит файл:

$ chown пользователь файл
$ chown пользователь:группа файл
$ chown :группа файл

Пример:

$ chown -v carlas:share index.txt
changed ownership of ‘index.txt’ to carlas:share
$ chown -v :share toc.txt
changed ownership of ‘toc.txt’ to :share

Рядовые пользователи могут только вносить изменения в принадлежащие им файлы и не могут передать право владения файлом другому пользователю. Тем не менее, пользователи могут изменять принадлежность к группам (при условии, что они принадлежат как к исходной, так и к итоговой группе).


Для справки (взято из man’a)

Обзор

chown [опции] пользователь[:группа] файл…

Описание

chown изменяет владельца и/или группу для каждого заданного файла.

В качестве имени владельца/группы берется первый аргумент, не являющийся опцией. Если задано только имя пользователя (или числовой идентификатор пользователя), то данный пользователь становится владельцем каждого из указанных файлов, а группа этих файлов не изменяется. Если за именем пользователя через двоеточие следует имя группы (или числовой идентификатор группы), без пробелов между ними, то изменяется также и группа файла.

Опции

-c, –changes
Подробно описывать действие для каждого файла, владелец которого действительно изменяется.
-f, –silent, –quiet
Не выдавать сообщения об ошибках для файлов, чей владелец не может быть изменен.
-h, –no-dereference
Работать с самими символьными ссылками, а не с файлами, на которые они указывают. Данная опция доступна только если имеется системный вызов lchown.
-v, –verbose
Подробное описание действия (или отсутствия действия) для каждого файла.
-R, –recursive
Рекурсивное изменение владельца каталогов и их содержимого.
–dereference
Изменяет владельца файла, на который указывает символьная ссылка, вместо самой символьной ссылки.
–reference=rfile
Изменяет владельца файла на того, который является владельцем rfile.
–help
Выдать подсказку на стандартный вывод и успешно завершиться.
–version
Выдать информацию о версии на стандартный вывод и успешно завершиться.

Служит для обозначения конца списка опций.

CHMOD. Настройка разрешений в символьном формате.

Рассмотрим ситуацию, когда требуется установить некоторые биты разрешений, сохранив значения остальных битов. Числовые форматы chmod позволяют задавать только все биты разрешений одновременно.

Самым распространенным применением символических обозначений chmod является добавление бита исполнения в атрибуты файла без изменения остальных разрешений:

$ chmod +x сценарий

По умолчанию используется режим а (АН), поэтому данный пример разрешит исполнение сценария всем пользователям. Следующая команда устанавливает бит исполнения только для владельца файла:

$ chmod u+x сценарий

Также существует возможность сброса отдельных битов. Следующая команда лишает группу и прочих пользователей права исполнения:

$ chmod go-x сценарий

Быстрая установка бита setgid для каталога с целью создания общего каталога. Все файлы, созданные в этом каталоге, будут принадлежать той же группе, что и сам каталог:

$ chmod +s /общий-каталог

Сброс всех разрешений для группы и прочих пользователей:

$ chmod go= сценарий

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

$ chmod g=u сценарий

Символическая запись chmod порой бывает довольно сложной. Следующий пример стирает все существующие разрешения и приводит их в исходное состояние:

$ chmod -v a=,u-rwx,g=rx,o=r сценарий

То же самое можно сделать командой chmod 754. Символическая форма записи также называется мнемонической:

r - чтение (Read);
w - запись (Write);
х - исполнение (Execute);
X - файл должен уже обладать разрешениям исполнения или быть каталогом;
s - назначение идентификатора пользователя или группы при исполнении - опасно! Не используйте с исполняемыми файлами (по крайней мере, если вы не до конца представляете, что делаете);
t - бит закрепления;
u - владелец файла;
g - группа, которой принадлежит файл;
o - прочие пользователи;
+ - добавление новых разрешений к действующим;
= - замена действующих разрешений;
- - сброс разрешений

CHMOD. Выполнение массовых операций.

Идем дальше. Теперь рассмотрим способ изменения разрешений для всех файлов в каталоге или для группы файлов.

Команда chmod поддерживает операции со списками файлов. Для построения списков можно воспользоваться командой find или метасимволами командного процессора.

Следующая команда делает несколько файлов доступными только для чтения для всех пользователей:

$ chmod 444 file.txt file2.txt file3.txt

Чтобы сделать все файлы текущего каталога доступными для чтения/записи для владельца и группы, но без изменения разрешений самого каталога, воспользуйтесь командой:

$ find . -type f -exec chmod -v 660 {} \:

Назначение разрешений для каталога и всего содержимого, включая подкаталоги:

$ chmod -R -v 755 /shared

В следующем примере чтение/запись всех файлов с расширением .txt в текущем каталоге разрешается владельцу, а всем остальным разрешается только чтение:

$ chmod -v 644 * .txt

Изменение всех файлов текущего каталога, начинающихся с определенного префикса:

$ chmod -v 644 apt *

CHMOD. Настройка разрешений.

Из книги Шредера “Linux. Сборник рецептов”. Все нижесказанное проверено и работает.

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

Воспользуйтесь командой chmod (CHange MODe). Смена разрешений может выполняться только суперпользователем (root) и владельцем файла. Например, следующая команда предоставляет владельцу файла доступ для чтения и записи к файлу /archive/datafile. Ни один другой пользователь, кроме root, вообще не сможет обратиться к этому файлу:

$ chmod -v 600 /archive/datafile

mode of ‘/archive/datafile’ changed to 0600 (rw——-)

В следующем примере владелец файла /shared/list разрешает его чтение всем желающим, но изменения в файл могут вноситься только владельцем файла и root:

$ chmod -v 644 /shared/list

mode of ‘/archive/datafile’ changed to 0644 (rw-r–r–)

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

$ chmod 755 /shared/somescript

У каталогов бит исполнения всегда должен быть установлен, иначе они не будут работать:

$ chmod 755 /shared

Назначение разрешений каталогу со всем содержимым, включая подкаталоги, производится с ключом -R. Ключ -v включает режим подробного вывода, чтобы вы видели, какие действия выполняет команда:

$ chmod -R -v 755 /shared

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

Чтение - 4
Запись - 2
Исполнение - 1

Например: чтение + исполнение (4+1) = 5

Вот и подставляем эту цифру для нужного типа пользователя.

· Подключение NFS-раздела в Windows Vista
· Linux: загрузка в single-user mode. Чиним систему или восстанавливаем забытый пароль root.
· Сборка нового ядра для Ubuntu Linux
· Как сделать свой собственный Linux LiveCD
· Установка оптимального размера файла подкачки и правильное его размещение

- Коментировать
- Trackback

2 Responses to “Файловая система - управление владельцами и правами доступа”


  1. авто Says:

    Спасибо за информацию!

  2. SENATUM Says:

    Спасибо. полезно!

Leave a Reply