Можно ли программно войти в систему конкретного пользователя на определенной виртуальной консоли?

Я хотел бы реализовать один из ответов на . Как убедиться, что определенная функциональность (например, Alt + Ctrl + F1, переключающаяся на tty) доступна в системе подкачки? , и для этого Мне нужен способ авторизации пользователя на виртуальной консоли. Возможно ли это вообще без взаимодействия?

1
задан 13 April 2017 в 15:37

1 ответ

Вот не полностью рабочее решение. Пожалуйста, если у вас есть время, исправьте проблему.

Шаг 1. Создайте файл /etc/init/autologtty.conf

# Get the user to guess the number. If they get it right, let them
# login.

start on runlevel [23]
stop on runlevel [!23]

env VLOCK_PRESENT=1
env VLOCK_CURRENT_MESSAGE=
env TTY=tty9

respawn
respawn limit 10 5


# XXX: Ensure job is connected to the terminal device
console output

script
    [ -f /etc/default/autologtty ] && . /etc/default/autologtty

    # XXX: Ensure all standard streams are connected to the console
    exec 0</dev/$TTY >/dev/$TTY 2>&1
    clear
    if [ "$DEBUG" -eq 1 ]; then
        set -x 
    fi
    dpkg -s vlock>/dev/null
    if [ $? -ne 0 ]; then
        VLOCK_PRESENT=0
    fi  

    trap '' INT TERM HUP #Prevent Ctrl+C

    rcfile=`mktemp`

    if [ "$VLOCK_PRESENT" -eq "1" ]; then
        echo "[ -f ~/.bashrc ] && . ~/.bashrc">>$rcfile
        if [ -n "$VLOCK_CURRENT_MESSAGE" ]; then
            echo "echo \"$VLOCK_CURRENT_MESSAGE\"" >>$rcfile
            vlock=/usr/sbin/vlock-main
        else
            vlock=vlock
        fi
        echo $vlock >>$rcfile
        if [ -n "$USER" ]; then
            chown $USER $rcfile
            sudo -u $USER /bin/bash --rcfile $rcfile && stop
        else
            bash -l --rcfile $rcfile && stop
        fi
    else
        if [ -n "$USER" ]; then
            su -l $USER -c "bash -l" && stop
        else
            "bash -l" && stop
        fi
    fi
#   exec /sbin/getty -8 38400 $TTY
end script

Шаг 2. Создайте файл / etc / default / autologtty

VLOCK_PRESENT=1
USER=adam
VLOCK_CURRENT_MESSAGE="Welcome user $USER! Please hit <ENTER> and enter your password to unlock the tty"
TTY=tty9
DEBUG=0

Убедитесь, что файл доступен только для записи с правами root, поскольку все команды будут выполняться пользователем root.

  1. Под указанным tty (по умолчанию 9) будет рабочая оболочка. Если у вас установлено vlock, сначала возникнет вопрос о пароле.

Вы можете проверить это с помощью sudo service autologtty restart

Что ж, этот сработал бы , если бы я смог запустить полностью работающий bash. Если я получу ответ только на вопрос скрипт будет готов.


РЕДАКТИРОВАТЬ:

Скрипт выскочки работает нормально.

0
ответ дан 13 April 2017 в 15:37

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

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