Во многом как /etc/profile
и ~/.profile
но работал корнем вместо пользователя, делает вход в систему. /etc/rc.local
бежит за начальной загрузкой, но мне нужно запущение скрипта перед входом в систему. Пользователь не является sudoer один.
Спасибо!
Только для возвращения к sudoers методу я думаю, что Вы были почти там перед отказом. Смотря на Ваши последние комментарии, я был бы точно так же, как для обращения к чему-то, что, вероятно, починит вещи для Вас:
У меня есть сценарий как это:
#! /bin/bash
echo $USER
whoami
Если я работаю sudo ./myscript
Ясно root
возвращенный для обоих они. Сессия, в которой работает сценарий, является корневой оболочкой.
Короче говоря это означает, что все, что Вы делаете в своем сценарии уже, имеет корневые полномочия. Вы не должны звонить sudo
(не, что это должно причинить боль - root
обычно имеет sudo
полномочия).
Так запишите свой сценарий, chown
это к root
и chmod
это к 700
(поэтому только корень может работать, читать или отредактировать его), и затем просто позвольте Вашему пользователю [s] выполнять его через sudoers. Это должно работать.
Если это не работает, это вероятно большая проблема со сценарием, не платформа полномочий. Я предложил бы дать сытому пользователю sudo
доступ (добавляющий к группе admin самый легкий путь), и затем запущение Вашего скрипта.
Шаг 1. создайте сценарий со связывать командой с помощью любого редактора. Например:
sudo emacs bind_user_directories.sh
содержание:
#!/bin/bash
#NOTE: this file would be placed in /usr/local/sbin/ folder as bind_user_directories.sh
#alternatively it could be placed in /etc/init.d/ ... (I guess)
### BEGIN INIT INFO
# Provides: bind_user_directories
# Required-Start:
# Required-Stop:
# Should-Start: $named
# Default-Start: 0 2 3 4 5 6 (I guess...)
# Default-Stop: 1
# Short-Description: mount --bind for a user
# Description: runs mount --bind command for certain pre-defined directories for a specific user
### END INIT INFO
# What is this?
DESC="bind_user_directories"
# See how we were called.
case "$1" in
start)
log_progress_msg "bind directories for user..."
sudo mount --bind /source/path /target/path
log_progress_msg "done: bind directories for user"
;;
stop)
log_progress_msg "umount --bind directories for user..."
sudo umount /target/path
log_progress_msg "done: unbind directories for user"
;;
restart)
$0 stop
sleep 1
$0 start
;;
*)
#log_success_msg "Usage: bind_user_directories {start|stop|restart}"
log_success_msg "Usage: service bind_user_directories <start|stop|restart>"
exit 1
;;
esac
exit 0
Шаг 2. сохраните bind_user_directories.sh и сделайте его исполняемым файлом:
chmod a+x bind_user_directories.sh
Шаг 3. свяжите его с подходящим местоположением, таким как/usr/local/sbin:
sudo ln -s bind_user_directories.sh /usr/local/sbin/bind_user_directories.sh
Шаг 4. создайте новомодный сценарий:
sudo emacs /etc/init/bind_user_directories.conf
содержание:
description "runs mount --bind command for certain pre-defined directories for a specific user"
start on filesystem and net-device-up IFACE!=lo
stop on runlevel [!023456]
console output
respawn
respawn limit 10 5
exec /usr/local/sbin/bind_user_directories.sh start
Если это работает на Вас, сообщите мне. Можно проверить системный журнал на сообщения после входа в систему. (Я еще не протестировал его, и я никогда не реализовывал ничего как это прежде.), Если Вы улучшаетесь к решению, совместно используйте свое конечное решение здесь.Спасибо.
Выполнять документ на получение как корень перед входом в систему
Вы могли запустить документ на получение с Выскочки.
Вы могли добавить, что сценарий звонит в существующие сценарии запуска kdm/gdm/etc.
Примеры: Тема:Часто задаваемые вопросы: автоматический запуск / Автозапуск, Периодическое выполнение.