LINUX.ORG.RU

Права и файлы

 


0

3

1. Есть процессы processA и processB, которые работают под пользователями userA и userB соотвественно. Есть директория dirA куда процесс processA пишет, дописывает, создаёт новые файлы.

2. Процессу processB нужно читать файлы из dirA. Необязательно в реалтайме, можно с задержкой в пару десятков минут.

3. Мой вариант (копировать по крону от рута содержимое dirA в dirB, chown) видится мне адским костылём. Напрасный расход места и нагрузка на диск. (файлов сотни общим весом в десятки метров, в перспективе - тысячи и общим весом сотню-другую метров)

Ну дай права на чтения для юзера B и все - можешь, например, их (A и B) собрать в группу и chmod g+r filename. Или у тебя вопрос по выбору софта?

alozovskoy ★★★★★
()
Последнее исправление: alozovskoy (всего исправлений: 1)

man acl man setfacl

из пакета acl

anonymous
()
Ответ на: комментарий от alozovskoy

я просто ещё очень плохо понимаю в правах (нуээ, и не только в правах).

правильно я понимаю, что у файла может быть несколько записей (?, где и в каком виде это хранится, желательно ссылку на почитать) о том какие пользователи имеют доступ к файлу\директории и с какими правами?

т.е. выглядеть это должно примерно так

groupadd groupAB
usermod -a -G groupAB userA
usermod -a -G groupAB userB
chmod g+r -R dirA

Не получится ли так, что userA сможет получить доступ к свежесозданным файлам userB? Говорю же, плохо понимаю

onlybugs ★★
() автор топика
Ответ на: комментарий от onlybugs

Почитать - в google. Даже в википедии есть достаточно инфы по chmod чтоб понять что к чему, да там и не сложно.

Не получится ли так, что userA сможет получить доступ к свежесозданным файлам userB?

«По умолчанию» если эта группа будет основной для A и B то получится (но опять же это рулится через umask, но по дефолту так), но это делать не обязательно - у тебя есть юзер A с группой userA и юзер B с userB. Ты создаешь еще одну группу (без пользователей, просто группу) userAB, добавляешь туда A и B и новый файл создаешь с владельцем A и группой userAB (chown A:userAB filename). Тогда получится что и пользователь A, и пользователь B этот файл прочитают, но вот остальные файлы друг друга они не увидят (на самом дела это не так - файлы по дефолту создаются с 644, то есть читать все могут, но вообще логика именно такая). А, да, нужно чтоб у пользователя B был доступ и ко всем вышестоящим от этого файла каталогам. В общем, в стандартной ситуации то что ты хочешь и так будет работать (если искусственно права не ограничивать)

alozovskoy ★★★★★
()
Последнее исправление: alozovskoy (всего исправлений: 1)
Ответ на: комментарий от onlybugs

ага, вижу в соседней теме https://www.opennet.ru/base/sys/file_access.txt.html

Мне непонятен момент с группами. Вон мои юзеры userA и userB входят в какие-то свои группы, может даже несколько, и теперь ещё в группу groupAB. Какой-нибудь файл в dirA имеет права 644, т.е. у группы права на чтение. У какой такой группы? У всех групп, в которые входит владелец, или какой-то определённой?

onlybugs ★★
() автор топика
Ответ на: комментарий от onlybugs

У той группы, которая является владельцем файла. По умолчанию - основная группа юзера.

$ touch test
$ ls -l test
-rw-r--r-- 1 alozovskoy alozovskoy 0 дек 11 03:45 test

Группу можно менять (у меня один юзер, так что группу беру системную для примера):

$ chown :audio test
$ ls -l test
-rw-r--r-- 1 alozovskoy audio 0 дек 11 03:45 test
alozovskoy ★★★★★
()
Ответ на: комментарий от alozovskoy

Т.е. получается в метаданных файла кроме прав доступа и uid владельца еще дополнительно хранится gid.

Теперь, что значит «основная группа юзера»? Юзеры часто в несколько групп входят, какая из них основная?

Малость оффтопа. Почему везде про права (да, в принципе, не только про них) написано как под копирку? Каждый считает своим долгом научить считать 4+2+1, но ведь без нормального понимания как именно и что пишется\читается\сравнивается невозможно понять как это работает. Я - пример. Есть ли нормальные статьи?

onlybugs ★★
() автор топика
Ответ на: комментарий от onlybugs

Теперь, что значит «основная группа юзера»? Юзеры часто в несколько групп входят, какая из них основная?

$ id
uid=1000(alozovskoy) gid=1000(alozovskoy) группы=1000(alozovskoy),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),107(netdev),112(bluetooth)

Есть ли нормальные статьи?

Не могу ничего подсказать. Наверно это должно быть в каком-нибудь учебнике по Unix\Linux, не в мане по, скажем, chmod.

alozovskoy ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.