Запустите скрипт как корень при входе в систему (никакой sudoer пользователь, окружите сессию),

Во многом как /etc/profile и ~/.profile но работал корнем вместо пользователя, делает вход в систему. /etc/rc.local бежит за начальной загрузкой, но мне нужно запущение скрипта перед входом в систему. Пользователь не является sudoer один.

Спасибо!

8
задан 24 November 2011 в 13:09

3 ответа

Только для возвращения к sudoers методу я думаю, что Вы были почти там перед отказом. Смотря на Ваши последние комментарии, я был бы точно так же, как для обращения к чему-то, что, вероятно, починит вещи для Вас:

Если Вы запускаете скрипт как корень, Вы не должны называть sudo из него.

У меня есть сценарий как это:

#! /bin/bash

echo $USER
whoami

Если я работаю sudo ./myscript Ясно root возвращенный для обоих они. Сессия, в которой работает сценарий, является корневой оболочкой.

Короче говоря это означает, что все, что Вы делаете в своем сценарии уже, имеет корневые полномочия. Вы не должны звонить sudo (не, что это должно причинить боль - root обычно имеет sudo полномочия).

Так запишите свой сценарий, chown это к root и chmod это к 700 (поэтому только корень может работать, читать или отредактировать его), и затем просто позвольте Вашему пользователю [s] выполнять его через sudoers. Это должно работать.

Если это не работает, это вероятно большая проблема со сценарием, не платформа полномочий. Я предложил бы дать сытому пользователю sudo доступ (добавляющий к группе admin самый легкий путь), и затем запущение Вашего скрипта.

3
ответ дан 23 November 2019 в 05:51

Шаг 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

Если это работает на Вас, сообщите мне. Можно проверить системный журнал на сообщения после входа в систему. (Я еще не протестировал его, и я никогда не реализовывал ничего как это прежде.), Если Вы улучшаетесь к решению, совместно используйте свое конечное решение здесь.Спасибо.

2
ответ дан 23 November 2019 в 05:51

Выполнять документ на получение как корень перед входом в систему

  1. Вы могли запустить документ на получение с Выскочки.

  2. Вы могли добавить, что сценарий звонит в существующие сценарии запуска kdm/gdm/etc.

Примеры: Тема:Часто задаваемые вопросы: автоматический запуск / Автозапуск, Периодическое выполнение.

0
ответ дан 23 November 2019 в 05:51

Другие вопросы по тегам:

Похожие вопросы: