Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия Последняя версия Следующая версия справа и слева | ||
wiki:access_control_list [2010/01/26 15:55] |
wiki:access_control_list [2015/02/12 18:10] [Access Control List - списки контроля доступа] |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
====== Access Control List - списки контроля доступа ====== | ====== Access Control List - списки контроля доступа ====== | ||
- | ^ Поддерживаемые версии Ubuntu ^ Завершенность \\ статьи ^ | + | ^ Поддерживаемые версии Ubuntu ^ |
- | |Все с ядром 2.4.21 (?) и выше | 99% | | + | | Все с ядром 2.4.21 (?) и выше, а также другие ОС | |
===== Вступление ===== | ===== Вступление ===== | ||
Строка 21: | Строка 21: | ||
Чтобы добавить пользователя в ту, или иную группу, достаточно отредактировать файл **/etc/group**: | Чтобы добавить пользователя в ту, или иную группу, достаточно отредактировать файл **/etc/group**: | ||
+ | |||
+ | <note warning>Хоть редактирование системных файлов вручную - самый быстрый способ их изменения, необходимо быть очень внимательным редактируя их. Используйте для редактирования файла **/etc/group** утилиту **usermod**, обязательно создавайте резервную копию редактируемого файла для возможности отката. | ||
+ | |||
+ | Примечание прислал [[likhoman@ngs.ru|Лихоманенко Артем]] //2013/04/23 15:55//</note> | ||
<code> | <code> | ||
Строка 37: | Строка 41: | ||
Итак, основная мысль статьи - это использование расширенных прав ACL.((Часть информации взята с [[http://www.bsdportal.ru/viewtopic.php?t=3115&view=next|этого]] перевода. Также очень хорошо описан синтаксис ACL [[http://www.rhd.ru/docs/manuals/enterprise/RHEL-4-Manual/sysadmin-guide/s1-acls-setting.html|здесь]]. Надеюсь, авторы не против, если часть текста я позаимствую из этих статей.)) | Итак, основная мысль статьи - это использование расширенных прав ACL.((Часть информации взята с [[http://www.bsdportal.ru/viewtopic.php?t=3115&view=next|этого]] перевода. Также очень хорошо описан синтаксис ACL [[http://www.rhd.ru/docs/manuals/enterprise/RHEL-4-Manual/sysadmin-guide/s1-acls-setting.html|здесь]]. Надеюсь, авторы не против, если часть текста я позаимствую из этих статей.)) | ||
- | |||
===== Включение ACL в системе ===== | ===== Включение ACL в системе ===== | ||
- | С какой-то там версии Ubuntu, поддержка ACL уже включена и поддерживается ядром.((Обратите внимание, что в других операционных системах Unix, например, FreeBSD 5.0 и выше, потребуются некоторые дополнительные действия по включению ACL.)) Но как бы то ни было, по умолчанию, в системе, ACL не активированы. Для того, чтобы операционная система начала учитывать списки контроля, необходимо ей об этом сказать. Для этого потребуется отредактировать файл **/etc/fstab** и указать в нем, на каких разделах HDD следует учитывать ACL права. Проверить, поддерживает ли тот или иной раздел винчестера ACL, можно попытавшись установить эти самые ACL, командой **setfacl**: | + | С какой-то там версии Ubuntu, поддержка ACL уже включена и поддерживается ядром.((Обратите внимание, что в других операционных системах Unix, например, FreeBSD 5.0 и выше, потребуются некоторые дополнительные действия по включению ACL. Также, возможно, вам потребуется установить пакет **acl**, использовав следующую команду: **sudo apt-get install acl**.)) Но как бы то ни было, по умолчанию, в системе, ACL не активированы. Для того, чтобы операционная система начала учитывать списки контроля, необходимо ей об этом сказать. Для этого потребуется отредактировать файл **/etc/fstab** и указать в нем, на каких разделах HDD следует учитывать ACL права. Проверить, поддерживает ли тот или иной раздел винчестера ACL, можно попытавшись установить эти самые ACL, командой **setfacl**: |
<code> | <code> | ||
Строка 94: | Строка 97: | ||
<note>Несколько слов о взаимодействии других команд (такие как копирование, перемещение, архивирование и т.п.) с правами ACL. Вот выдержка из статьи: | <note>Несколько слов о взаимодействии других команд (такие как копирование, перемещение, архивирование и т.п.) с правами ACL. Вот выдержка из статьи: | ||
- | //К сожалению, большинство Unix-утилит все еще не поддерживает ACL. Например, tar не архивирует и не восстанавливает ACL, в FreeBSD NFS также игнорирует их. Ни формат файлов в утилите **tar**, ни протокол NFS нет ни намека на возможность использования ACL. Тем не менее, архивы полного раздела UFS1, сделанные с помощью **tar** или **dump**, восстанавливают каталог **.attribute**, и утилита **dump** в FreeBSD модифицирована для для "понимания" UFS2 (включающую ACL). Каталог-скелет archivers/star поддерживает ACL. Вы даже можете работать с архивами, созданными в Linux и FreeBSD С помощью **star** и предохраняющей расширенные атрибуты (включающие и ACL).// | + | //К сожалению, большинство Unix-утилит все еще не поддерживает ACL. Например, tar не архивирует и не восстанавливает ACL, в FreeBSD NFS также игнорирует их. Ни формат файлов в утилите **tar**, ни протокол NFS нет ни намека на возможность использования ACL. Тем не менее, архивы полного раздела UFS1, сделанные с помощью **tar** или **dump**, восстанавливают каталог **.attribute**, и утилита **dump** в FreeBSD модифицирована для "понимания" UFS2 (включающую ACL). Каталог-скелет archivers/star поддерживает ACL. Вы даже можете работать с архивами, созданными в Linux и FreeBSD С помощью **star** и предохраняющей расширенные атрибуты (включающие и ACL).// |
Но не все так грустно! Перевод статьи был написан в 2006 году (к сожалению до оригинала я так и не добрался). В другой же статье, более поздней, сказано: | Но не все так грустно! Перевод статьи был написан в 2006 году (к сожалению до оригинала я так и не добрался). В другой же статье, более поздней, сказано: | ||
Строка 205: | Строка 208: | ||
^ Синтаксис ^ Описание ^ Пример использования ^ | ^ Синтаксис ^ Описание ^ Пример использования ^ | ||
- | | <code>u:<uid>:<perms>*</code> |- Назначает ACL для доступа заданному пользователю. Здесь можно указать имя или UID пользователя. Это может быть любой пользователь, допустимый в данной системе.|Пример: <code>setfacl -m u:allexserv:rw myfile.odt</code>| | + | | <code>u:<uid>:<perms>*</code> |- Назначает ACL для доступа заданному пользователю. Здесь можно указать имя или UID пользователя. Это может быть любой пользователь, допустимый в данной системе.|Пример: <code>setfacl -m u:allexserv:rw myfile.odt</code> - назначает пользователю **allexserv** права на чтение и запись.| |
- | | <code>g:<gid>:<perms>*</code> |- Назначает ACL для доступа заданной группе. Здесь можно указать имя или GID группы. Это может быть любая группа, допустимая в данной системе.|Пример: <code>setfacl -m g:children:r myfile.odt</code>| | + | | <code>g:<gid>:<perms>*</code> |- Назначает ACL для доступа заданной группе. Здесь можно указать имя или GID группы. Это может быть любая группа, допустимая в данной системе.|Пример: <code>setfacl -m g:children:r myfile.odt</code> - назначает группе **children** права на чтение.| |
- | | <code>m:<perms>*</code> |- Назначает маску эффективных прав.((**Маска** — это объединение всех разрешений группы-владельца и всех записей пользователей и групп. Маска задает максимальные права доступа для всех пользователей, за исключением хозяина и групп. Установка маски представляет собой самый быстрый путь изменить фактические (эффективные) права доступа всех пользователей и групп. Например, маска (r - -) показывает, что пользователи и группы не могут иметь больших прав, чем просто чтение, даже если им назначены права доступа на чтение и запись. Например, если на файл **koshka** назначили ACL пользователю **allexserv** c правами (r w x), а эффективную маску выставили в (r x), то пользователь лишается права (w), не смотря на то, что по ACL он имеет это право.))|Пример: <code>setfacl -m m:rx myfile.odt</code>| | + | | <code>m:<perms>*</code> |- Назначает маску эффективных прав.((**Маска** — это объединение всех разрешений группы-владельца и всех записей пользователей и групп. Маска задает максимальные права доступа для всех пользователей, за исключением хозяина и групп. Установка маски представляет собой самый быстрый путь изменить фактические (эффективные) права доступа всех пользователей и групп. Например, маска (r - -) показывает, что пользователи и группы не могут иметь больших прав, чем просто чтение, даже если им назначены права доступа на чтение и запись. Например, если на файл **koshka** назначили ACL пользователю **allexserv** c правами (r w x), а эффективную маску выставили в (r x), то пользователь лишается права (w), не смотря на то, что по ACL он имеет это право.))|Пример: <code>setfacl -m m:rx myfile.odt</code> - устанавливает фактические максимальные права на чтение и выполнение.| |
| <code>o:<perms>*</code> |- Назначает ACL для доступа пользователям, не включённым в группу файла. Это пользователь "все остальные", как в стандартных правах Unix.|Пример: <code>setfacl -m o: myfile.odt</code> - убирает все права (отсутствие прав).| | | <code>o:<perms>*</code> |- Назначает ACL для доступа пользователям, не включённым в группу файла. Это пользователь "все остальные", как в стандартных правах Unix.|Пример: <code>setfacl -m o: myfile.odt</code> - убирает все права (отсутствие прав).| | ||
Строка 260: | Строка 263: | ||
</code> | </code> | ||
- | Теоретически, как гласит документация, в данном случае пользователь **child** не может удалить файл (про **allexserv** ничего не говорю, т.к. он входит в группу **root** у меня). Но проведя тест, пользователь **child** все-таки удалил файл, правда перед удалением система спросила: | + | Теоретически, в данном случае пользователь **child** не может удалить файл (про **allexserv** ничего не говорю, т.к. он входит в группу **root** у меня). Но проведя тест, пользователь **child** все-таки удалил файл, правда перед удалением система спросила: |
<code> | <code> | ||
Строка 267: | Строка 270: | ||
</code> | </code> | ||
- | В то же время попробовал отредактировать файл **qwert** под пользователем **child** и попытался записать изменения. Здесь система в записи отказала. Вобщем очень странный момент. | + | В то же время попробовал отредактировать файл **qwert** под пользователем **child** и попытался записать изменения. Система в записи отказала. Здесь стоит отметить, что удаление файла регламентируется правами на каталог в коем расположен этот файл. Причина такого поведения именно в этом. |
Теперь давайте удалим с файла **qwert** права ACL для пользователя **allexserv**: | Теперь давайте удалим с файла **qwert** права ACL для пользователя **allexserv**: | ||
Строка 375: | Строка 378: | ||
</code> | </code> | ||
- | Обратите внимание, что каталог **MyKatalog** не только приобрел ACL, но и также приобрел и ACL по умолчанию. | + | Обратите внимание, что каталог **MyKatalog** не только приобрел ACL, но и также приобрел и ACL по умолчанию. Т.е. те объекты, которые будут создаваться в подкаталоге **MyKatalog** тоже будут наследовать ACL по умолчанию. |
Удалить права по умолчанию можно: **setfacl -k Proverka**. | Удалить права по умолчанию можно: **setfacl -k Proverka**. | ||
- | Если нужно также удалить права по умолчанию и в подкаталогах, то добавьте ключ **-R** (рекурсия): **setfacl -R -k /media/Work/test/Proverka/* **. | + | Если нужно также удалить права по умолчанию и в подкаталогах, то добавьте ключ **-R** (рекурсия): **setfacl -R -k /media/Work/test/Proverka **. |
Здесь мы оперировали двумя пользователями. Но ничто не мешает вам оперировать также целыми группами пользователей. | Здесь мы оперировали двумя пользователями. Но ничто не мешает вам оперировать также целыми группами пользователей. | ||
Строка 445: | Строка 448: | ||
* При перемещении (**mv**) никаких дополнительных параметров ненужно; | * При перемещении (**mv**) никаких дополнительных параметров ненужно; | ||
* При копировании (**cp**), необходимо использовать ключ **-p**, в противном случае ACL права будут потеряны; | * При копировании (**cp**), необходимо использовать ключ **-p**, в противном случае ACL права будут потеряны; | ||
+ | <note warning>Внимание!!! \\ По умолчанию графический интерфейс при копировании не учитывает ACL права! </note> | ||
* При архивировании или распаковке вместо **tar** используйте утилиту **star**. | * При архивировании или распаковке вместо **tar** используйте утилиту **star**. | ||
Строка 462: | Строка 466: | ||
| **-/** |Оставляет ведущую косую черту в имени файла при извлечении файлов из архива. По умолчанию она убирается.| | | **-/** |Оставляет ведущую косую черту в имени файла при извлечении файлов из архива. По умолчанию она убирается.| | ||
| **-acl** |При создании архива или извлечении файлов, архивирует или восстанавливает все ACL, связанные с файлами или каталогами.| | | **-acl** |При создании архива или извлечении файлов, архивирует или восстанавливает все ACL, связанные с файлами или каталогами.| | ||
+ | |||
+ | Пример для архивирования утилитой star с сжатием: | ||
+ | |||
+ | **star -czv -Hexustar -acl -f /tmp/homedir.tgz /media/Profil/home** | ||
+ | |||
+ | Пример для разархивирования в текущий каталог: | ||
+ | |||
+ | **star -xv -Hexustar -acl -f homedir.tgz** | ||
Вот собственно и все, что я хотел рассказать про ACL. Применяйте логику и смекалку и все будет хорошо. | Вот собственно и все, что я хотел рассказать про ACL. Применяйте логику и смекалку и все будет хорошо. | ||
- | <style right> --- //[[allexmail@pisem.net|Соловьев Алексей aka allexnew]] 24.01.2010 17:27// </style> | + | <style right> --- //[[allexmail@pisem.net|Соловьев Алексей aka allexnew]] upd 23.04.2013 16:05// </style> |
- | {{tag>Администрирование система права_доступа HOWTO}} | + | {{tag>Администрирование система Права_доступа HOWTO}} |