LinuxForum.Fans
Тема

Автовход (без ввода логина/пароля с клавиатуры)

Автор: Valentinus 6 сообщений 8307 просмотров
#63509

мне нужно запускать свою программку в фоновом режиме при загрузке (я работаю без GUI, чисто с консолью, в кодировке UTF-8).

я ее прописал в inittab как:

text
myprog:3:once:/home/myprog

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

и так пока не залогинюсь. после ввода root, сообщения начинают печататься нормально.

в RedHat на ядре 2.4 программа работала нормально. а вот в слаке такая досада! подозреваю что это из-за UTF-8. То есть до ввода логина/пароля локаль как-то не до конца "локализована" и ось "не соображает" как правильно переносить строки.

можно ли как-то автоматически залогиниваться при загрузке оси (рутом или пользователем)? (вопрос о безопасности не обсуждается, так надо)

PS я как-то вообще никак не пойму - а кто собственно запрашивает логин/пароль? agetty? ведь нет?

#63512

мне нужно запускать свою программку в фоновом режиме при загрузке

Тогда пишите в rc.d / init.d или rc.local. Но не в /etc/inittab. Программу (с правами root'а) скопируйте в /bin или /sbin, в /home ее держать не надо.
Для запуска с нужной учетной записью исп-те команду sudo.

можно ли как-то автоматически залогиниваться при загрузке оси (рутом или пользователем)?

Да, для графических сред есть программы, настраивающие параметры сессий. Там должна быть воз-ть настроить автологин. Для консольных - придется писать 'sudo user /bin/sh' вместо getty.

я как-то вообще никак не пойму - а кто собственно запрашивает логин/пароль?

В консоли - программа login. На FreeBSD кажется так - логин спрашивает getty, а пароль - login. На Linux не проверял.

#63566

в скрипты (init.d или rc.local) нельзя прописывать, так как программа должна постоянно выполняться в фоне, а если прописать в скрипт, то загрузка оси приостановится до завершения моей программы, т.е. навсегда.

а почему собственно нельзя в inittab?

и мне не нужно "запускать с правами". мне нужно чтобы ось автоматически залогинила какую-либо учетную запись.
как это сделать?

PS графических сред я не использую, писал выше.

#63583

нашел вот что:

Если же нужен автовход рутом в консоль то можно сделать так:

в /etc/gettytab вписать:

autoroot:\
:al=root:tc=Pc:

а в /etc/ttys поправить:
ttyv0 "/usr/libexec/getty Pc" cons25r on secure
на:
ttyv0 "/usr/libexec/getty autoroot" cons25r on secure

если заменить al=root на скажем al=kikoz то автовход на этой консоли будет под юзером kikoz ну и по аналогии можно в вирт. консолях наавтологинить кого угодно. )

но это для unix, в слаке я не нашел /etc/gettytab :((


нашел еще вот что:


Вероятно мы захотим, обеспечить нашему пользователю автоматический вход в систему без ввода регистрационных данных.
уберем запрос пароля на первой консоли:
sed -i "/^#NO_PASSWORD_CONSOLE/a NO_PASSWORD_CONSOLE tty1" /tmp/livecd/1/etc/login.defs

Для отмены запроса логина потребуется программа:
cat > ./auto.c << "EOF"
int main()
{
execlp( "login", "login", "-f", "flanker", 0);
}

Cобираем и настраиваем:
gcc auto.c -o /tmp/livecd/auto
mv /tmp/livecd/auto /tmp/livecd/1/sbin/
rm ./auto.c
sed -i "s/c1:1235:respawn/#c1:1235:respawn/" /tmp/livecd/1/etc/inittab
sed -i "/#c1:1235:respawn/ a c1:1235:respawn:/sbin/agetty -n -l /sbin/auto 38400 tty1 linux" /tmp/livecd/1/etc/inittab

буду завтра пробовать

#63602

Valentinus, зачем так мудрить. Добавляй свою прогу в стартовые скрипты (/etc/rc.d/). А что бы она работала в фоне, запускай вот так (./my_prog &), знак '&' говорит о том что бы запустить программу в фоновом режиме и дольше продолжить выполнение скриптов.

#63666
Serg79 написал:
Valentinus, зачем так мудрить. Добавляй свою прогу в стартовые скрипты (/etc/rc.d/). А что бы она работала в фоне, запускай вот так (./my_prog &), знак '&' говорит о том что бы запустить программу в фоновом режиме и дольше продолжить выполнение скриптов.

даже если запускаю в rc.local с "&", то все равно строки печатаются ступеньками.

тут именно нужно залогиниться,


вот цитата из мана к agetty

agetty has several non-standard features that are useful for hard-wired
and for dial-in lines:

o Adapts the tty settings to parity bits and to erase, kill, end-of-line and uppercase characters when it reads a login name. The program can handle 7-bit characters with even, odd, none or space parity, and 8-bit characters with no parity. The following special characters are recognized: @ and Control-U (kill); #, DEL and back space (erase); carriage return and line feed (end of line).

.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.--.-.-.-.
-n
Do not prompt the user for a login name. This can be used in connection with -l option to invoke a non-standard login process such as a BBS system. Note that with the -n option, agetty gets no input from user who logs in and therefore won't be able to figure out parity, character size, and newline processing of the connection. It defaults to space parity, 7 bit characters, and ASCII CR (13) end-of-line character. Beware that the program that agetty starts (usually /bin/login) is run as root.

то есть если приказать agetty не запрашивать имя пользователя, то она не сконфигурирует кодировку и символ переноса.
:(
тогда другой способ- как бы изменить установки agetty по умолчанию?

Войдите или зарегистрируйтесь, чтобы ответить.