public inbox for gentoo-user-ru@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-user-ru] root->user
@ 2008-04-22 20:15 Alex Efros
  2008-04-22 21:06 ` Andrey Vasyutchenko
  2008-04-22 21:15 ` Mad Deer
  0 siblings, 2 replies; 5+ messages in thread
From: Alex Efros @ 2008-04-22 20:15 UTC (permalink / raw
  To: gentoo-user-ru

Hi!

Иногда root должен выполнить какой-нить скриптик под аккаунтом юзера.
Если выполняемая команда элементарна (например, id или date :)) - нет
проблем, есть куча простейших способов это сделать. Но если команда
требует привычную полноценную среду в виде домашнего каталога и переменных
окружения... то всё становится значительно сложнее.

На данный момент самый корректный вариант у меня выглядит так:
    
    su - USER -c 'exec bash -l -c "COMMAND"'

Недостатков здесь три:
1) длинная, уродливая, не очевидная команда
2) сложность с использованием кавычек внутри COMMAND т.к. команда уже
   внутри обоих типов кавычек и приходится выстраивать лес слешей
3) хотя обычно этой команды хватает, она тоже не совсем корректно работает:
   - нет кучи переменных (COLUMNS,HISTSIZE,MAIL,etc.)
   - отличается SHELLOPTS
   - не подгружается BASH_COMPLETION

Альтернативные варианты, например:

    su - USER -c 'COMMAND'
    sudo -u USER bash -c 'COMMAND'
    setuidgid USER bash -c 'COMMAND'
    chpst -u USER bash -c 'COMMAND'

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

    HOME=~USER USER=USER LOGNAME=USER setuidgid USER bash -l -c "COMMAND"

но это не лучше первого варианта, и к тому же при этом варианте
наследуется часть root-овых переменных окружения (LS_COLORS,MAIL,SSH_*,...).

Есть мысли как эту задачу решить проще (ну, кроме оформления первой
команды отдельным скриптиком run_as) и правильнее?

-- 
			WBR, Alex.



^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2008-04-22 21:31 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-04-22 20:15 [gentoo-user-ru] root->user Alex Efros
2008-04-22 21:06 ` Andrey Vasyutchenko
2008-04-22 21:23   ` Alex Efros
2008-04-22 21:15 ` Mad Deer
2008-04-22 21:31   ` Alex Efros

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox