Из скрипта оболочки 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. (И система вычла баллы вознаграждения, хотя никто не мог дать ответа. Я был удивлен и этим.)