Эффективные разрешения ACL изменение разрешений

Вопрос или проблема

Из скрипта оболочки bash я создаю папку и сохраняю mysqldump там. Я уверен, что в моем скрипте нет команд, связанных с правами доступа. Чтобы предоставить другому пользователю доступ к этим файлам, я использовал ACL, но когда он попытался получить доступ к файлу, он получил сообщение об отказе в разрешении, и проблема заключается в эффективных правах доступа ACL.

Владелец директории – ola, а новый пользователь, который пытается получить доступ к папке – uber, и папка – gettaxi.

Права доступа родительской директории

[/omega/olabooktmp]# getfacl .
# файл: .
# владелец: ola
# группа: ola
user::rwx
user:uber:rwx
group::r-x
mask::rwx
other::r-x
default:user::rwx
default:user:uber:rwx
default:group::r-x
default:mask::rwx
default:other::r-x

Права доступа дочерней директории

[/omega/olabooktemp]# getfacl gettaxi/
# файл: gettaxi/
# владелец: ola
# группа: ola
user::rwx
user:uber:rwx       #эффективный:---
group::r-x          #эффективный:---
mask::---
other::---
default:user::rwx
default:user:uber:rwx
default:group::r-x
default:mask::rwx
default:other::r-x

Я вижу, что для новой директории gettaxi маска прав доступа mask::---, так что думаю, что это вызывает проблему, но я не могу полностью понять, как решить эту проблему.

Любые предложения были бы очень полезны.

Спасибо.

Вы можете изменить маску с помощью следующей команды:

setfacl -m m:rwx filename/directory

Если я правильно понял ваш вопрос, пользователь ola создает файлы в директории: /omega/olabooktmp/gettaxi.

И вы хотите ограничить доступ к этим файлам, предоставив доступ пользователю uber.

Примечание: /omega/olabooktmp/gettaxi принадлежит ola.

Начнем без ACL:

ls -ld /omega/olabooktmp/gettaxi
drwxr-x--- 2 ola ola 4096 мар  21 08:16 /omega/olabooktmp/gettaxi

Для того чтобы предоставить пользователю uber права rwx, используя ACL, вы можете использовать:

setfacl -m u:uber:rwx,d:u:uber:rwX,o:--- /omega/olabooktmp/gettaxi

Это позволит пользователю uber иметь права rwx на папку /omega/olabooktmp/gettaxi и также предоставит rwx как по умолчанию для d: и X. Это предоставляет разрешения на файлы, ранее находившиеся в папке, и дает унаследованные разрешения для файлов. А также удаляет все другие разрешения для other для ограничения, конечно. Владелец все еще имеет свои собственные разрешения.

Результат:

getfacl /omega/olabooktmp/gettaxi
getfacl: Удаление ведущего "https://unix.stackexchange.com/" из абсолютных путей
# файл: omega/olabooktmp/gettaxi
# владелец: ola
# группа: ola
user::rwx
user:uber:rwx
group::r-x
mask::rwx
other::---
default:user::rwx
default:user:uber:rwx
default:group::r-x
default:mask::rwx
default:other::---

Тестирование:

ola создает несколько файлов (выполнено от имени root):

su - ola -c "for i in {1..3}; do date > /omega/olabooktmp/gettaxi/$RANDOM; done"

Результат:

ls -l /omega/olabooktmp/gettaxi/
total 32
-rw-r----- 1 ola users 32 мар  21 08:43 17606
-rw-r----- 1 ola users 32 мар  21 08:43 22286
-rw-r----- 1 ola users 32 мар  21 08:42 31484
-rw-r----- 1 ola users 32 мар  21 08:43 31848
-rw-r----- 1 ola users 32 мар  21 08:42 667
-rw-r----- 1 ola users  4 мар  21 08:16 one
-rw-r----- 1 ola users  6 мар  21 08:16 three
-rw-r----- 1 ola users  4 мар  21 08:16 two

Не может быть доступен обычным пользователем (выполнено от имени root):

su - debian -c "ls -l /omega/olabooktmp/gettaxi"
ls: не удается открыть директорию '/omega/olabooktmp/gettaxi': Permission denied

Но uber может (выполнено от имени root):

su - uber -c "ls -l /omega/olabooktmp/gettaxi"
total 32
-rw-r----- 1 ola users 32 Мар 21 08:43 17606
-rw-r----- 1 ola users 32 Мар 21 08:43 22286
-rw-r----- 1 ola users 32 Мар 21 08:42 31484
-rw-r----- 1 ola users 32 Мар 21 08:43 31848
-rw-r----- 1 ola users 32 Мар 21 08:42 667
-rw-r----- 1 ola users  4 Мар 21 08:16 one
-rw-r----- 1 ola users  6 Мар 21 08:16 three
-rw-r----- 1 ola users  4 Мар 21 08:16 two

Если вы испробовали свои ACL с некоторыми тестами, вы можете удалить все acl с помощью:

setfacl -R -b /omega/olabooktmp/gettaxi

И начать заново.

Да, маска снижает права доступа. Эффективное разрешение – это и, а разрешение и маска. (user:: (владелец пользователя) и other не затрагиваются маской).

Вы можете изменить маску с помощью: например, setfacl -m m:r-x file-name.

Когда вы выполняете ls -l, если режим заканчивается на +, тогда средние биты режима (традиционно биты группы) являются маской.

Иногда биты режима устанавливаются в соответствии с битами группы в umask. Я еще не разобрался в правилах, когда это происходит, и когда используется маска по умолчанию. Использование cp для копирования файла, похоже, использует umask.

Обходной путь

Убедитесь, что у пользователей есть свои собственные группы, и что это установлено в группу по умолчанию. Затем установите umask на 007.

Я предполагаю, что это поведение является ошибкой. Я писал об этом в прошлом месяце (см. unix.stackexchange.com/questions/570795). Что происходит, так это то, что права доступа к исходному файлу копируются в маску acl командой cp. Это то, что я ожидал для cp -p, а не для cp. Я обнаружил, что могу делать копии, используя cat

cat afile > bfile

или пропуская через tar

(cd A; tar -cf -)|(cd B; tar-xf -)

И acl уважаются, как и ожидалось.

Я также выставил вознаграждение за объяснение этого поведения cp. Никто это не объяснил. Я подумываю о том, чтобы подать отчет об ошибке. То есть, что это должно быть поведение ´cp -p´, а не обычное поведение cp. (И система вычла баллы вознаграждения, хотя никто не смог предоставить ответ. Мне это тоже удивительно.)

Ответ или решение

Эффективные права доступа ACL: Как изменить разрешения

Введение

Настройка разрешений в Linux может быть несколько сложной, особенно когда речь идет о списках контроля доступа (ACL). В данной статье рассматривается вопрос об изменении разрешений для пользователя на доступ к папке и файлам с учётом эффективных прав доступа. Мы проанализируем конкретный сценарий, в котором пользователь uber сталкивается с проблемой доступа к папке gettaxi, принадлежащей пользователю ola.

Описание проблемы

Вы запускаете скрипт на bash, который создает каталог gettaxi и помещает в него дампы MySQL. Ваша задача – предоставить пользователю uber доступ к этому каталогу. Однако, несмотря на установленные ACL, uber получает сообщение о запрещенном доступе.

На основании вывода команды getfacl, ключевыми моментами являются:

  • Владелец каталога: ola
  • Пользователь, которому требуется доступ: uber
  • Права каталога gettaxi: разрешения для uber не активны, так как маска (mask) установлена в ---.

Понимание маски ACL

Маска (mask) в ACL представляет собой ограничение прав доступа для членов группы, указанных в ACL. Эффективные права (effective permissions) вычисляются как пересечение прав пользователя и маски. В вашем случае, поскольку маска ---, это означает, что ни один из пользователей, включая uber, не имеет прав на доступ к папке, даже если открыты права для него – rwx — в действительности эти права не реализуются.

Решение

Чтобы устранить проблему с доступом пользователя uber, необходимо изменить маску ACL на более подходящие разрешения.

  1. Перейдите в каталог gettaxi:

    cd /omega/olabooktmp/gettaxi
  2. Измените маску ACL для каталога, используя следующую команду:

    setfacl -m m:rwx /omega/olabooktmp/gettaxi

    Это установит маску на rwx, что предоставит пользователю uber соответствующие права.

  3. Проверьте итоговые разрешения:

    getfacl /omega/olabooktmp/gettaxi

    Ожидается вывод, показывающий:

    # file: gettaxi/
    # owner: ola
    # group: ola
    user::rwx
    user:uber:rwx
    group::r-x
    mask::rwx
    other::---

Проверка доступа

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

su - uber -c "ls -l /omega/olabooktmp/gettaxi"

Результаты должны показать список файлов, созданных пользователем ola.

Заключение

Изменение маски в ACL — это эффективный способ управления доступом к файлам и каталогам в Linux. Убедитесь в том, что вы понимаете, как маска влияет на эффективные права доступа, чтобы избежать таких проблем в будущем. Если возникнут дополнительные вопросы или задачи по настройке ACL, вы всегда можете обратиться за помощью.

Оцените материал
Добавить комментарий

Капча загружается...