11.1 Управление владением (Managing Ownership)¶
Чтобы эффективно контролировать, кто и что может делать в файловой системе, необходимо прежде всего понять, кто «владеет» файлами и каталогами. В этом разделе рассматриваются следующие темы:
- Как работает владение
- Управление владением из командной строки
Начнём с рассмотрения принципов работы владения.
Как работает владение (How Ownership Works)¶
Каждый раз, когда пользователь создаёт новый файл или каталог, его учётная запись автоматически назначается владельцем (owner) этого файла или каталога. По умолчанию владелец каталога в системе Linux получает права на чтение, запись и выполнение этого каталога. По существу, он может делать с этим каталогом всё что угодно. Аналогично, владелец файла в системе Linux по умолчанию получает права на чтение и запись этого файла. Например, предположим, что пользователь ksanders входит в свою систему Linux и создаёт файл contacts.odt с помощью OpenOffice.org в своём домашнем каталоге. Поскольку она создала этот файл, ksanders автоматически назначается владельцем contacts.odt. Нажав на этот файл правой кнопкой мыши в графическом интерфейсе системы и выбрав «Свойства | Права доступа», можно просмотреть, кто является владельцем файла. Это показано на рис. 11-1.
Обратите внимание на рис. 11-1: у файла contacts.odt на самом деле два владельца. Первый — это имя пользователя, которому принадлежит файл, в данном случае ksanders. Кроме того, файл принадлежит и группе users, поскольку users является первичной группой, в которую входит ksanders.
Просматривать владение файлами можно также из командной строки с помощью команды ls -l. В следующем примере эта команда выполнена в домашнем каталоге пользователя ksanders:
ksanders@openSUSE:~> ls –l
total 40
drwxr-xr-x 2 ksanders users 4096 2011-03-10 16:43 bin
-rw-r--r-- 1 ksanders users 0 2011-03-18 08:02 contacts.odt
drwxr-xr-x 2 ksanders users 4096 2011-03-10 16:44 Desktop
drwxr-xr-x 2 ksanders users 4096 2011-03-10 16:44 Documents
drwxr-xr-x 2 ksanders users 4096 2011-03-10 16:44 Downloads
drwxr-xr-x 2 ksanders users 4096 2011-03-10 16:44 Music
drwxr-xr-x 2 ksanders users 4096 2011-03-10 16:44 Pictures
drwxr-xr-x 2 ksanders users 4096 2011-03-10 16:44 Public
drwxr-xr-x 2 ksanders users 4096 2011-03-10 16:43 public_html
drwxr-xr-x 2 ksanders users 4096 2011-03-10 16:44 Templates
drwxr-xr-x 2 ksanders users 4096 2011-03-10 16:44 Videos
Обратите внимание: третий столбец вывода содержит имя владельца файла или каталога (ksanders), а четвёртый — имя группы-владельца (users). Несмотря на то что владение файлами и каталогами назначается автоматически при создании, его можно изменить. Рассмотрим, как это делается.

Рис. 11-1. Просмотр владельца файла на рабочем столе GNOME.
Управление владением из командной строки (Managing Ownership from the Command Line)¶
Владение файлами и каталогами — не фиксированная характеристика. Несмотря на то что владение назначается автоматически при создании, его можно изменить. Вы можете указать другого пользователя и/или другую группу в качестве владельца конкретного файла или каталога. Чтобы изменить пользователя-владельца файла, необходимо войти в систему под учётной записью root. Чтобы изменить группу-владельца файла, необходимо войти как root или как текущий пользователь-владелец файла.
Это можно сделать как с помощью графических инструментов, так и с помощью командной строки. В соответствии с подходом данной книги сосредоточимся на утилитах командной строки:
- Использование
chown - Использование
chgrp
Начнём с изучения chown.
Использование chown (Using chown)¶
Утилита chown позволяет изменить пользователя или группу, которым принадлежит файл или каталог. Синтаксис: chown пользователь.группа файл_или_каталог. Например, предположим, что в каталоге /tmp есть файл myfile.txt, принадлежащий пользователю root. Чтобы изменить владельца файла на ksanders, нужно ввести chown ksanders /tmp/myfile.txt, как показано ниже:
openSUSE:~ # ls -l /tmp/myfile.txt
-rw-r--r-- 1 root root 0 Mar 18 09:38 /tmp/myfile.txt
openSUSE:~ # chown ksanders /tmp/myfile.txt
openSUSE:~ # ls -l /tmp/myfile.txt
-rw-r--r-- 1 ksanders root 0 Mar 18 09:38 /tmp/myfile.txt
Обратите внимание: эта команда изменила пользователя-владельца файла на ksanders. Однако группа-владелец по-прежнему осталась root — она была назначена при создании файла, поскольку первичная группа пользователя root называется root. Чтобы изменить её на группу users, членом которой является ksanders, нужно ввести chown .users /tmp/myfile.txt. Обратите внимание на точку (.) перед именем группы — она сообщает chown, что указанный объект является группой, а не учётной записью пользователя. После выполнения этой команды группа-владелец изменяется на users, как показано ниже:
openSUSE:~ # chown .users /tmp/myfile.txt
openSUSE:~ # ls -l /tmp/myfile.txt
-rw-r--r-- 1 ksanders users 0 Mar 18 09:38 /tmp/myfile.txt
На самом деле можно изменить и пользователя, и группу одновременно с помощью одной команды chown. В данном примере можно было ввести chown ksanders.users /tmp/myfile.txt. Это указывает chown, что новым пользователем-владельцем должен стать ksanders, а новой группой-владельцем — users.
Примечание
Параметр -R команды chown позволяет рекурсивно изменить владение сразу многими файлами.
Использование chgrp (Using chgrp)¶
Помимо chown, для изменения группы-владельца файла или каталога можно использовать команду chgrp. Синтаксис: chgrp группа файл_или_каталог. Например, чтобы изменить группу-владельца файла /tmp/myfile.txt из предыдущих примеров с root на users, нужно ввести chgrp users /tmp/myfile.txt.
Рассмотрим управление владением на практике в следующем упражнении.
Упражнение 11-1. Управление владением
В этом упражнении вы потренируетесь изменять владение файлами и каталогами из командной строки вашей системы Linux. Упражнение можно выполнить на виртуальной машине, прилагаемой к этой книге. Загрузите снимок 11-1 для получения предварительно настроенной среды.
Видео
Посмотрите видео к упражнению 11-1 — в нём показано, как выполнить эту задачу.
Выполните следующее:
- Убедитесь, что вы вошли в систему.
- Откройте сеанс терминала.
- При необходимости переключитесь на учётную запись
rootс помощью командыsu -и пароляstudent. -
Убедитесь, что ваша учётная запись
studentявляется членом группыresearch:Примечание
Группа
researchбыла настроена в упражнении 9-2 главы 9.a. В командной строке введите
cat /etc/group.b. Убедитесь, что пользователь
studentявляется членом группыresearch.c. Если пользователь
studentне является членом группыresearch, добавьте его с помощью командыgroupmod. -
Перейдите в каталог
/командойcd /. - Создайте новый каталог
RandD, введяmkdir RandD. - В командной строке введите
ls -l. Обратите внимание, что учётная записьrootи группаrootявляются владельцами нового каталога. - Измените владение каталогом: назначьте его вашей учётной записи
studentи группеresearch, введяchown student.research RandD. -
Снова введите
ls -l. Убедитесь, что владение каталогомRandDизменилось на вашу учётную записьstudentи группуresearch, как показано ниже:
Теперь, понимая, как устроены пользователи, группы и владельцы, вы готовы приступить к работе с правами доступа в файловой системе Linux. Рассмотрим это в следующем разделе.