Рейтинг:0

предоставить доступ к файлу владельца программы, а также доступ к файлу пользователя

флаг us

У меня есть исполняемый файл (созданный из кода Python), который мне нужен для доступа к файлу, созданному мной, а также к файлу, созданному человеком, который запускает исполняемый файл. Я не разрешено изменять разрешения файлов.

Вот пример:
user1 является владельцем исполняемого файла и user1_file
user2 является владельцем user2_file ожидается, что пользователь2 запустит исполняемый файл

>>> лс -ал
drwxr-xr-x 12 user1 group1 4096 2 января 13:48 исполняемый файл
-rw------- 1 user1 group1 272 14 фев 14:32 user1_file
-rw------- 1 user2 group2 272 14 фев 14:32 user2_file

Вот что я пробовал

  1. напрямую запускать как user2:
    это не удается, потому что у него нет прав на чтение файла user1_file
  2. установите suid для исполняемого файла, а затем запустите как user2:
    он успешно прочитал user1_file, но не может прочитать user2_file
  3. обновление кода Python для выполнения os.system('исполняемый файл chmod u-s') перед доступом к user2_file:
    эта операция не разрешена.Даже если это разрешено, я буду обеспокоен тем, как повторно добавить suid, пока программа теперь работает с разрешениями user2.

Может ли быть какой-то способ разрешить права доступа пользователя 1 и пользователя 2 для исполняемого файла? или, может быть, способ временно остановить права пользователя 1?

pLumo avatar
флаг in
Вам нужно исправить это: "*Мне **не разрешено изменять права доступа** к файлам.*".Вы не можете «дать программе» доступ к файлам, вы предоставляете доступ пользователям.
raj avatar
флаг cn
raj
Кто сказал, что вам "не разрешено изменять права доступа к файлам"? Это вы сами или кто-то другой? В любом случае, этот человек понятия не имеет, как работают разрешения, и его мышление идет совершенно противоположным образом. Если оба файла принадлежат разным пользователям и у них установлены права доступа только для владельца (как в вашем случае), невозможно, чтобы любой пользователь (кроме root) мог получить доступ к обоим файлам. Период. Вам **нужно** изменить права доступа к файлам, в противном случае вам нужно запустить приложение от имени пользователя root.
флаг us
Я пользователь1. поэтому технически я могу изменить права доступа только для файла user1_file. Однако user1_file содержит информацию, которой я не хочу ни с кем делиться
Рейтинг:0
флаг us

Шаги, которые решили мою проблему

  1. добавьте следующую строку в код Python os.seteuid(os.getuid()) перед чтением user2_file
  2. регенерировать исполняемый файл
  3. установить suid для исполняемого файла исполняемый файл chmod u+s

Подробнее
Основная идея состоит в том, чтобы изменить эффективный uid процесса на реальный uid.

Узнайте об эффективном, реальном и сохраненном uid/gid процесса Linux: это соединять помог мне
измените эффективный uid/guid по мере необходимости. Этот вопрос может быть полезно

raj avatar
флаг cn
raj
Зачем делать это таким сложным, если правильный способ - просто правильно установить права доступа к файлу?
флаг us
Ответил в комментарии к самому вопросу

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.