Возможно ли иметь ACL для доступа к файловой системе (или аналогичные) в OpenBSD? Я пытаюсь создать папку, в которой одна группа имеет доступ для чтения и записи, а другая группа имеет доступ только для чтения. Я не хочу предоставлять миру доступ для чтения и не хочу ограничивать доступ на запись для одного пользователя, поэтому оба должны управляться разрешениями группы.
Изменить: было высказано предположение, что OpenBSD может вообще не иметь ACL. Что нормально. Остается вопрос: как я могу, или это вообще возможно, установить права доступа к папкам в OpenBSD так, чтобы одна группа имела доступ на запись, другая группа имела доступ только для чтения, а мир не имел доступа?
Вы не можете.
Вот пример того, как это можно понять с помощью Перекрестная ссылка BSD суперпользователя.
Вы можете начать с open()
функция, которая является системным вызовом, поэтому она определяется с помощью sys_
префикс в ядре. Ищи sys_open
. Вы найдете это на http://bxr.su/OpenBSD/sys/kern/vfs_syscalls.c#sys_open.
Если вы последуете sys_open()
достаточно долго, вы обнаружите, что есть http://bxr.su/OpenBSD/sys/kern/vfs_vops.c#VOP_ACCESS.
В VOP_ACCESS()
, вы увидите, что каждая файловая система имеет свою *_access
функция для проверки разрешений, которая представляет собой указатель, хранящийся в v_op->vop_access
.
В поисках vop_access
ссылки, вы можете найти все отдельные функции доступа к файловым системам. Для UFS это http://bxr.su/OpenBSD/sys/ufs/ufs/ufs_vnops.c#ufs_access.
В ufs_access()
, вы можете видеть, что он обращается к общему не зависящему от файловой системе коду для проверки прав доступа - http://bxr.su/OpenBSD/sys/kern/vfs_subr.c#vaccess.
С участием vaccess()
, вы можете сами увидеть, как проверяются разрешения.
То, что вы хотите сделать, невозможно в OpenBSD, потому что в нем нет ACL.
В качестве обходного пути вы можете предоставить общий доступ к пользователю / группе и реализовать свою политику ACL через судо и несколько нестандартных скриптов.