Я заметил это после установки чего-то использование 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
но есть ли способ внести изменение, после того как это распространит к будущим установкам?
Существует много программ, которые будут подоконник быть в Вашем пути, который не будет работать на обычных пользователей. Пример 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
приведет к сбою и заставит Вас должными быть входить и фиксировать его.
Это вызвано тем, что, когда Вы работаете через sudo, Вы - корень не Ваш обычный пользователь.
Попытки записать файлы конфигурации или установить пользовательские версии библиотек перейдут к корню / вместо/home/your_user.
, когда Вы будете работать без sudo, Ваши программы не найдут те файлы.
Вы могли протестировать это путем запущения программы через strace для наблюдения, какие файлы это пытается загрузить
strace -e open yourprogram