Для запуска приложений с графическим интерфейсом от другого пользователя требуется разрешение на запись для /run/user/1000.

Я не хотел предоставлять доступ к некоторым конфиденциальным каталогам при запуске проприетарных программ из Snap. Это то, что я сделал до сих пор:

  1. Создал нового пользователя и ограничил доступ на чтение/запись к основному/homeкаталог и некоторые другие каталоги
  2. Добавлен X-доступ к другому пользователю для приложений с графическим интерфейсом черезxhost +si:localuser:[user 2]
  3. suдругому пользователю и выполните команду

К сожалению, для некоторых программ требуется доступ для записи./run/user/1000, который принадлежит основному пользователю. Например, бегskypeиз оснастки.
В чем здесь проблема? Почему новый пользователь просто не создает новыйrun/userкаталог? Я не слишком знаком с этими концепциями, поэтому буду очень признателен за подробное объяснение/исправление.

1 ответ

Кажетсяsu [user 2]сохраняет переменные среды текущей оболочки при переключении на другого пользователя. Чтобы решить эту проблему, мне пришлось использоватьsu - [user 2].
Чтобы убедиться, что новая оболочка работает нормально, после шага 2 исходного сообщения необходимо выполнить некоторые дополнительные действия.

  1. Установите соответствующиеDISPLAYпеременная окружающей среды. бегатьecho $DISPLAYв оболочке [пользователя 1]. Установите такое же отображение для [пользователя 2]. Например, запустивexport DISPLAY=:0.0для оболочки [пользователя 2].

  2. [необязательно] Если вы видите подобные ошибки в таких программах, как Skype:cannot create directory '/run/user/1001': Permission denied, а затем просто создайте этот каталог с соответствующими разрешениями и владельцем. Например, для созданияrun/user/1001запустите эти команды (при условии, что они не существуют):

      #make sure you're not overriding existing directory properties!
mkdir /run/user/1001
chown -R [user 2]:[user 2]
chmod g-rwx 1001
chmod o-rwx 1001

Спасибо комментаторам оригинального поста за помощь с этим ответом.

Другие вопросы по тегам