LINUX.ORG.RU

Не применяются переменные при входе через su

 , ,


0

1

В данный момент меня интересует переменная $EDITOR прописанная в /etc/environment, необходимая (хз с каких пор) для работы mc. Нормальное применение для обычного юзера и для root в консоли, но при входе как root через su -. Единственное что нагуглил - опция -m, которая не совместима с опцией -, без которой вероятно также полезут проблемы.

Как вернуть нормальное поведение su с применением переменных и без дополнительных портянок при логине?

★★★★★

/etc/environment обрабатывается PAM. Либо править настройки pam для su, либо прописывать переменную в /etc/profile или ещё какой файл, откуда она читается login-shell'ом.

mky ★★★★★
()

Используй sudo -i.

vbr ★★★★★
()

с применением переменных

Так запиши эту переменную в настройки шелла у рута.

Ygor ★★★★★
()
Ответ на: комментарий от kirill_rrr

А что в файле /etc/pam.d/su-l (для login используется он)?

Уточню, не буквальное содержимое, а иклудится туда что-нибудь, содержащие pam_env?

mky ★★★★★
()
Последнее исправление: mky (всего исправлений: 1)

For backward compatibility, su defaults to not change the current directory and to only set the environment variables HOME and SHELL (plus USER and LOGNAME if the target user is not root). It is recommended to always use the –login option (instead of its shortcut -) to avoid side effects caused by mixing environments.

(1).

yars068 ★★★★★
()
Последнее исправление: yars068 (всего исправлений: 1)
Ответ на: комментарий от yars068

Ну, дак не стали с укзанием, что кому надо, сами отредактируют /etc/pam.d/su-l.

Видимо, в арче так и задумано, это не бага, а фича. Если кто-то хочет внести измения в конфиг, то не будем его личные изменения распространять на весь дистр. У su специально разные файлы в /etc/pam.d для просто ″su″ и ″su -″.

Какой дистр у ТС я не знаю, да и это не особо поможет, так как лень выискивать дефолтный конфиг /etc/pam.d для его дистрибутива. Насколько я знаю, нет сайта, где бы можно было просто посмотреть что в каком файле в произвольном дистрибутиве...

mky ★★★★★
()
Ответ на: комментарий от kirill_rrr

У меня работает. Видимо ты что-то делаешь не так.

% podman run --pull=always -it --rm archlinux
[root@04f1391eeb51 /]# echo 'myvar=myvalue' >> /etc/environment
[root@04f1391eeb51 /]# su
[root@04f1391eeb51 /]# echo $myvar

[root@04f1391eeb51 /]# exit
exit
[root@04f1391eeb51 /]# echo 'session required pam_env.so' >> /etc/pam.d/su
[root@04f1391eeb51 /]# su
[root@04f1391eeb51 /]# echo $myvar
myvalue
vbr ★★★★★
()
Последнее исправление: vbr (всего исправлений: 1)

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

Проверь, не твой ли это случай.

bigbit ★★★★★
()
Ответ на: комментарий от yars068

Для su - (и остальных синонимов этого флага) надо редактировать файл /etc/pam.d/su-l. В остальном всё так же.

vbr ★★★★★
()
Ответ на: комментарий от yars068

sudo -i как раз таки из коробки работает правильно, т.к. для него pam_env используется, в отличие от su.

vbr ★★★★★
()
Ответ на: комментарий от yars068

По умолчанию в арче /etc/pam.d/su и /etc/pam.d/su-l имеют идентичное содержание. Подозреваю, что отличие лишь в том, что su вызовет bash с argv[0] = "bash", а su - вызовет bash с argv[0] = "-bash" (и в потенциальных последующих различиях при обработке стартовых файлов башем), но в плане pam и чтения /etc/environment различий не должно быть.

vbr ★★★★★
()
Последнее исправление: vbr (всего исправлений: 3)

переменная $EDITOR прописанная в /etc/environment, необходимая (хз с каких пор) для работы mc

Debian, небось? Можно сделать файл /etc/mc/mc.ini

[Midnight-Commander]
use_internal_edit=true

и удалить ~/.config/mc

Редактор по умолчанию в Debian можно выбирать командой update-alternatives --config editor

No ★★
()
Ответ на: комментарий от No

Не, как раз Арч, а в дебиане таких вопросов не возникало. Ну, с тех пор когда su перестал работать как su -

kirill_rrr ★★★★★
() автор топика
Ответ на: комментарий от firkax

Там формат меняли, сейчас яндекс утверждает что внешний рдактор берётся из переменной окружения а не .selected_editor как раньше.

kirill_rrr ★★★★★
() автор топика
Ответ на: комментарий от kirill_rrr

Внешний редактор тут ни при чём. Надо включить «use internal edit» и никакие $EDITOR больше не будут учитываться.

firkax ★★★★★
()
Ответ на: комментарий от firkax

internal edit не особо то удобен в использовании. Может и пофункциональнее, но не хочу тратить лишнее время.

kirill_rrr ★★★★★
() автор топика
Последнее исправление: kirill_rrr (всего исправлений: 1)

в sudoers.d нужно создать файл с Defaults env_keep += "EDITOR VISUAL". ага нужен sudo

rtxtxtrx ★★★
()
Последнее исправление: rtxtxtrx (всего исправлений: 1)
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.