То, почему я не могу запустить приложение, установило использование sudo без sudo?

Я заметил это после установки чего-то использование sudo Я не могу запустить приложение без sudo даже при том, что исполняемый файл находится в моем пути. Я должен войти в каталог приложения и вручную изменить полномочия (использование chmod -R o=g <application>/). Я испытал это в 16,04, 14.04, и возможно даже в 12,04. Почему это - поведение по умолчанию и как я могу изменить это?

Как пример, я просто скомпилировал и установил KeePassX 0.4.4. Используя команды стандартной установки (qmake, make, sudo make install), исполняемый файл /usr/bin/keepassx с ожидаемыми полномочиями, 755, но регистрирует этот исполняемый файл точки, в /usr/share/keepassx/ имейте полномочия 750 предотвращение выполнения без использования sudo.

Когда я устанавливаю использование приложения apt, apt-get, или dpkg -i Я использую sudo но все пользователи могут запустить приложение. Как я подражаю этому поведению при компиляции и устанавливании приложения из источника? Я понимаю, что мог добавить a chmod управляйте к Makefile но есть ли способ внести изменение, после того как это распространит к будущим установкам?

0
задан 23 May 2017 в 15:39

2 ответа

Существует много программ, которые будут подоконник быть в Вашем пути, который не будет работать на обычных пользователей. Пример adduser. Таким образом, это зависело бы от программы, которую Вы хотите запустить.

я не знаю то, что KeePassX 0.4.4 делает программа, но это было бы до разработчиков того, сделать ли программу доступной для обычных пользователей или потребовать, чтобы поднятая команда работала.

До компиляции, которая кажется, что Вы сделали это правильно, необходимо создать и скомпилировать программы как обычный пользователь. Только работайте эти make install, расстаются с поднятой командой. Таким образом, программа становится установкой в масштабе всей системы.

Вы не должны иметь, входят в систему для внесения любых изменений. При изменении файлов, Вы могли бы на самом деле повредить приложение.

Некоторые программы должны быть запущены как корень так, чтобы у них был доступ к определенным файлам, к которым обычные пользователи не могут получить доступ, такие как использование команды для изменения пароля, который также редактирует /etc/passwd и эти /etc/shadow файлы. Программа, такая как те имеет suid набор битов так, чтобы это работало как root, даже когда назвал обычный пользователь.

Вы не хотели бы изменять полномочия Вашего /etc/passwd и /etc/shadow файлы так, чтобы можно было отредактировать их как обычный пользователь, или так, чтобы эти passwd команда работала без suid набор битов.

, Таким образом, это зависело бы, на которых программах, которые Вы устанавливаете и намерение поставщика программы.

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

Вы могли бы найти, что примечания в Readme из программы исправили ошибки, которые будут в этом случае, если make install приведет к сбою и заставит Вас должными быть входить и фиксировать его.

1
ответ дан 28 September 2019 в 14:45

Это вызвано тем, что, когда Вы работаете через sudo, Вы - корень не Ваш обычный пользователь.

Попытки записать файлы конфигурации или установить пользовательские версии библиотек перейдут к корню / вместо/home/your_user.

, когда Вы будете работать без sudo, Ваши программы не найдут те файлы.

Вы могли протестировать это путем запущения программы через strace для наблюдения, какие файлы это пытается загрузить

strace -e open yourprogram
0
ответ дан 28 September 2019 в 14:45

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

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