nixp.ru v3.0

23 января 2017,
понедельник,
05:33:53 MSK

DevOps с компанией «Флант»
denel написал 5 ноября 2007 года в 08:11 (1270 просмотров) Ведет себя как мужчина; открыл 23 темы в форуме, оставил 63 комментария на сайте.

И так имеем: многопользовательский LINUX Gentoo, все пользователи локальные, ФС ext3 и reisefs. Допустим нужно всем пользователям группы users дать разрешения rwx в директории /media/Vid, к примеру для начала задаю такие права для всей директории /media/Vid с содержимым, все замечательно! Но как кто то создает там что то, оно создается с правами для группы = r—, как сделать чтобы права внутри /media/Vid наследовались от прав /media/Vid, например rwxrwx—? учить пользователей изменять права в ручную и бегание через samba не предлагать! Это должно быть выполнено автоматически — создание новых файлов с правами от директории.

Дмитрий Шурупов

POSIX ACL?

Там можно: setfacl -m d:…

metal

http://oldfield.wattle.id.au/luv/permissions.html

обратить внимание на umask и setgid. Если этого не достаточно, вперед к ACL или извращения с alias.

denel

Что то читал читал, таак и не понял как может помочь umask в моем случае (возможно из-за плохого знания НЕ родных языков…) тем не менее нашел что то тоже на НЕ родном языки по ACL и смог достичь нужного результата… установил acl пакет, подмонтировал нужные разделы с -o acl, setfacl -d -m u:den:rwx,g::rwx,o::—,m::rwx /directory, и все что теперь создается внутри /directory — создается с правами по умолчанию — rwxrwx—

HanTengry

Хотел сделать то же самое, только не получается, думаю из-за того что не понял эту фразу, опишите плиз подробнее как это монтируется:

Denel
подмонтировал нужные разделы с -o acl

Сделал только это:

Denel
setfacl -d -m u:den:rwx,g::rwx,o::—,m::rwx /directory, и все что теперь создается внутри /directory — создается с правами по умолчанию — rwxrwx—

И у меня получилось это только для директорий, то есть заданные в команде права применяются только для директорий которые создаются внутри /directory, для файлов не применяются. Как и для файлов это применить?

Дмитрий Шурупов

> опишите плиз подробнее как это монтируется

Просто опцию «acl» надо передать mount’у через флаг -o. Например:

# mount -o rw,acl /dev/sda1 /mnt/my

Ну, и в fstab так же прописывать, если надо. Например:

/dev/sda1             /mnt/my                   ext3    rw,acl          1 2

> И у меня получилось это только для директорий, то есть заданные в команде права применяются только для директорий которые создаются внутри /directory, для файлов не применяются. Как и для файлов это применить?

Вообще, насколько я помню, default-правила ACL относятся как к каталогам, так и к файлам… Может, я что-то не так помню? man setfacl не помогает? :)

HanTengry

Зачем монтирование делать? Логика наверно есть, только невнемлю..

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

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

Монтирование на папку-это защита от переполнение, это я вроде понимаю.

Сделал так:

# mount -o rw,acl /dev/sda1 /mnt/my

где /dev/sda1 — это у меня устройство на котором расположена корневая файловая система, то есть каталог — «/».

/mnt/my — это каталог на этом устройстве.

После выполнения команды, вижу содержимое «/» в каталоге /mnt/my, то есть, захожу в my и опять попадаю как бы в корневой раздел(если еще раз зайти в /mnt/my — то уже не вижу папок из /). После выполения команды:setfacl -d -m u:den:rwx,g::rwx,o::—,m::rwx /mnt/my, все осталось по старому, разрешения для файлов по шаблону не применяются.

Дмитрий Шурупов

> Зачем монтирование делать? Логика наверно есть, только невнемлю..

Примонтировать нужно один раз. Речь о том, что для функционирования ACL файловая система, на которой эти ACL нужны, должна быть в системе примонтирована с опцией acl. Каждый раз монтировать не надо, конечно ;-)

> После выполения команды:setfacl -d -m u:den:rwx,g::rwx,o::—,m::rwx /mnt/my, все осталось по старому, разрешения для файлов по шаблону не применяются.

Хм. У меня все работает. Правда, фс — xfs.

А вы как проверяете наличие новых прав? Надеюсь, с getfacl, а не «ls -l"? ;-) Потому что в рамках стандартных UNIX-прав остается наибольшая маска (для совместимости), которая совсем необязательно будет соответствовать реальным правам для конкретных пользователей/групп.

Вот как у меня:

trash ~ # mkdir testacl
trash ~ # getfacl testacl
# file: testacl
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
trash ~ # touch testacl/one
trash ~ # getfacl testacl/one
# file: testacl/one
# owner: root
# group: root
user::rw-
group::r--
other::r--
trash ~ # setfacl -m d:u:shurup:rwx testacl/
trash ~ # touch testacl/two
trash ~ # getfacl testacl/two
# file: testacl/two
# owner: root
# group: root
user::rw-
user:shurup:rwx                  #effective:rw-
group::r-x                  #effective:r--
mask::rw-
other::r--
trash ~ #
HanTengry

Да, для конкретного юзера работает, разрешения появляются по шаблону и на файлы. А вот если просто делать не указывая имя юзера то у меня срабатывает только для каталогов(т.е. у вас:setfacl -m d:u:shurup:rwx testasl/, а я делаю так: setfacl -m d:u::rwx testasl).

Конкретное имя юзера я не хотел бы указывать потому, что представим, что я не хочу (и не знаю) выяснять от имени какого юзера будет работать программа, которая должна будет иметь права к этим файлам. Во вторых принципиально хочу понять, как это работает, как этим управлять, и почему это нельзя или невозможно если это так..почему если не указывать имя юзера это работает только для каталогов..или это опять только у меня(SUSE SLES9 SP3, 2.6.4-7.244-default).

Дмитрий Шурупов

Если вы не указываете имя пользователя и задаете default facl, то это права по умолчанию, которые получит владелец нового созданного файла.

Поясняю:

trash opt # mkdir testacl
trash opt # chmod 777 testacl
trash opt # su Dmitry.Shurupov
Dmitry.Shurupov@trash /opt $ touch testacl/a
Dmitry.Shurupov@trash /opt $ exit
trash opt # getfacl testacl/a
# file: testacl/a
# owner: Dmitry.Shurupov
# group: users
[b]user::rw-[/b]
group::r--
other::r--
trash opt # setfacl -m d:u::--- testacl/
trash opt # su Dmitry.Shurupov
Dmitry.Shurupov@trash /opt $ touch testacl/b
Dmitry.Shurupov@trash /opt $ exit
trash opt # getfacl testacl/b
# file: testacl/b
# owner: Dmitry.Shurupov
# group: users
[b]user::---[/b]
group::rw-
other::rw-

В вашем случае, как понимаю, требуется задавать:

setfacl -m d:o:rwx something

(здесь «o» — это others, а не owner, как можно подумать)

HanTengry

Почему права разные, если создавать документы разными способами (в графике работал под рутом, в shell тоже)?

Описание ниже..

test10:/777 # setfacl -m d:u::rwx,g::rwx,o::rwx,m::rwx /777

test10:/777 # cat > /777/777

[2]+ Stopped cat >/777/777

test10:/777 # getfacl /777/777

getfacl: Removing leading '/' from absolute path names

# file: 777/777

# owner: root

# group: root

user::rw-

group::rw-

other::rw-

Теперь создал каталог с именем 555 через графику в Линукс(то есть в иксах):

test10:/777 # getfacl /777/555

getfacl: Removing leading '/' from absolute path names

# file: 777/555

# owner: root

# group: root

user::rw-

group::r—

other::r—

Дмитрий Шурупов

Второй файл создавался «через графику» — это как? Графическим файловым менеджером или другой программой? Какой?

Вполне вероятно, что GUI-программа, через которую создавался файл, после создания «насильно» изменила права по своим каким-то соображениям.

ecobeingecobeing.ru
Экология и вегетарианство на благо всем живым существам Планеты.