Access Control List - списки контроля доступа Сравнение версий

Различия

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

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
wiki:access_control_list [2010/01/26 15:43]
allexnewallexnewallexnew
wiki:access_control_list [2016/03/30 12:06]
allexnewallexnewallexnew [Операции над объектами c ACL]
Строка 1: Строка 1:
 ====== Access Control List - списки контроля доступа ====== ====== Access Control List - списки контроля доступа ======
-^  Поддерживаемые версии Ubuntu ​  ^  Законченность \\ статьи ​ ^ +^  Поддерживаемые версии Ubuntu ​ ^ 
-|Все с ядром 2.4.21 (?) и выше ​|  99,9%  ​+ Все с ядром 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@yandex.ru|Соловьев Алексей aka allexnew]] ​upd 23.04.2013 16:05// </​style>​
  
  
-{{tag>​Администрирование система ​права_доступа HOWTO}}+{{tag>​Администрирование система ​Права_доступа HOWTO}}