LINUX.ORG.RU
ФорумAdmin

acl и работа с samba, etc


0

0

С этим получается какая-то чепуха.
Если работать через самбу, то для шары указываем: [Groupdir]
path = /home/samba/workdir
comment = рабочие директории
browseable = yes
writeable = yes
inherit acls = yes
guest ok = no

Начинаем раздавать права на папки внутри шары:

# pwd
/home/samba/workdir

# getfacl test/

# file: test
# owner: root
# group: root
user::rwx
group::rwx
group:Domain\040Admins:r-x
group:Domain\040Users:---
group:buhgalteria:rwx
mask::rwx
other::---
default:user::rwx
default:group::rwx
default:group:Domain\040Admins:r-x
default:group:Domain\040Users:---
default:group:buhgalteria:rwx
default:mask::rwx
default:other::---

С исходной папкой разобрались. Теперь, юзеры:

# id h
uid=1022(h) gid=513(Domain Users) группы=513(Domain Users),1006(buhgalteria)

# id b
uid=1018(b) gid=512(Domain Admins) группы=512(Domain Admins),513(Domain Users)

Когда в винде логинится юзер b, то он не может писать в папку test, но может просматривать ее содержимое. Когда то же самое делает h, то он может создать папку или файл в test/ и просматривать содержимое.
Итак, h создал файл:

# getfacl test/ff.txt

# file: test/ff.txt
# owner: h
# group: Domain\040Users
user::rwx
group::rwx
group:Domain\040Admins:r-x
group:Domain\040Users:---
group:buhgalteria:rwx
mask::rwx
other::---

который может прочитать, но не удалить пользователь b, и папку

# getfacl test/qwer/

# file: test/qwer
# owner: h
# group: Domain\040Users
user::rwx
group::rwx
group:Domain\040Admins:r-x
group:Domain\040Users:---
group:buhgalteria:rwx
mask::rwx
other::---
default:user::rwx
default:group::rwx
default:group:Domain\040Admins:r-x
default:group:Domain\040Users:---
default:group:buhgalteria:rwx
default:mask::rwx
default:other::---

которую пользователь b не может удалить, но может открыть (что правильно) и создать в НЕЙ (!!) свою папку

# getfacl test/qwer/b/
# file: test/qwer/b
# owner: b
# group: Domain\040Admins
user::rwx
group::rwx
group:Domain\040Admins:r-x
group:Domain\040Users:---
group:buhgalteria:rwx
mask::rwx
other::---
default:user::rwx
default:group::rwx
default:group:Domain\040Admins:r-x
default:group:Domain\040Users:---
default:group:buhgalteria:rwx
default:mask::rwx
default:other::---

а также, может удалить все папки, лежащие в test/qwer/ и созданные не им, а пользователем h. Как это решить, до сих пор не понимаю. Пробовал маски менять, не помогло. Костыль в виде периодически повторяющегося скрипта

#!/bin/sh

chown root -R /home/samba/workdir/test/
chgrp root -R /home/samba/workdir/test/
chmod 0770 -R /home/samba/workdir/test/
setfacl -R -m g:buhgalteria:rwx /home/samba/workdir/test/
setfacl -R -m g:Domain\ Admins:r-x /home/samba/workdir/test/

очень не хочется использовать, т.к. получается большая дырка. Как заставить этот acl правильно работать?


Теперь, я пробую работу с acl, логинясь прямо на сервер.
Юзеры те же самые.

Создал пользователем h файл и папку:

# getfacl test/qwer2/

# file: test/qwer2
# owner: h
# group: Domain\040Users
user::rwx
group::rwx
group:Domain\040Admins:r-x
group:Domain\040Users:---
group:buhgalteria:rwx
mask::rwx
other::---
default:user::rwx
default:group::rwx
default:group:Domain\040Admins:r-x
default:group:Domain\040Users:---
default:group:buhgalteria:rwx
default:mask::rwx
default:other::---

# getfacl test/2

# file: test/2
# owner: h
# group: Domain\040Users
user::rw-
group::rwx #effective:rw-
group:Domain\040Admins:r-x #effective:r--
group:Domain\040Users:---
group:buhgalteria:rwx #effective:rw-
mask::rw-
other::---

но тут получается еще хуже. Несмотря на то, что b не могжет удалить файл и папку, он может записывать в файл (!??) и создавать файлы-папки в qwer2/, а также спокойно удалять их, не взирая на права и маски. Почему?

Все тестовые примеры в винде создавались из контекстного меню папки, а в линуксе командами mkdir и touch. Все права, которые видны, назначены системой автоматически, за исключением папки test/


# file: test/qwer
# owner: h
# group: Domain\040Users
user::rwx
group::rwx 

Пользователь b может создавать и удалять подкаталоги т.к. входит в 
domain users если файлы и каталоги также имеют domain users rwx. короче 
всё работает нормально смотри внимательнее
acl

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

Если не нравится, что пользователи и их первичная группа становятся 
владельцами файла, используй inherit owner (man ыьиюсщта) и устанавливай
на родительский каталог sgid бит.

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

> Если не нравится, что пользователи и их первичная группа становятся
владельцами файла, используй inherit owner (man ыьиюсщта) и устанавливай
на родительский каталог sgid бит.

Большое спасибо за совет.
В smb.conf добавил

acl check permissions = true
inherit owner = yes

и выполнил

chmod -c 2770 test/

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

# getfacl test/12/
# file: test/12
# owner: root
# group: root
user::rwx
group::rwx
group:Domain\040Admins:r-x
group:buhgalteria:rwx
mask::rwx
other::---
default:user::rwx
default:group::rwx
default:group:Domain\040Admins:r-x
default:group:buhgalteria:rwx
default:mask::rwx
default:other::---

# getfacl test/564.txt
# file: test/564.txt
# owner: root
# group: root
user::rwx
group::rwx
group:Domain\040Admins:r-x
group:buhgalteria:rwx
mask::rwx
other::---

# getfacl test/12/765/
# file: test/12/765
# owner: root
# group: root
user::rwx
group::rwx
group:Domain\040Admins:r-x
group:buhgalteria:rwx
mask::rwx
other::---
default:user::rwx
default:group::rwx
default:group:Domain\040Admins:r-x
default:group:buhgalteria:rwx
default:mask::rwx
default:other::---

и тд.
Теперь, помимо того, что автоматически назначаются верные права, пользователи еще не могут самовольно изменять права доступа на файлы-папки.

Попробовал в линукс-среде сделать что-то похожее. Для этого назначил для папки test/

chmod 6770 test/

После команды типа mkdir или touch создается директория-файл, но пользователем-владельцем у них оказывается не унаследованный от test/ root, а сам создатель h:

# getfacl test/1
# file: test/1
# owner: h
# group: root
user::rw-
group::rwx #effective:r--
group:Domain\040Admins:r-x #effective:r--
group:buhgalteria:rwx #effective:r--
mask::r--
other::---

после чего он может изменить права доступа к файлу-папке. ЭТУ проблему можно решить?
Интернет говорит, что нет :( http://www.zzee.com/solutions/linux-permissions.shtml#setuid

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

Таки DAC

> После команды типа mkdir или touch создается директория-файл, но пользователем-владельцем у них оказывается не унаследованный от test/ root, а сам создатель h: после чего он может изменить права доступа к файлу-папке.

Вообще-то это фундаментальная фича DAC (discretionary access control): владелец файла имеет право делать с ним всё, что захочет. Не то что бы мне оно очень нравилось, но MAC (а особенно Linux'овый его вариант -- SELinux) толком ничего не даёт (кроме геморроя).

> ЭТУ проблему можно решить?

Если Вы понимаете, к каким это последствиям може привести, можно попробовать

http://dev.aliki.ru/suiddir-owner-2.6.13-20051223.patch

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

man smb.conf на предмет acl group control. Ну вобщем в этом разделе ты всё интересное и увидишь. Различные комбинации inherit owner acl group control и sgid дают почти все необходимые решения. Первичная группа каталога (файла) тоже может быть доменной (как и владелец). При вглюченном acl group control и sgid бите пользователи первичной группы смогут модифицировать acl.

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

Таки читаем, на что отвечаем...

> man smb.conf на предмет acl group control.

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

Dselect ★★★
()
Ответ на: Таки читаем, на что отвечаем... от Dselect

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

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

If you can't do it in Perl, you don't need it. (C)

> Дак никак.

Очень даже как. Берём SUID dir патч (на который я дал ссылку), включаем поддержку suid директорий, пересобираем ядро, и делаем

chmod 4771 ~/shared

setfacl -d u:pupkin:rwx ~/shared

setfacl u:pupkin:rwx ~/shared

> Для домашних каталогов своя политика доступа, там пользователи - владельцы файлов.

Такая "политика" далеко не всегда годится.

> Врядли это нужно пользователю.

Если это лично Вам не нужно, это не значит, что не нужно никому.

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

2. Хотелось бы, чтоб файлы, которые создаёт какой-нибудь демон в домашней директории пользователя, принадлежали этому пользователю, а не демону. Давать демону права root только ради этого -- некошерно.

3. Необходимо запретить пользователю менять права на файлы в его домашней директории.

> Для общих шар - нечего туда им соваться, только через проводник.

Кто такой проводник?

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