LINUX.ORG.RU
ФорумAdmin

Bind - проблема с правами на slave


0

0

Есть bind собранный из исходников и сконфигурированный как slave для всех зон:
# named -V
BIND 9.6.1-P1 built with '--prefix=/usr' '--sysconfdir=/etc'

named запускается от пользователя root ('/usr/sbin/named -u root'). В named.conf следуюцие опции:
directory "/dns";
pid-file "/var/run/named.pid";

Зоны хранятся в виде /dns/<customer>/domain (к примеру /dns/vasia/vasiadomain.ru ). Соответственно в named.conf:
zone "vasiadomain.ru" {
type slave; masters { 1.2.3.4; };
file "vasia/vasiadomain.ru";
};

Права на директорию:
[root@crm ~]# ls -ld /dns/vasia
drwxrwxr-x 2 sync sync 27648 Oct 29 19:02 /dns/vasia

OS: CentOS 5.3, selinux отключен:
# getenforce
Disabled

Проблема в том, что named не может создавать файлы в директории /dns/vasia. В логах следующее
general: dumping master file: vasia/tmp-gHGDCmLU7x: open: permission denied
xfer-in: transfer of 'vasiadomain.ru/IN' from 1.2.3.4#53: failed while receiving responses: permission denied

Если запустить named не от 'root', а от 'sync', то все нормально. Думал, что named проверяет права на директорию, но strace показал следущее:

open("vasia/tmp-gHGDCmLU7x", O_RDWR|O_CREAT|O_EXCL, 0666) = -1 EACCES (Permission denied)

Если выставить права 777 на директорию, то все работает. На двух других серверах под freebsd and gentoo в точности такой же named c такой же конфигурацией работает нормально.

Вопрос в том кто мешает root создать файл в директории?


Вопрос в том кто мешает root создать файл в директории?

При запуске под рутом, named может изменить юзера под которым работает демон (зависит от настроек и/или параметров запуска named (-u))

Так что смотри внимательно под каким юзером у тебя named реально работает

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

> При запуске под рутом, named может изменить юзера под которым работает демон (зависит от настроек и/или параметров запуска named (-u))

Это понятно. Под root работает.

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

Это понятно. Под root работает.

Тогда что не понятно? Под работает, под sync (страннйы выбор имени, но это не важно) работает, что тебе еще надо?

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

В смысле Bind от root работает, но синхронизация не работает.

tungus
() автор топика

Попробуйте запустить strace на большее количество системных вызовов, может перед вызовом open() named становится пользователем nobody?

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

Запустил:
strace -tt -ff -o bind /usr/sbin/named

[root@ns strace]# grep 'uid(' bind.*
bind.8191:18:48:47.517479 getuid() = 0
bind.8191:18:48:47.519180 getuid() = 0

bind.8191 - до clone.

Файловая система ext3 , хитрых ext3 атрибутов не устаноленно.

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

Нашел:

[root@ns1 strace]# grep capset bind.*
bind.8191:18:48:47.517533 capset(0x19980330, 0, {CAP_DAC_READ_SEARCH|CAP_SETGID|CAP_SETUID|CAP_NET_BIND_SERVICE|CAP_SYS_CHROOT| CAP_SYS_RESOURCE, CAP_DAC_READ_SEARCH|CAP_SETGID|CAP_SETUID|CAP_NET_BIND_SERVICE|CAP_SYS_CHROOT|C AP_SYS_RESOURCE, 0}) = 0

Пересобрал bind c '--prefix=/usr' '--sysconfdir=/etc' '--disable-linux-caps' и заработало

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