Linux ubuntu управление доступом

FilePermissionsACLs

POSIX Access Control Lists (ACLs) are more fine-grained access rights for files and directories. An ACL consists of entries specifying access permissions on an associated object. ACLs can be configured per user, per group or via the effective rights mask.

These permissions apply to an individual user or a group, and use the same as rwx found in regular permissions.

For an explanation of rwx, see FilePermissions

Enabling ACLs in the Filesystem

Before beginning to work with ACLs the file system must be mounted with ACLs turned on. This can be done in /etc/fstab for the changes to be permanent.

0) It may be necessary to install acl utilities from the repositories. In the Server Edition, this must be done, but in the desktop editions acl is installed by default.

1) Add the option acl to the partition(s) on which you want to enable ACL in /etc/fstab. For example:

. UUID=07aebd28-24e3-cf19-e37d-1af9a23a45d4 /home ext4 defaults,acl 0 2 .

As of Ubuntu 14.04 and for ext4, the above is not required as acl are already default:

sudo tune2fs -l /dev/sdaX |grep acl Default mount options: user_xattr acl

2) If necessary, remount partition(s) on which ACLs were enabled for them to take effect. For example:

$ sudo mount -o remount /home

3) Verify that ACLs are enabled on the partition(s):

ACL Entries

ACL entries consist of a user (u), group (g), other (o) and an effective rights mask (m). An effective rights mask defines the most restrictive level of permissions. setfacl sets the permissions for a given file or directory. getfacl shows the permissions for a given file or directory.

Defaults for a given object can be defined.

ACLs can be applied to users or groups but it is easier to manage groups. Groups scale better than continuously adding or subtracting users.

Listing ACLs

The utility getfacl lists the ACLs for a given file or directory.

$ getfacl /var/www getfacl: Removing leading '/' from absolute path names # file: var/www # owner: root # group: root user::rwx group::r-x group:green:rwx mask::rwx other::r-x

This following ACL also has defaults set:

$ getfacl /var/www getfacl: Removing leading '/' from absolute path names # file: var/www # owner: root # group: root user::rwx group::r-x other::r-x default:user::rwx default:group::r-x default:group:green:rwx default:mask::rwx default:other::r-x

Adding a Group to an ACL

The utility setfacl is used to add the groups blue and green to the ACL for the directory /var/www.

$ sudo setfacl -m g:green:rwx /var/www/ $ sudo setfacl -m g:blue:rwx /var/www/ $ sudo getfacl /var/www/ getfacl: Removing leading '/' from absolute path names # file: var/www/ # owner: root # group: root user::rwx group::r-x group:green:rwx group:blue:rwx mask::rwx other::r-x

Removing a Group from an ACL

The option -x removes groups or users from a given ACL. Below, the group green is removed from the directory /var/www.

Читайте также:  Tp link tp wn725n driver linux

Transfer of ACL attributes from a specification file

Transfer of ACL attributes from a specification file takes two steps. In this example, the specification file is called acl.

First, create a file containing the ACL to be used.

Then, read the contents of the file into setfacl to set the ACL for directory /path/to/dir

Output from getfacl is accepted, when reading from files using -M.

Copying ACLs from one file or directory to another

Copy an ACL from dir1 to dir2 uses the -M option. Output from getfacl is accepted as input for setfacl when using -M.

getfacl dir1 | setfacl -b -n -M - dir2

-b clear ACLs, -n do not recalculate effective rights mask, read from stdin

Or it can be done like this:

getfacl file1 | setfacl --set-file=- file2

Copying an ACL into the Default ACL

Once the ACLs are the way they need to be, they can be set as the default. Defaults are inherited, so a new directory will inherit the defaults of the parent directory.

getfacl -a /path/to/dir | setfacl -d -M- /path/to/dir

References

FilePermissionsACLs (последним исправлял пользователь proxy 2015-08-21 06:32:36)

The material on this wiki is available under a free license, see Copyright / License for details
You can contribute to this wiki, see Wiki Guide for details

Источник

Пользователи, группы и права доступа

Теперь немного поговорим о разграничении прав доступа к различным элементам. Описанный в этой статье механизм является основополагающим в Linux и соответственно в Ubuntu, так что читайте внимательно.

Пользователи и группы

Linux в целом и Ubuntu в частности — системы многопользовательские, т.е. на одном компьютере может быть несколько различных пользователей, каждый со своими собственными настройками, данными и правами доступа к различным системным функциям.

Кроме пользователей в Linux для разграничения прав существуют группы. Каждая группа так же как и отдельный пользователь обладает неким набором прав доступа к различным компонентам системы и каждый пользователь-член этой группы автоматически получает все права группы. То есть группы нужны для группировки пользователей по принципу одинаковых полномочий на какие-либо действия, вот такая тавтология. Каждый пользователь может состоять в неограниченном количестве групп и в каждой группе может быть сколько угодно пользователей 1) .

Например, в Ubuntu есть одна очень полезная группа: admin . Любой член этой группы получает неограниченные административные привилегии. Я уже рассказывал про роль администратора в Ubuntu, так что если вы уже успели забыть кто это, можете освежить свои знания. Создаваемый при установке Ubuntu пользователь автоматически становится членом группы admin 2) .

Управлять пользователями и группами можно с помощью специального инструмента, находящегося в меню Система→Администрирование→Пользователи и группы.

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

Читайте также:  Unetbootin linux mint install

Права доступа в Linux

Любой файл и каталог в Linux имеет пользователя-владельца и группу-владельца. То есть любой файл и каталог принадлежит какому-то пользователю системы и какой-то группе. Кроме того, у любого файла и каталога есть три группы прав доступа: одна для пользователя-владельца, одна для членов группы-владельца и одна для всех остальных пользователей системы. Каждая группа состоит из прав на чтение, запись и запуск файла на исполнение. Для каталогов право на исполнение и право на чтение всегда идут вместе и означают одно и то же.

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

В данный момент нас интересует одно крайне важное следствие из подобной организации прав доступа в системе. Конкретному пользователю Ubuntu принадлежит только его домашний каталог и все его содержимое. В системе этот каталог находится по адресу /home/имя_пользователя . Все остальные файлы системы, включая все приложения, системные настройки и т.д., располагающиеся вне /home , принадлежат преимущественно root . Помните, я говорил, что root — это пользователь с неограниченными привилегиями, непосредственное использование которого в Ubuntu запрещено. Так вот, все системные файлы и каталоги принадлежат root недаром, им всем выставлены права на изменение только для пользователя-владельца, таким образом никто, кроме root , не может вмешаться в работу системы и что-то поменять в системных файлах.

Это конечно очень хорошо для безопасности, но что же делать, если вам нужно изменить какие-нибудь системные файлы? Тут есть два пути 4) : во-первых, большинство необходимых пользователю системных настроек можно изменить обладая правами администратора из графических конфигураторов, это самый предпочтительный способ. Ну а во-вторых можно временно повысить свои права до root и делать вообще всё, что угодно.

Делается это с помощью утилиты sudo и её производных. sudo — это консольная утилита. Она позволяет «прикинуться» рутом при выполнении конкретной команды, таким образом, получив неограниченные права. Например, команда

обновит данные о доступных вам приложениях (зачем это нужно я объясню в статье про управление программами). Сама по себе команда

работает, только если её запускает root . Однако запуская её с помощью sudo вы выдаёте себя за рута, рутом при этом не являясь. Естественно, для использования sudo вы должны обладать правами администратора 5) . При этом при запуске команды через sudo система спросит у вас ваш пароль, однако в целях безопасности при его вводе вам не будет ничего показываться, ни звёздочек, ни чёрточек, ни птичек, ничего. Не пугайтесь, так и надо, просто вводите до конца и нажимайте Enter . Если вы являетесь администратором и правильно ввели пароль, то указанная после sudo команда исполнится от имени root .

Через терминал можно сделать всё, что угодно, так что имея возможность стать рутом вы можете выполнить все необходимые вам настройки. Однако иногда удобно использовать графические приложения, при этом обладая правами рута. Например, если вам надо скопировать файлы в системные каталоги. Для запуска графических приложений от имени root откройте диалог запуска GNOME сочетанием клавиш Alt + F2 и введите

Читайте также:  Find file linux во всех папках

Например, для запуска файлового менеджера Nautlus надо ввести

Через запущенный таким образом Nautilus вы сможете как угодно изменять любые файлы на компьютере.

Будьте предельно внимательны при использовании Nautilus с правами root ! Вы сможете безо всяких предупреждений безвозвратно удалить любой системный файл, что спокойно может привести к неработоспособности всей системы.

Редактирование конфигурационных файлов

Важнейшим примером применения вышеописанной технологии «прикидывания» рутом является редактирование конфигурационных файлов системы. Я уже говорил, что все настройки системы и всех приложений в Linux хранятся в виде текстовых файлов. Так вот, редактировать вы можете только файлы, принадлежащие вам, то есть только настройки, касающиеся вашего пользователя. А для редактирования системных параметров вам понадобятся права администратора.

Многие файлы вы сможете открыть, но не сможете что-либо в них изменить, вам просто не будет доступна операция сохранения:

Конечно, можно открывать конфигурационные файлы с правами root через диалог запуска приложений командой

Однако в диалоге запуска не работает автодополнение, следовательно путь до файла вам придётся набирать вручную, что не всегда удобно. Поэтому можно для запуска текстового редактора от имени суперпользователя использовать терминал, например:

Учтите, что sudo — это чисто консольная утилита, поэтому использовать её в диалоге запуска приложений нельзя, хотя из терминала через неё можно запускать графические приложения. А gksudo наоборот, утилита графическая, поэтому её не стоит использовать в терминале, хотя это и не запрещено.

В итоге откроется редактор с возможностью сохранения изменений:

Тут стоит обратить внимание на то, что текстовый редактор запускается из терминала, поэтому если вы во время работы закроете окно терминала, то тут же закроется и запущенный из него Gedit, так что будьте внимательны.

Итак, я немного рассказал про систему управления правами доступа в Ubuntu, надеюсь, вы поняли хотя бы основы. Я настоятельно рекомендую вам самостоятельно до конца разобраться в системе прав доступа к файлам и в утилите sudo . Чуть подробней про sudo можно почитать, например, на нашей вики. А пока продолжим знакомство с основами работы в Ubuntu, осталось рассмотреть ещё одну тему:

Однако как минимум в одной группе каждый пользователь состоит всегда. Это так называемая основная группа, по умолчанию она носит такое же имя, как и у самого пользователя.

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

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

На самом деле права администратора в основном как раз и заключаются в возможности использовать sudo .

Источник

Оцените статью
Adblock
detector