Заключение в кавычки администраторского руководства OpenLDAP:
Порядок оценки директив доступа делает их размещение в конфигурационном файле важным. Если одна директива доступа более конкретна, чем другой с точки зрения записей, она выбирает, это должно казаться первым в файле конфигурации. Точно так же, если один селектор более конкретен, чем другой, он должен быть на первом месте в директиве доступа.
Для вырезания, короче говоря, пробуют следующее:
access to attrs=userPassword
by dn.base="cn=admin,dc=my-company,dc=de" write
by set="[cn=sysadm,ou=Group,dc=my-company,dc=de]/memberUid & user/uid" write
by self write
by anonymous auth
by * none
# Allow everybody adding and changing Contacts
access to dn.subtree="ou=Contacts,dc=my-company,dc=de"
by dn.base="cn=admin,dc=my-company,dc=de" write
by set="[cn=sysadm,ou=Group,dc=my-company,dc=de]/memberUid & user/uid" write
by set="[cn=users,ou=Group,dc=my-company,dc=de]/memberUid & user/uid" write
by * read
access to *
by dn.base="cn=admin,dc=my-company,dc=de" write
by set="[cn=sysadm,ou=Group,dc=my-company,dc=de]/memberUid & user/uid" write
by self write
by * read
BTW, Вы действительно хотите предоставить весь пользовательский доступ ко всем атрибутам их собственного объекта ('доступ к *... сам запись')? Поскольку Вы ограничиваете доступ для записи к атрибуту userPassword только в первом ACL, я сказал бы, что это не то, что Вы хотели.
Это работает на меня:
check directory my_path path /mnt/some_mount_point
if does not exist then exec "/usr/local/bin/create_mnt.sh"
Это может помочь вам mkdir -p $directory
сделать то, что вы хотите. Опция -p
создаст любые необходимые родительские каталоги. Если $directory
уже существует в качестве каталога, команда ничего не делает и успешно работает. Если $directory - обычный файл, то он останется нетронутым, nd не даст сбоя, если каталог уже существует, так что вы можете сделать все это сразу:
mkdir -p /some/directory/you/want/to/exist || exit 1
Alec в основном имеет его, но для этого не нужно создавать скрипт. Вы можете запустить mkdir
напрямую (хотя обратите внимание, что вам нужен полный путь к нему):
check directory my_path path /mnt/some_mount_point
if does not exist then exec "/bin/mkdir /mnt/some_mount_point"
В зависимости от вашего пути, может быть полезно добавить переключатель -p
в mkdir, если вам нужны подпапки и/или дублирование подавления ошибок.
Нет необходимости создавать отдельный скрипт, вам нужно использовать bash
с опцией -c
:
check directory my_path path /some/path/to/dir
if does not exist then exec "/bin/bash -c 'mkdir -p /some/path/to/dir'"
as uid <some_user> and gid <some_group>
Мониторинг
процесс запускается от пользователя root, поэтому убедитесь, что вы не создаете каталоги как root (предположительно, вам это не нужно)
Затем вы можете убить процесс monit
и запустить его на переднем плане с помощью
monit -Ivv
и просмотреть выходные примечания отладки. Если ошибок нет, вы можете остановить monit
на переднем плане с помощью C-c и запустить его как обычный процесс deamon.
Надеюсь, это поможет.