LINUX.ORG.RU

Права на файл не трогая стандартные chmod

 


0

1

Добрый день. Подскажите пожалуйста как выдать права на чтение на файл пользователю если у него нельзя менять владельца, группу, other и нельзя менять права на эти параметры. Пример: файлы в папке /tmp/test1, владелец user1 группа group1, права 760. Нельзя менять владельца и группу, нельзя менять 760. Нужно дать права на чтение файлов в этом каталоге пользователю user2, но нельзя записывать user2 в group1, чтобы он не получил больше прав чем следует из-за прав группы group1 на другие каталоги. Пробовал setfacl -R -dm..., setfacl -dm..., setfacl -m. все равно пользователь не может читать файлы в каталоге.


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

Так нельзя, т.к. вы предлагаете выдать user2 права на все, что может сделать uid 0. user1 и group1 имеют доступ в очень многие каталоги и права на запуски, а user2 не должен иметь туда доступ. Он должен иметь доступ только в один каталог и то только на чтение файлов в нем. Я не знаю как это можно придумать если нельзя менять chown и chmod и выдавать права на other тоже нельзя. Это равносильно раскрытию информации.

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

Тогда только добавить user1 и user2 в group3, пустить эту группу в этот каталог. И user1 (или кто-то за него) теперь выставляет group3 всем своим файлам в этом каталоге, раз у него права на запись.

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

Это равносильно, что придется менять chown - а этого делать нельзя так-как там работает ПО которое само изменит права как ему надо для работы и выставит обратно user1 group1 760. тогда user2 опять станет бесправным.

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

Да и системы нельзя останавливать - это главный критерий вопроса. все должно быть не заметно и гладко для работы ПО и user1 group1.

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

а скопировать нужные файлы в файлы с правами на чтение для user2 нельзя?

nerve ★★
()

Яннп, ты спрашиваешь как выдать права не выдавая права?

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

В условии этого не было, там только про права. Модифицируйте ПО в таком случае, пусть пишет файлы в этот каталог с group3. Если ПО без исходников, можно написать прослойку перехватывающую вызовы.

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

Uid 0 всё ещё самое очевидное в таких условиях. Немного лишних возможностей у пользователя появится, но не трогая файлы иначе ничего не сделать. Acl тоже ПО должно подерживать, у меня были ситуации когда права не нравились и ПО пересоздавало себе каталог удаляя все файлы, это надо запрещать отдельно. Потом права выдать logrotate и компании. Но опять же это всё не без перезапуска сервиса в общем случае.

anonymous
()
Ответ на: комментарий от anonymous
 
# getfacl /tmp/test1/dir/1.txt
getfacl: Removing leading '/' from absolute path names
# file: tmp/test1/dir/1.txt
# owner: root
# group: root
user::rwx
user:user2:rwx
group::---
mask::rwx
other::---


# getfacl /tmp/test1/dir/
getfacl: Removing leading '/' from absolute path names
# file: tmp/test1/dir/
# owner: root
# group: root
user::rwx
user:user2:r--
group::---
mask::r--
other::---
default:user::rwx
default:user:user2:--x
default:group::---
default:mask::--x
default:other::---

/tmp/test1/dir
# ll
total 4
-rwxrwx---+ 1 root root 12 Jun 14 13:39 1.txt

# ll /tmp/test1
total 4
drwxr-----+ 2 root root 4096 Jun 14 13:39 dir

ll /tmp

drwxr-xr-x  3 root       root            4096 Jun 14 13:38 test1

Почему user2 не может прочитать 1.txt? я же все правильно сделал по ACL.

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

Для USER2 у директории в которой лежит файл должны быть права как минимум R-X, т.к. право X у директорий - это список файлов в ней.

Т.е. без права X у директории пользователь не сможет увидеть есть ли файл в директории или нет.

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

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

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

ок сделал как вы сказали

#root
setfacl -R -dm u:user2:r-x /tmp/test1
setfacl -dm u:user2:r-x /tmp/test1/dir
setfacl -m u:user2:rw- /tmp/test1/dir/1.txt

getfacl /tmp/test1/dir/1.txt
getfacl: Removing leading '/' from absolute path names
# file: tmp/test1/dir/1.txt
# owner: root
# group: root
user::rwx
user:user2:rw-
group::---
mask::rw-
other::---

getfacl /tmp/test1/dir
getfacl: Removing leading '/' from absolute path names
# file: tmp/test1/dir
# owner: root
# group: root
user::rwx
user:user2:r--
group::---
mask::r--
other::---
default:user::rwx
default:user:user2:r-x
default:group::---
default:mask::r-x
default:other::---


#user2
cat /tmp/test1/dir/1.txt
cat: /tmp/test1/dir/1.txt: Permission denied

cd /tmp/test1/dir/
-bash: cd: /tmp/test1/dir/: Permission denied

$ ll /tmp/test1/dir/
ls: cannot access '/tmp/test1/dir/1.txt': Permission denied
total 0
-????????? ? ? ? ?            ? 1.txt

Есть идеи почему нет доступа?

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

Чтобы пользователь мог получить список файлов каталога, у него должны быть права на x бит каталога

Хватит нести чушь.

Права на каталог:

r == просмотр списка файлов, x == возможности обратиться к элементу каталога.

То есть user2 должен как минимум на файл иметь r, на каталог x

Школьники блин, недоучившиеся.

Nastishka ★★★★★
()
Последнее исправление: Nastishka (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.