Отличается ли переменная среды $ PATH для среды рабочего стола от переменной в оболочке?

Любой пользователь с правами root может изменять файлы журналов. Даже если файл журнала имеет атрибут только для добавления (например, с chattr + ), корень может удалить этот атрибут, изменить файл, а затем добавить атрибут только для добавления обратно в файл.

Если вас беспокоит локальный пользователь с доступом root (например, через sudo ) или взломщик, изменяющий ваши файлы журнала, вы можете настроить syslogd для отправки некоторых или всех ваших записи системного журнала на другой хост. Конечно, если они также имеют или получают доступ к вашему удаленному хосту ведения журналов, они также могут изменять файлы там (вот почему хосты журналов, как правило, имеют высокий уровень безопасности).

Пользователи без полномочий root могут изменять файлы журналов только в том случае, если разрешения на этот файл позволяют им. В правильно настроенной системе они не могут. Для некоторых файлов журналов (например, /var/log/auth.log ) они даже не должны иметь возможность читать их.

1
01.07.2018, 13:33
2 ответа

Is $PATH environment variable of a desktop environment different from that is a shell?

Может быть.

Окружение программы не берется из файла, если только программа не приложит все усилия, чтобы прочитать переменные окружения из файла. Каждый процесс наследует среду своего родителя. Чтение переменных среды из файла является частью работы программы, которую вы запускаете при входе в систему (оболочки при входе в систему в текстовом режиме, диспетчера сеансов или программы, которая действует как таковая при входе в графическую среду ). Обычно, если вы используете среду рабочего стола и открываете оболочку в терминале, эта оболочка будет иметь ту же среду, что и среда рабочего стола.

Однако на практике это может быть не так, потому что в Интернете можно найти множество советов, в которых людям предлагается поместить определения переменных окружения в .bashrc.Это плохая идея , потому что это означает, что эти переменные окружения недоступны для программ, запускаемых непосредственно из GUI, а не из терминала. Но если вы это сделали, вы можете обнаружить, что переменные окружения в вашем терминале отличаются от того, что у вас есть в окружении рабочего стола и в программах, не запускаемых из терминала.

Помещение определений переменных окружения в ~/.profileработает на большинстве систем. Я думаю, что это работает для Gnome на Ubuntu 16.04, если вы не активируете Wayland (, который нарушает многие вещи, включая настройки входа, и не всегда предлагает способ восстановления ).

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

qtcreator is not in the variable $PATH of the shell.

Очень сомневаюсь, что он установлен. Ubuntu поставляет qtcreatorв /usr/bin, где находится большинство программ.

Но учтите, что $PATHне имеет ничего общего с расположением файла .desktop. $PATHпредназначен для прикладных программ, а не для файлов .desktop. Если вы ищете файл .desktopдля qtcreatorи у вас установлен пакет qtcreator, вы можете просто найти файл:

$ locate qtcreator.desktop
/usr/share/applications/qtcreator.desktop

/usr/share/applications— стандартное место для файлов .desktop.

Если вы установили собственную версию QtCreator в дополнение к версии в Ubuntu, вам следует убедиться, что qtcreatorнаходится в пути поиска команд, то есть $PATH. Если вы установили его для всей системы -, он должен быть доступен как /usr/local/bin/qtcreator, который находится в пути поиска команд до /usr/bin, поэтому вы получите свою версию, а не системную. Если вы установили его в своей учетной записи, создайте символическую ссылку из исполняемого файла qtcreatorна ~/bin/qtcreator, т.е.в каталог binв вашем домашнем каталоге (, если этот каталог не существует, создайте его ). По умолчанию Ubuntu .profileдобавляет ~/binк началу $PATH.

2
27.01.2020, 23:32

Оказывается, $XDG_DATA_DIRS— не единственный путь поиска файла *.desktop. Итак, я нашел неправильный файл записи рабочего стола QtCreator.

См. Спецификацию базового каталога XDG

.

There is a single base directory relative to which user-specific data files should be written. This directory is defined by the environment variable $XDG_DATA_HOME.

$XDG_DATA_HOME defines the base directory relative to which user specific data files should be stored. If $XDG_DATA_HOME is either not set or empty, a default equal to $HOME/.local/share should be used.

$XDG_DATA_DIRS defines the preference-ordered set of base directories to search for data files in addition to the $XDG_DATA_HOME base directory. The directories in $XDG_DATA_DIRS should be seperated with a colon ':'.

Я нашел настоящий файл входа рабочего стола QtCreator ~/.local/share/application/DigiaQt-qtcreator-community.desktop.

Строка Exec — Exec=/home/user/Qt/Tools/QtCreator/bin/qtcreator, так что проблема не в $PATH.

Я установил как старую, так и новую версию QtCreator из исходного кода. В каталоге Qt есть InstallationLog.txt. Там задокументировано действие по копированию файла рабочего стола в ~/.local/share.

0
27.01.2020, 23:32

Теги

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