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

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

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

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

Разрешения родительского каталога

[/omega/olabooktmp]# getfacl .
# file: .
# owner: ola
# group: 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/
# file: gettaxi/
# owner: ola
# group: ola
user::rwx
user:uber:rwx       #effective:---
group::r-x          #effective:---
mask::---
other::---
default:user::rwx
default:user:uber:rwx
default:group::r-x
default:mask::rwx
default:other::r-x

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

Любые предложения будут высоко оценены.

Спасибо.

решение1

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

setfacl -m m:rwx filename/directory

решение2

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

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

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

Давайте начнем пока без ACL:

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

Чтобы предоставить rwxразрешение на uberиспользование ACL, вы можете использовать:

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

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

Результат:

getfacl /omega/olabooktmp/gettaxi
getfacl: Removing leading '/' from absolute path names
# file: omega/olabooktmp/gettaxi
# owner: ola
# group: 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 mars  21 08:43 17606
-rw-r----- 1 ola users 32 mars  21 08:43 22286
-rw-r----- 1 ola users 32 mars  21 08:42 31484
-rw-r----- 1 ola users 32 mars  21 08:43 31848
-rw-r----- 1 ola users 32 mars  21 08:42 667
-rw-r----- 1 ola users  4 mars  21 08:16 one
-rw-r----- 1 ola users  6 mars  21 08:16 three
-rw-r----- 1 ola users  4 mars  21 08:16 two

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

su - debian -c "ls -l /omega/olabooktmp/gettaxi"
ls: cannot open directory '/omega/olabooktmp/gettaxi': Permission denied

Но uber может (запустить как root):

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

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

setfacl -R -b /omega/olabooktmp/gettaxi

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

решение3

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

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

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

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

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

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

решение4

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

cat afile > bfile

или прокладывая трубу через смолу

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

И списки контроля доступа соблюдаются, как и ожидалось.

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

Связанный контент