Как запустить rc.local от имени обычного пользователя?

8

У меня есть некоторые пожелания, чтобы я хотел, чтобы меня вызывали сразу после входа в систему, включая 'startx', и я подумал, rc.localчто это хорошее место для них, но проблема в том, что rc.localон запускается от имени пользователя root, и я не хочу этого, очевидно, я могу сделать что-то вроде этого:

su username -c somecommend-here

Но я ищу способ запустить весь rc.local как обычный пользователь, или, может быть, есть лучшее место для размещения моего кода?

PS. Я использую Ubuntu-мини-ремикс 1104i386

Спасибо

omeid
источник
AFAIK rc.local выполняется параллельно с логином в конце последовательности загрузки. Я имею в виду, это будет выполнено, даже если вы не войдете в систему, но вы можете войти в систему, и это может быть ожидание выполнения.
Хавьер Ривера
@JavierRivera Так, каково было бы решение?
omeid

Ответы:

6

Самый простой способ запустить команду при входе пользователя в систему - создать .desktopфайл для команды и вставить его в ~/.config/autostartпапку. Как выглядит файл рабочего стола? Вот пример, который получает домашнюю страницу Ask Ubuntu при wgetкаждом входе пользователя в систему:

[Desktop Entry] 
Name=Launch wget
Comment=Fetches the Ask Ubuntu home page.
Exec=wget http://askubuntu.com/
Натан Осман
источник
Не кажется хорошей идеей для запуска startx(как ОП спросил) после графического входа в систему.
энзотиб
@enzotib: Там нет упоминания о графическом логине.
Натан Осман
Может быть, я неправильно понял вопрос, я полагал, что пользователь будет начинать startxс rc.local. Извините
энзотиб
1

Я не знаю различий между /etc/rc.local и crontab, но обычно я создаю учетную запись службы и добавляю соответствующую работу. Например: sudo crontab -u p4padmin -e

@reboot ~/bin/p4p -d -r ~/var/p4p/cache/foo -p 2020 -t depot:2020 -L ~/var/p4p/log/foo.log

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

Стивен Недзельски
источник
0

Путь linux состоит в добавлении ваших команд ~/.bashrcвместо /etc/rc.local.

Каждый пользователь имеет .bashrcв своем домашнем каталоге. Этот файл сценария запускается автоматически сразу после входа пользователя. Он запускается с учетными данными пользователя, поэтому suкоманда не нужна.

Мне кажется, это именно то, что вы ищете.

Thom
источник
Это не совсем правильно, так как .bashrcне читается, когда пользователь входит в систему lightdm, например, используя обычный .
Я слишком быстро пришел к выводу, что пользователь использовал вход в систему из командной строки вместо диспетчера отображения из-за «ручной» команды startx, о которой он упомянул… мой плохой :-)
thom