Странное поведение sudo
может, у тебя старый скрипт каким-то боком подхватился (это от телепат-модуля сообщение)
tot-double ~ $ which firefox
/usr/local/bin/firefox
Я старый скрипт вообще удалил. Чтобы его сюда вставить я на другой комп по ssh зашёл, где ещё старый остался.
Чудеса, чесслово...
а там что-то было про то, что баш полные пути кэширует. не оно, не?
Намекаешь на то, что надо перелогиниться?
% set -x
в консоле и скрипте не помогает в диагностике?
хотя бы баш перезапустить
tot-double ~ $ set -x
++ echo -ne '\033]0;tot-double:~\007'
tot-double ~ $ firefox
+ sudo /usr/local/bin/firefox
Password:
++ echo -ne '\033]0;tot-double:~\007'
tot-double ~ $ /usr/local/bin/firefox
+ /usr/local/bin/firefox
firefox wrapper script
++ echo -ne '\033]0;tot-double:~\007'
tot-double ~ $ Xlib: extension "RANDR" missing on display ":0.0".
GLib-GIO-Message: Using the 'memory' GSettings backend. Your settings will not be saved or shared with other applications.
И только тогда появляется firefox.
$ firefoxo_O
+ sudo /usr/local/bin/firefox
o_O
Вот-вот.
% alias | grep firefox
hash -r
у меня по крайней мере шелл скрипт, который в том числе проверяет, запущен ли он через судо.
alias | grep firefoxОпаньки... вот где собака зарыта-то.
Точно, я ж для того, чтобы старый скрипт лишний раз сам себя не запускал, плодя процессы без толку, и добавил алиас в .bashrc!
Вот, блин, как бывает-то...
Огромное спасибо!
Кстати, а в чём может быть смысл проверки на запущенность через sudo?
а что, кстати, за унылый which, который не сказал, что там alias? что за шелл?
tot-double ~ $ which which
/usr/bin/which
tot-double ~ $ equery belongs /usr/bin/which
* Searching for /usr/bin/which ...
sys-apps/which-2.20 (/usr/bin/which)
не-не-не, в нормальном шелле which должен быть встроенной командой. Или я туплю и в баше просто нету такого?
Как узнать-то чё встроено, а чё запускается из бинаря?
я узнаю.... командой which
[moat ~]$ which which
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
/usr/bin/which
ааа, это сносит мне крышу, что это за дистриб?
это так странно. Как он может прочитать алиасы? хотя я не хочу знать...
fc17
Как он может прочитать алиасы?Да ничего странного тут, читает алиасы из stdin
а, тфу, туплю Да, прикольно
в баше не показывает, да, зато command -v везде работает.
там какие-то проверки на правильность $HOME и комменты про опцию -H.
Оставить комментарий
dangerr
Создём значит пользователя browser, добавляем в /etc/sudoers:tot-to ALL=(browser) NOPASSWD: ALL
(tot-to - логин моего основного пользователя)
Зачем создём скрипт /usr/local/bin/firefox:
Если теперь написать в консоли /usr/local/bin/firefox, то выводится строка 'firefox wrapper script' запускается firefox из-под пользователя browser - то есть всё как я и хочу.
Но у меня (и в gentoo по умолчанию) /usr/local/bin - это первая запись в переменной PATH. Поэтому логично предположить, что набрав просто firefox, я получу тот же результат. Но вместо этого получаю запрос пароля. Причём даже не выводится строка 'firefox wrapper script', что я вообще никак объяснить не могу. То есть вроде как даже до вызова sudo дело не дошло, а меня уже просят ввести пароль.
Надо сказать, что я подобным способом запуска браузера пользуюсь давно и до этого применял вот такой wrapper:
а в sudoers было так:
tot-to ALL=(root) NOPASSWD: /usr/local/bin/firefox
В таком варианте всё работает как надо. Но мне он не нравится. Во-перых, ни-к-чему задействовать рута, во-вторых изврат с рекурсивным вызовом скрипта самим собой. Да и лишние процессы висят.
Да и вообще охота понять что происходит-то.