Назад | Перейти на главную страницу

Расчет маски ACL файла: зачем?

Я пытаюсь настроить правильную модель разрешений ACL для общего каталога с помощью ACL, но у меня возникают проблемы. Несмотря на то, что я установил значение по умолчанию «user: user1: rwx», файлы, созданные пользователем user2, не могут быть записаны пользователем user1 из-за расчета маски. Он говорит, что эффективен "r--".

Согласно странице руководства, маска рассчитывается путем объединения группы-владельца, других именованных групп и именованных пользователей. В маске (часть объединения) будут включены только разрешения, которые есть у всех них.

Но почему? Если это так, как я могу просто сказать «пользователь user1 всегда может читать и писать»?

Кроме того, user1 не может записывать файлы, созданные пользователем user2, но может их удалить ...

Изменить: уточнение:

Это текущий acl рассматриваемого каталога:

# file: NNHD/
# owner: user1
# group: user1
user::rwx
user:user1:rwx
user:user2:rwx
group::r-x
mask::rwx
other::---
default:user::rwx
default:user:user1:rwx
default:user:user2:rwx
default:group::rwx
default:mask::rwx
default:other::---

У этого есть соответствующие маски.

Когда user2 создает файл в этом каталоге, ему дается следующее:

# file: test
# owner: user2
# group: user2
user::rw-
user:user1:rwx                  #effective:r--
user:user2:rwx                  #effective:r--
group::rwx                      #effective:r--
mask::r--
other::---

Я не понимаю, почему это происходит ... Что я должен сделать, чтобы сделать его доступным для записи для пользователя user1?

Я новичок в ACL в unix, но я думаю, что вы допустили логическую ошибку. Вы заявляете следующее: «Согласно справочной странице маска вычисляется путем объединения группы-владельца», но в настройках ACL у вас есть правило «group :: rx» и «mask :: rwx», которое делает маску "rx" && "rwx" = "rx" для новых файлов, созданных в этом каталоге.

Вышеупомянутое также объясняет, почему это влияет только на user1, поскольку «group :: r-x» - это группа владельца (user1). Для удаления в linux вам нужны только права на запись в папку, а не в файл.

Большинство приложений в Linux создают файлы с разрешением «rw-», например, touch. Так, наверное, так и пошло от "r-x" && "rw-" = "r--" в конце.

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

Я попал на этот сайт, когда искал в Google отключение автоматического расчета масок в ACL, но думаю, мне не повезло. Этот ответ может быть полезен другим гуглерам :)

(Я предполагаю, что вы здесь используете Linux)

Вы можете явно установить маску с помощью списков управления доступом, аналогично тому, как вы устанавливаете сами списки управления доступом, используя setfacl m::mask

например:

jim@abox:/tmp$ getfacl temp/
# file: temp/
# owner: jim
# group: jim
user::rwx
user:admin:rwx
group::r-x
mask::rwx
other::r-x

jim@abox:/tmp$ setfacl -R -m m::rx temp/
jim@abox:/tmp$ getfacl temp/
# file: temp/
# owner: jim
# group: jim
user::rwx
user:admin:rwx                #effective:r-x
group::r-x
mask::r-x
other::r-x