Рейтинг:0

Может ли пользователь без полномочий root изменять переменные среды?

флаг pk

Может ли пользователь без полномочий root (без разрешений sudo) выполнить следующую команду:

экспорт PATH=/tml:$PATH

Если да, то как это работает?

я думал переменные среды доступны только для чтения для пользователей без полномочий root, а переменные оболочки можно свободно модифицировать.

muru avatar
флаг us
«Я думал, что переменные среды доступны только для чтения». Почему вы так подумали?
Trigosin Darom avatar
флаг pk
@muru для пользователей без полномочий root
muru avatar
флаг us
Вопрос остается. Что вы прочитали или увидели, что заставляет вас так думать?
Trigosin Darom avatar
флаг pk
Насколько я понимаю, переменные среды (в отличие от переменных оболочки) являются глобальными. Это означает, что они применимы к каждому процессу. Это очень опасно, если любой пользователь может изменить там значения.
muru avatar
флаг us
Каждый процесс имеет *копию* переменных среды, унаследованных от своего родителя, и может изменять свой собственный набор переменных среды, а также набор переменных среды, передаваемых дочерним процессам при создании.
Trigosin Darom avatar
флаг pk
Причина, по которой я спрашиваю, заключается в том, что я пытался решить задачу ctf, где был слабый пользователь с разрешением sudo для запуска «date --date 'вчера'» от имени пользователя root. Решение состояло в том, чтобы создать исполняемый файл с именем «дата» и изменить переменную env PATH, чтобы она достигла модифицированного исполняемого файла «дата». Я все еще не уверен, как это работает, потому что переменная PATH root не должна быть затронута.
muru avatar
флаг us
Это все еще не должно было работать, как было заявлено. Для sudo, если разрешение дано для конкретной команды, необходимо указать полный путь к этой команде. Если это сработало для вас, конфигурация sudo была очень небезопасной.
Рейтинг:1
флаг jp

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

$ grep ПУТЬ ~/.profile 
# установить PATH, чтобы он включал личную корзину пользователя, если она существует
    ПУТЬ=~/bin:"${ПУТЬ}"
PATH="$PATH:/usr/игры"

$ ls -l ~/.профиль
-rw-r--r-- 1 sudodus sudodus 632 10 декабря 2010 г. /home/sudodus/.profile

Другими словами, вы можете не только временно изменить эти переменные, но и сделать их постоянными, изменив файл конфигурации. ~/.профиль. Вы, как обычный пользователь, можете это сделать.


Следующая командная строка показывает системные файлы, в которых установлен или изменен PATH.

sudo grep -r 'ПУТЬ=' /etc/*

Возможно, вы захотите получить более подробную информацию. См., например, следующую ссылку,

Unix и Linux: полное представление о том, где установлена ​​переменная PATH в bash - особенно ответ Жиля.

Trigosin Darom avatar
флаг pk
Значит, любой пользователь может ГЛОБАЛЬНО изменять переменные окружения? И это также будет применяться к root? Кажется, я что-то здесь упускаю.
sudodus avatar
флаг jp
Вы можете изменить ***ваши*** переменные среды, но не для других пользователей, если у вас нет прав суперпользователя (можете использовать `sudo`).

Ответить или комментировать

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