В чем разница между запуском команды в качестве пользователя и выполнением sudo -u

Меня интересует разница между запуском $userA: command line и $userB: sudo -u userA command line в терминале linux.

Есть ли какие-то конкретные вещи, которые вызывают создание файла. Как и создание файла deb, он не должен использовать разрешения sudo при запуске dpkg-buildpackage.

1
задан 13 April 2019 в 11:09

1 ответ

Необходимо помнить, что при запуске команды в игру вступают две вещи:

  1. Каковы разрешения пользователя в этом случае.
  2. В какой среде выполняется команда.

Когда вы входите в систему как определенный пользователь, вы меняете их обоих, но когда вы используете sudo -u, вы просто меняете первый аспект.

Рассмотрим это, предполагая чистую установку:

(работает как пользователь A):

vim /home/userA/test

(и теперь как пользователь B):

sudo -u userA vim /home/userA/test

Обе команды будет работать отлично, и вы можете не заметить ошибку намного позже. Потому что в обоих случаях vim необходимо было создать каталог для своих файлов конфигурации. Он работал с разрешениями userA , так что он будет владельцем каталога, но в первом случае каталог будет создан в правильном месте: /home/userA/.vim, но в последнем случае будет проблема, среда все еще указывала на домашний каталог userB, поэтому /home/userB/.vim был создан с неправильными разрешениями.

Если вы попытаетесь запустить некоторые другие приложения, такие как файловые менеджеры (которые создают миниатюры, журналы и т. Д.), У вас будет много файлов повсюду с неправильным владельцем и разрешениями.


Вы можете заметить, что pwd отображает ваш домашний каталог и попробуйте следующее на вашем компьютере:

как пользователь A:

pwd
sudo -u userB pwd

оба должны дать вам /home/userA/ , хотя второй работает под именем userB

, войдите в систему как userB и затем:

pwd

Теперь вы увидите /home/userB/

0
ответ дан 13 April 2019 в 11:09

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

Похожие вопросы: