LINUX.ORG.RU
ФорумAdmin

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


0

1

Доброе время суток господа. Надеюсь найдутся люди которые смогу помочь мне в решении этой проблемы. Передо мной стоит задача создания сетевого файлового хранилища, под управлением Linux Debian + samba 3.5.6 + setfacl 2.2.49 Права доступа должны быть распределены для пользователей AD. Во доступ к папки средствами samba:
[public]
comment = файлы пользователей
browseable = no
read only = yes
path = /arhive/public
directory mask = 0750
inherit permissions = yes
inherit owner = yes
inherit acls = yes
admin users = @«OZNA^domain admins»
write list = @«OZNA^Domain Users»
Вот ACL распределения на папки:

1. Корневая папка.
root@sertfs:/etc/samba# getfacl /arhive/
getfacl: Removing leading '/' from absolute path names
# file: arhive/
# owner: root
# group: root
user::rwx
group::rwx
other::rwx

2. Расшареная папка:
root@sertfs:/etc/samba# getfacl /arhive/public/
getfacl: Removing leading '/' from absolute path names
# file: arhive/public/
# owner: root
# group: root
user::rwx
user:OZNA^admin.w:rwx #effective:r-x
group::r-x
group:alex:r-x
mask::r-x
other::r-x

3. Первая папка в расшарке:
root@sertfs:/etc/samba# getfacl /arhive/public/Архив\ ЦНИР/
getfacl: Removing leading '/' from absolute path names
# file: arhive/public/Архив ЦНИР/
# owner: root
# group: alex
user::rwx
group::r-x
other::---

4. Вторая папка
getfacl: Removing leading '/' from absolute path names
# file: arhive/public/Сертификаты/
# owner: root
# group: alex
user::rwx
user:OZNA^admin.w:rwx
user:OZNA^user1:rwx
group::r-x
group:alex:r-x
mask::rwx
other::r-x

5. Третья
root@sertfs:/etc/samba# getfacl /arhive/public/Учебный\ центр/
getfacl: Removing leading '/' from absolute path names
# file: arhive/public/Учебный центр/
# owner: root
# group: alex
user::rwx
user:OZNA^admin.w:rwx
user:OZNA^user2:rwx
user:OZNA^user3:rwx
user:OZNA^user4:rwx
group::r-x
group:OZNA^4400\040учебный\040центр:rwx
mask::rwx
other::r-x

6. Вложенная папка
root@sertfs:/etc/samba# getfacl /arhive/public/Учебный\ центр/Курсы\ Microsoft/
getfacl: Removing leading '/' from absolute path names
# file: arhive/public/Учебный центр/Курсы Microsoft/
# owner: root
# group: alex
user::rwx
user:OZNA^admin.w:rwx
user:OZNA^user2:rwx
user:OZNA^user3:rwx
user:OZNA^user4:rwx
group::rwx
group:OZNA^4400\040учебный\040центр:rwx
mask::rwx
other::r-x


Ко всем этим папкам все пользователи должны иметь доступ, и не должны в них писать. В принципе настроено все верно. Но вот пример с папкой «Учебный центр».
Никто не может писать в папку «/arhive/public/» кроме admin.w
Никто не может писать в папку «/public/Учебный центр/» кроме admin.w, user2, user3, user4.
А вот в папку «/arhive/public/Учебный центр/Курсы Microsoft/» могут писать все пользователи. Кто-нибудь может объяснить мне причину?

ну у тебя ведь стоят на /public/Учебный центр/
group::r-x
- получается что все из группы могут только почитать содержимое
а вот на
/arhive/public/Учебный центр/Курсы Microsoft/
group::rwx
что даёт обасолютно всем пользователям группы писать что хочешь, хоть пиши ты пользователей - хоть нет
- честно, сам я давно с самбой дела не имел, просто посмотрел различия в конфиге и сделал такой вывод.

NemesisSOAD ()
Ответ на: комментарий от NemesisSOAD

Это то понятно. Но папка «Курсы Microsoft» была создана пользователем имеющим право на запись к этой папке. т.е. эти права наследовались но как и откуда я понять не могу.

uneform_alex ()
Ответ на: комментарий от uneform_alex

>эти права наследовались но как и откуда я понять не могу.
Скорее всего, с локального компа пользователя. В настройках Самбы можно указать umask, но лучше для контроля скрипт исправляющий права доступа запускать.

fractaler ★★★★★ ()
Ответ на: комментарий от fractaler

Хм... не подскажешь как запускать и как использовать скрепты для таких задач? Если есть какой-то ресурс где можно почитать, я с радостью туда отправлюсь.

uneform_alex ()
Ответ на: комментарий от uneform_alex

Писать на bash:

http://www.opennet.ru/docs/RUS/bash_scripting_guide/

Запускать по расписанию через cron:

man cron

http://ru.wikipedia.org/wiki/Cron

Думаю, скрипт будет такого вида:

#!/bin/bash
find /srv/samba/public -type f -exec chmod 640 {} \;
find /srv/smaba/public -type d -exec chmod 750 {} \;
команды писал по памяти, могу ошибиться.

На всякий случай добавлю, что это, конечно, костыль. И полагаться только на него не стоит.

fractaler ★★★★★ ()
Ответ на: комментарий от uneform_alex

Лучшее решение называется «прямые руки пользователя». Потому что вся проблема из-за того, что пользователь, копирующий/создающий файлы задаёт, пусть неявно, неправильные права доступа.
Если нет возможности обучить пользователей, можно нагрузить сервер бякой вроде auditd или systemtap. Они соответствуют твоим запросам, просто у меня не вызывают симпатии.
ИМХО, пользователи, не умеющие проверять права доступа к файлам до/после их копирования в паблик не должны иметь прав доступа на запись.

fractaler ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.