Видео смотреть бесплатно

Смотреть русское с разговорами видео

Официальный сайт travelspo 24/7/365

Смотреть видео бесплатно

WeLinux.ru

04.03.09 06:48

karapuz → Практика распределния прав пользователей на Linux десктопе

Когда я окончательно перешел на Linux, я соответственно перенес все документы, музыку, фото и etc с NTFS разделов на ext3. Следующим шагом я создал две учетные пользовательские записи, для себя и жены, по банальной причине, разошлись во взглядах по поводу оформления рабочего стола :). Естественно весь перенесенный с Windows контент я поместил в своем домашнем каталоге. Жена активно использует каталог с фото и соответственно необходимо было дать ей права на запись в данный каталог, причем я не должен был терять полный доступ на созданные женой каталоги и файлы.
В этой статье я приведу практический пример, как можно распределить права между пользователями на Linux десктопе. Для наглядности примера добавим в условие задачи еще одного пользователя.
Итак, задача

Дано:
1.Три пользователя с учетными записями «А», «В», и «С».
2.Все три пользователя состоят в группе users.
3.Каталог «Фото», в котором содержится сложная иерархия подкаталогов и файлов, и для которого необходимо раздать права.
4.Владелец каталога «Фото» пользователь «А».
Неосновное условие:
1.Так как каталог «Фото» со всем содержимым был перенесен с NTFS раздела, то все файлы (более 500) помечены как исполняемые.

Задача:
1.Дать полный доступ на каталог «Фото» и все подкаталоги и файлы пользователю «В».
2.Для новых каталогов и файлов должны автоматически выставляться права на полный доступ для пользователей «А» и «В» независимо от того, кто является владельцем создаваемых элементов.
3.Пользователь «С» должен иметь доступ только на чтение.
4.Снять метку «исполняемый» со всех файлов в каталоге «Фото».

Краткая справка по используемым для решения задачи инструментам

Выполним в консоли команду

ls -l Фото

Увидим информацию о содержащихся внутри элементах примерно такого вида

drwxr-xr-x 1 А users 4096 Июл 20 00:30

В данной строке нас интересует та часть, где написано:

drwxr-xr-x А users.

В этой части содержится информация о правах доступа и означает следующее:
d — каталог.
Первые три символа rwx — права доступа для владельца. Чтение ( r ), запись (w) и выполнение (x), для каталога x — возможность его открывать.
Вторые r-x — права доступа для владеющей группы. Прочерк между r и x означает, что отсутствует возможность на запись. Отсутствует w.
Следующие r-x — права доступа для всех остальных.
А — владеющая учетная запись.
users — владеющая группа.

Можно сделать вывод. Владелец каталога, пользователь «А», имеет полный доступ, все остальные, в том числе и другие члены владеющей группы users, имеют доступ только на чтение.
Для решения данной задачи будем использовать три консольные команды:
chmod
setfacl
find


Команда chmod изменяет права доступа для владельца, владеющей группы и всех остальных.
Основные параметры команды chmod:
u — владелец,
g — владеющая группа,
o — другие пользователи, не входящие во владеющую группу,
a — все. Идентично ugo,
и соответственно знакомые rwx.
Например, команда

chmod g+rwx Фото #без ковычек

добавляет доступ на чтение, запись и выполнение для владеющей группы.
Подробней смотри man chmod.

Команда setfacl устанавливает расширенные права доступа (access control list или ACL).
Основные параметры команды setfacl:
-m — установить ACL,
-x — удалить ACL,
-b — удалить все установленные параметры ACL.
Например, команда

setfacl -m user:B:rwx

добавляет доступ на чтение, запись и выполнение для пользователя «В».
Подробней смотри man setfacl. Также смотри man acl и man getfacl.

Команда find осуществляет поиск файлов. Имеет большое количество параметров. Основной прелестью данной команды является то, что поиск может осуществляться со многими условиями. Например команда

find Фото -type d -exec chmod g+rwx {} \;

находит содержащиеся в каталоге «Фото» все каталоги (-type d) и выполняет для них (-exec) команду chmod g+rwx
Подробней смотри man find.

Решение задачи

Здесь я приведу два способа решения задачи.
Способ 1

Все команды выполняются от имени владельца каталога «Фото».
Сначала уберем метку «исполняемый» со всех фалов в каталоге «Фото».

cd ~/Фото
find Фото -type f -exec chmod a-x {} \;


Все три пользователя члены одной группы. Разрешим группе полный доступ к каталогу «Фото», всем подкаталогам и файлам. Тем самым мы дадим полный доступ всем трем пользователям.

find Фото -type f -exec chmod g+rw {} \; #полный доступ для файлов.
find Фото -type d -exec chmod g+rwx {} \; #полный доступ для каталогов.


Пользователь «С» имеет полный доступ к каталогу «Фото». Исправим это путем явного указания прав для пользователя «С».

find Фото -type d -exec setfacl -m user:C:rx {} \;
find Фото -type f -exec setfacl -m user:C:r {} \;


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

find Фото -type d -exec setfacl -m default:user:C:rx {} \;

Все. Теперь пользователи «А» и «В» имеют полный доступ к каталогу «Фото», ко всем подкаталогам и файлам, даже к вновь созданным. Пользователю «С» все это доступно только для чтения.
В этом случае, если в группе users появляется еще один пользователь, и если явно не прописать права для него, то он автоматически получает полный доступ к каталогу «Фото». Это не всегда приемлемо. Рассмотрим второй способ, где данный недочет (если можно так сказать) устранен.
Способ 2

Зададим права доступа для пользователя «В» в явном виде. Напомню, что пользователь «А» является владельцем и уже имеет полный доступ.

find Фото -type f -exec setfacl -m user:B:rw {} \;
find Фото -type d -exec setfacl -m user:B:rwx {} \;


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

find Фото -type d -exec setfacl -m default:user:A:rwx {} \;
find Фото -type d -exec setfacl -m default:user:B:rwx {} \;


Пользователя «С» мы не трогаем, он является членом группы users, котрая имеет права rx, и соответственно пользователь «С» будет иметь права rx, что и необходимо было сделать.

Вроде все, за исключением одного НО. Права автоматически не назначаются на копируемые и перемещаемые файлы. Я так и не смог разобраться почему. Похоже что так просто задумано.
На этом все.
+9
spiff04.03.09 07:16# +1
большое спасибо. У самого такая же проблем (2 юзера). Все думал покапать в сторону setfacl, да руки не доходили... плюсанул вобщем.
exelens04.03.09 07:21# +1
А можно привести статью целиком? Конечно с сохранением ссылок на первоисточник.
karapuz04.03.09 07:51# +0
эээ, ну данный пост изначально задуман как ссылка на мой... ну пусть будет блог :). Если действительно есть необходимость, я сделаю как Вы просите, но не вижу смысла копипастить.
exelens04.03.09 08:03# +1
Это уже не копипастинг, а кросс пост с указанием источника.
karapuz04.03.09 10:43# +0
сделал как Вы просили
exelens04.03.09 13:19# +0
Спасибо
kavren04.03.09 07:29# +1
Спасибо, ваша статья помогла до конца разобраться с установкой прав.
l1feh4ck3r04.03.09 08:56# +1
Единственный вопрос: если потом переставить систему, оставив всех 3х пользователей, но не устанавливать пакет setfacl, то будут ли сохранены правила доступа к файлам и папкам?
Просто если нет, то не проще ли создать дополнительную группу, например media, добавить в нее пользователей A и B, выставить на всю папку "Фото" группу media и выставить правда "только для чтения" для всех остальных?
booley04.03.09 09:04# +0
выставить правда

Правду не выставляют.. :)
А так вы правы, это даже, имхо, более юникс-вей :)
karapuz04.03.09 09:08# +0
Я переставлял систему, естественно каталог home (отдельный раздел) не трогал, после переустановки права остались, единственное, нужно не забыть указать опцию монтировани acl.
А насчет группы media, я не уверен что пользователь А будет иметь полный доступ к созданному пользователем Б. Они же оба и так члены группы одной группы users и эта группа и так владелец каталога.
l1feh4ck3r04.03.09 09:10# +0
Немного не в том дело. Если ты выставишь права на каталог "запись и выполнение" для группы users, то вновь созданый юзверь тоже будет иметь полный доступ в каталог, а так только пользователи группы media.
К тому же по умолчанию ставиться "только для чтения" для группы, если я не ошибаюсь.
karapuz04.03.09 09:34# +0
И все это с выставленением acl для media. Понял, но лично для себя не вижу смысла, ибо третий пользователь в группе users в ближайшее время не намечается. ИМХО это все частности, понятно что способов больше чем 2 или 3, и Ваш способ тоже инетересен.
l1feh4ck3r04.03.09 10:16# +0
В статье было про трех пользователей ) A, B и С.
Dreams04.03.09 10:28# +1
хм... помоему проще было бы сделать доступ для всех к папке media =) всё равно это же ваш с женой комп :) кто там ещё будет лазить? ;)) ну а вообще, выставлять права на группу пользователей более рационально :) это если 2 пользователя, то ещё можно на каждого создавать, а если их 250+? =))
К тому же группы пользователей позволяют более гибко управлять правами доступа :)
Username04.03.09 10:43# +0
плюсанул за команду find с опцией -exec - не знал. А так, по существу - ммм написал бы просто про права юзеров.
KerneL04.03.09 10:45# +0
Зачтено. Хорошая статья, полезная. Автор, спасибо, применю на практике. Плюс.
sqrrl04.03.09 14:45# +1
Очень полезно. Спасибо. Особенно за -exec.
Поиск
©Welinux
Идея сайта exelens
Движок 0byte, разработчик nvbn
Дизайн - Astramak

В хорошем качестве hd видео

Онлайн видео бесплатно


Смотреть русское с разговорами видео

Online video HD

Видео скачать на телефон

Русские фильмы бесплатно

Full HD video online

Смотреть видео онлайн

Смотреть HD видео бесплатно

School смотреть онлайн