LINUX.ORG.RU

Не логинится через ssh если установлен кастомный скрипт для пользователя. Эльбрус

 ,


0

1

Всем привет, проблема такая, создаю самого простого пользователя, и устанавливаю ему кастомный скрипт при логине(даже самый простой который только выполняет /bin/bash), но при вводе пароля через ssh, пишет ошибку что отказано в доступе. если прописать напрямую оболочку, то есть /bin/bash, то логинится успешно. я пытался прописать этот скрипт как новую оболочку, и тогда логин успешно проходит, но не уверен что это правильно:

echo "/home/user1/test.sh" >> /etc/shells

создание пользователя:

useradd -m user1
password user1
usermod -s /home/user1/test.sh user1

getent passwd user1:

user1:x:1002:1013::/home/user1:/home/user1/test.sh

ошибка при логине такая:

Permission denied, please try again.

Ответ на: комментарий от Pinkbyte

ls -la /home/user1/test.sh

-rwxr-xr-x 1 user1 user1 23 мар  4 11:08 /home/user1/test.sh

ls -lad /home/user1

drwxr-xr-x 3 user1 user1 4096 мар  4 11:08 /home/user1

ls -lad /home

drwxr-xr-x 5 root root 4096 мар  4 11:07 /home

ls -lad /

drwxr-xr-x 27 root root 4096 дек 16 11:28 /
lignumq ()
Ответ на: комментарий от Legioner

А можно просто лог sshd посмотреть.

Да и автор сам себе сразу ответил - не логинится если шелланет в /etc/shells, осталось найти настройку которая за это отвечает.

firkax ★★★ ()

при чём тут эльбрус?

pon4ik ★★★★★ ()

Теги отношения к вопросу не имеют. Подозреваю, задача(если она существует) решается .profile.

Elyas ★★★★★ ()
Ответ на: комментарий от lignumq

С правами на файлы/директории всё окей. Что в /var/log/auth.log ?

Ну и да - есть более простой способ - Match в комбинации с ForceCommand в /etc/ssh/sshd_config

Pinkbyte ★★★★★ ()
Последнее исправление: Pinkbyte (всего исправлений: 1 )
Ответ на: комментарий от Legioner

запустил strace, и видно что он напрямую считывает оболочки из /etc/shells, хотя на системах x86_64 такого не наблюдаю. но в какой то момент пришел сигнал, и sshd повис. пока не знаю что повлияло, но это сейчас не суть

HOST ~ # strace -p 2544
strace: Process 2544 attached
restart_syscall(<... resuming interrupted poll ...>) = 1
read(6, "\0\0\0\r", 4)                  = 4
read(6, "\f\0\0\0\10qwerty", 13)      = 13
getpid()                                = 2544
socket(AF_UNIX, SOCK_DGRAM|SOCK_CLOEXEC, 0) = 4
connect(4, {sa_family=AF_UNIX, sun_path="/dev/log"}, 110) = 0
send(4, "<85>Mar  4 11:58:50 sshd[2544]: "..., 167, MSG_NOSIGNAL) = 167
open("/etc/passwd", O_RDONLY|O_CLOEXEC) = 8
_llseek(8, 0, [0], SEEK_CUR)            = 0
fstat(8, {st_mode=S_IFREG|0644, st_size=1961, ...}) = 0
mmap2(NULL, 1961, PROT_READ, MAP_SHARED, 8, 0) = 0x4628b9ee1000
_llseek(8, 1961, [1961], SEEK_SET)      = 0
munmap(0x4628b9ee1000, 1961)            = 0
close(8)                                = 0
stat("/etc/shells", {st_mode=S_IFREG|0644, st_size=97, ...}) = 0
open("/etc/shells", O_RDONLY)           = 8
fstat(8, {st_mode=S_IFREG|0644, st_size=97, ...}) = 0
read(8, "/bin/sh\n/bin/bash\n/bin/csh\n/bin/"..., 4096) = 97
read(8, "", 4096)                       = 0
close(8)                                = 0
write(6, "\0\0\0\t\r", 5)               = 5
write(6, "\0\0\0\0\0\0\0\0", 8)         = 8
getpid()                                = 2544
send(4, "<38>Mar  4 11:58:50 sshd[2544]: "..., 92, MSG_NOSIGNAL) = 92
close(4)                                = 0
geteuid()                               = 0
open("/var/log/btmp", O_WRONLY|O_APPEND) = -1 ENOENT (No such file or directory)
poll([{fd=6, events=POLLIN}, {fd=7, events=POLLIN}], 2, -1) = ? ERESTART_RESTARTBLOCK (Interrupted by signal)
--- SIGALRM {si_signo=SIGALRM, si_code=SI_KERNEL} ---
kill(2545, SIGALRM)                     = 0
getpgid(0)                              = 2544
getpid()                                = 2544
rt_sigaction(SIGTERM, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
rt_sigaction(SIGTERM, {sa_handler=SIG_IGN, sa_mask=[], sa_flags=0}, NULL, 8) = 0
kill(0, SIGTERM)                        = 0
--- SIGTERM {si_signo=SIGTERM, si_code=SI_USER, si_pid=2544, si_uid=0} ---
exit_group(1)                           = ?
+++ exited with 1 +++

lignumq ()
Ответ на: комментарий от Pinkbyte

последние сообщения были 10 февраля

Feb 10 14:40:21 host sshd[6185]: pam_warn(sshd:auth): function=[pam_sm_authenticate] service=[sshd] terminal=[ssh] user=[root] ruser=[<unknown>] rhost=[172.16.8.152] 
Feb 10 14:40:22 host sshd[6185]: pam_warn(sshd:account): function=[pam_sm_acct_mgmt] service=[sshd] terminal=[ssh] user=[root] ruser=[<unknown>] rhost=[172.16.8.152] 
Feb 10 14:40:22 host sshd[6183]: Accepted keyboard-interactive/pam for root from 172.16.8.152 port 37100 ssh2
Feb 10 14:40:22 host sshd[6183]: pam_warn(sshd:setcred): function=[pam_sm_setcred] service=[sshd] terminal=[ssh] user=[root] ruser=[<unknown>] rhost=[172.16.8.152] 
Feb 10 14:40:22 host sshd[6183]: pam_warn(sshd:session): function=[pam_sm_open_session] service=[sshd] terminal=[ssh] user=[root] ruser=[<unknown>] rhost=[172.16.8.152] 
Feb 10 14:40:22 host sshd[6183]: pam_unix(sshd:session): session opened for user root by (uid=0)
Feb 10 14:40:23 host sshd[6186]: error: setlogin failed: Function not implemented
Feb 10 14:40:23 host sshd[6186]: pam_warn(sshd:setcred): function=[pam_sm_setcred] service=[sshd] terminal=[ssh] user=[root] ruser=[<unknown>] rhost=[172.16.8.152]
lignumq ()

устанавливаю ему кастомный скрипт при логине(даже самый простой который только выполняет /bin/bash)

Сама постановка вопроса какая то странная! Скрипт test.sh запускает bash!!! А кто, по твоему интерпретирует test.sh?
Назначай пользователю шелл bash и работай через стандартный механизм запуска команд при старте bash ~/.bash_login, ~/.bash_profile, ~/.profile

sigurd ★★★★★ ()

Ты все сделал правильно, так и должно быть.
Раньше так и лочили пользователей, устанавливая им невалидный шелл.

bigbit ★★★★★ ()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.