Меня интересует разница между запуском $userA: command line
и $userB: sudo -u userA command line
в терминале linux.
Есть ли какие-то конкретные вещи, которые вызывают создание файла. Как и создание файла deb, он не должен использовать разрешения sudo при запуске dpkg-buildpackage.
Необходимо помнить, что при запуске команды в игру вступают две вещи:
Когда вы входите в систему как определенный пользователь, вы меняете их обоих, но когда вы используете 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/