Как при входе любого пользователя запустить скрипт?

Для новичков как вообще в Linux, так и в конкретной теме, к которой относится вопрос.

Модератор: Bizdelnick

Аватара пользователя
zshgm
Сообщения: 311
ОС: Debian

Как при входе любого пользователя запустить скрипт?

Сообщение zshgm »

Как при входе любого пользователя запустить скрипт? Тоесть польователь может зайти к примеру удаленно по ssh под пользователем user1 или локально под пользователем root. В обоих случаях нужно запускать скрипт... как? :)
newblog.kz - заработай на своих статьях :)
Спасибо сказали:
Аватара пользователя
zshgm
Сообщения: 311
ОС: Debian

Re: Как при входе любого пользователя запустить скрипт?

Сообщение zshgm »

zshgm писал(а):
15.06.2010 17:02
Как при входе любого пользователя запустить скрипт? Тоесть польователь может зайти к примеру удаленно по ssh под пользователем user1 или локально под пользователем root. В обоих случаях нужно запускать скрипт... как? :)



разобрался.. можно записать в /etc/profile :)
newblog.kz - заработай на своих статьях :)
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Как при входе любого пользователя запустить скрипт?

Сообщение drBatty »

zshgm писал(а):
15.06.2010 17:13
можно записать в /etc/profile

юзер может зайти минуя этот файл. внимательно посмотрите man login, и man bash (если юзер входит в bash)
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
zshgm
Сообщения: 311
ОС: Debian

Re: Как при входе любого пользователя запустить скрипт?

Сообщение zshgm »

drBatty писал(а):
15.06.2010 17:36
zshgm писал(а):
15.06.2010 17:13
можно записать в /etc/profile

юзер может зайти минуя этот файл. внимательно посмотрите man login, и man bash (если юзер входит в bash)


Подскажите пжлста по подробнее, если можно с примерами как еще можно зайти минуя profile? И как это можно будет отследить :)
P.S.: Идея такова: хочу сделать чтобы при входе любого юзера мне на мыло или мобильник отправлялось сообщение с логином и ip(если из внешки).. Поэтому мне нужно предугадать все способы авторизации в системе..
newblog.kz - заработай на своих статьях :)
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: Как при входе любого пользователя запустить скрипт?

Сообщение watashiwa_daredeska »

zshgm писал(а):
15.06.2010 18:17
Подскажите пжлста по подробнее, если можно с примерами как еще можно зайти минуя profile?
ssh user1@host bash


zshgm писал(а):
15.06.2010 18:17
Поэтому мне нужно предугадать все способы авторизации в системе..
PAM Вам в помощь.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Как при входе любого пользователя запустить скрипт?

Сообщение drBatty »

zshgm писал(а):
15.06.2010 18:17
Подскажите пжлста по подробнее, если можно с примерами как еще можно зайти минуя profile?

это от системы сильно зависит. не знаю как у вас. ИМХО надёжнее проверять тех, кто в системе (можно убрать тех кто там всегда, например root'а, с его демонами). (man ps)

ну и можно посмотреть, как входит юзер, через что. вот например для sshd
8. If ~/.ssh/rc exists, runs it; else if /etc/ssh/sshrc exists, runs it; otherwise runs xauth. The
“rc” files are given the X11 authentication protocol and cookie in standard input. See SSHRC,
below.

т.е., перед входом юзера по ssh запускается /etc/ssh/sshrc
(только всё это возможно дистроспецифично - лучше свои маны читать, там написано как оно у вас. например я слышал, в вашей ос вообще какой-то свой dash, а не bash)

watashiwa_darede... писал(а):
15.06.2010 18:21
ssh user1@host bash

ага. можно
bash --noprofile
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
zshgm
Сообщения: 311
ОС: Debian

Re: Как при входе любого пользователя запустить скрипт?

Сообщение zshgm »

ssh user1@host bash
- так пользователя даже через who не видно :crazy:
newblog.kz - заработай на своих статьях :)
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: Как при входе любого пользователя запустить скрипт?

Сообщение watashiwa_daredeska »

drBatty писал(а):
15.06.2010 18:30
ага. можно
bash --noprofile
Тут даже --noprofile не нужен. bash не исполняет .profile, если он не login shell, а тут он не login. У меня даже специательный суперскрипт имеется, чтобы запускать программы сразу по ssh так, как будто я полноценно залогинился (почти):

Код: Выделить всё

#!/bin/sh
# This script is called run-with-profile (or rwp for short)
if [ -r $HOME/.profile ]; then
    . $HOME/.profile
elif [ -r $HOME/.bash_profile ]; then
    . $HOME/.bash_profile
fi
exec "$@"
Теперь по ssh -t user@host rwp screen -DR default я попадаю сразу в свою любимую screen-сессию со всеми причиндалами :)
Спасибо сказали:
Аватара пользователя
zshgm
Сообщения: 311
ОС: Debian

Re: Как при входе любого пользователя запустить скрипт?

Сообщение zshgm »

watashiwa_daredeska писал(а):
15.06.2010 18:50
drBatty писал(а):
15.06.2010 18:30
ага. можно
bash --noprofile
Тут даже --noprofile не нужен. bash не исполняет .profile, если он не login shell, а тут он не login. У меня даже специательный суперскрипт имеется, чтобы запускать программы сразу по ssh так, как будто я полноценно залогинился (почти):

Код: Выделить всё

#!/bin/sh
# This script is called run-with-profile (or rwp for short)
if [ -r $HOME/.profile ]; then
    . $HOME/.profile
elif [ -r $HOME/.bash_profile ]; then
    . $HOME/.bash_profile
fi
exec "$@"
Теперь по ssh -t user@host rwp screen -DR default я попадаю сразу в свою любимую screen-сессию со всеми причиндалами :)


Можно ли отловить вход пользователя не используя PAM если bash не login shell? Желательно стандартными средствами которые есть в любом дистрибутиве без предварительной настройки и установки какого-либо софта..
newblog.kz - заработай на своих статьях :)
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: Как при входе любого пользователя запустить скрипт?

Сообщение watashiwa_daredeska »

zshgm писал(а):
15.06.2010 18:56
Можно ли отловить вход пользователя не используя PAM
В общем случае — нет. Ибо через тот же ssh пользователь может запускать вообще всё, что угодно, а не только шелл, в том числе и такие программы, которые не умеют исполнять скрипты (например, ssh user@host ls).
Спасибо сказали:
Аватара пользователя
zshgm
Сообщения: 311
ОС: Debian

Re: Как при входе любого пользователя запустить скрипт?

Сообщение zshgm »

watashiwa_daredeska писал(а):
15.06.2010 19:25
zshgm писал(а):
15.06.2010 18:56
Можно ли отловить вход пользователя не используя PAM
В общем случае — нет. Ибо через тот же ssh пользователь может запускать вообще всё, что угодно, а не только шелл, в том числе и такие программы, которые не умеют исполнять скрипты (например, ssh user@host ls).


Хм.. а если отлавливать не bash, а именно ssh? Есть ли способ определить момент, когда пользователь приконнектится к хосту по ssh? Ну и естественно его логин..
newblog.kz - заработай на своих статьях :)
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Как при входе любого пользователя запустить скрипт?

Сообщение t.t »

drBatty писал(а):
15.06.2010 18:30
(только всё это возможно дистроспецифично - лучше свои маны читать, там написано как оно у вас. например я слышал, в вашей ос вообще какой-то свой dash, а не bash)
Вообще-то, dash не вместо, а помимо bash; и то совсем не обязательно. И он по умолчанию не бывает login shell. Впрочем, ни на login shell, ни на особенности конкретной оболочки, ни даже на наличие какой-либо оболочки здесь нельзя завязываться.

zshgm писал(а):
15.06.2010 19:35
Хм.. а если отлавливать не bash, а именно ssh? Есть ли способ определить момент, когда пользователь приконнектится к хосту по ssh? Ну и естественно его логин..
А разве login shell и ssh возможности входа ограничиваются? (;
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
zshgm
Сообщения: 311
ОС: Debian

Re: Как при входе любого пользователя запустить скрипт?

Сообщение zshgm »

Хотя бы это для начала предусмотреть :)
newblog.kz - заработай на своих статьях :)
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Как при входе любого пользователя запустить скрипт?

Сообщение drBatty »

watashiwa_darede... писал(а):
15.06.2010 19:25
Ибо через тот же ssh пользователь может запускать вообще всё, что угодно, а не только шелл, в том числе и такие программы, которые не умеют исполнять скрипты

я уже цитировал - sshd в любом случае запустит sshrc, если он есть. а команды - уже потом.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Как при входе любого пользователя запустить скрипт?

Сообщение t.t »

zshgm писал(а):
15.06.2010 19:47
Хотя бы это для начала предусмотреть :)
Не совсем понятно, зачем «начинать» с двух случаев, явно не исчерпывающих возможности входа в систему, если уже было предложено универсальное решение.

Тем более, что и эти отдельные случаи трудно обработать так, чтобы эту обработку нельзя было обойти.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Как при входе любого пользователя запустить скрипт?

Сообщение t.t »

drBatty писал(а):
15.06.2010 20:02
watashiwa_darede... писал(а):
15.06.2010 19:25
Ибо через тот же ssh пользователь может запускать вообще всё, что угодно, а не только шелл, в том числе и такие программы, которые не умеют исполнять скрипты
я уже цитировал - sshd в любом случае запустит sshrc, если он есть. а команды - уже потом.
Не всё так просто.

(man sshd) писал(а):8. If ~/.ssh/rc exists, runs it; else if /etc/ssh/sshrc exists, runs it; otherwise runs xauth.


Другими словами, человеку достаточно создать .ssh/rc в домашнем каталоге, чтобы системный sshrc не запустился.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4823
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Как при входе любого пользователя запустить скрипт?

Сообщение SLEDopit »

а не проще логи ssh мониторить?
в debian'e по дефолту умолчанию ssh пишет в /var/log/auth.log .
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Как при входе любого пользователя запустить скрипт?

Сообщение sash-kan »

zshgm писал(а):
15.06.2010 18:56
Можно ли отловить вход пользователя не используя PAM
а в чём проблема с pam-ом?
добавляете в нужные места что-то вроде:
session optional pam_exec.so seteuid <команда с аргументами>
(пример из man pam_exec).

логичнее всего добавлять в «сборный» файл (/etp/pam.d/common-session), а не в каждый по отдельности (sshd, su, sudo, login). вот только надо проконтролировать, что common-session в них подключается. если в каком-то не подключается (у меня, например, в /etc/pam.d/sudo), то просто эту строку в него добавьте.

SLEDopit писал(а):
15.06.2010 20:59
а не проще логи ssh мониторить?
и логи su и sudo тоже?

SLEDopit писал(а):
15.06.2010 20:59
/var/log/auth.log
в разных дистрибутивах это будут совершенно разные файлы.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4823
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Как при входе любого пользователя запустить скрипт?

Сообщение SLEDopit »

sash-kan писал(а):
15.06.2010 21:29
и логи su и sudo тоже?
зачем? в конце концов, как тот же fail2ban работат?
sash-kan писал(а):
15.06.2010 21:29
в разных дистрибутивах это будут совершенно разные файлы.
а я не просто так написал, что этот путь относится к дебиану.
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Как при входе любого пользователя запустить скрипт?

Сообщение sash-kan »

SLEDopit
топик-стартер ведь просил стандартных средств:
zshgm писал(а):
15.06.2010 18:56
Желательно стандартными средствами которые есть в любом дистрибутиве без предварительной настройки
а исследование логов — штука весьма дистрибутивоспецифичная.
мне кажется, pam_exec — гораздо универсальнее будет, а следовательно, и проще.

Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4823
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Как при входе любого пользователя запустить скрипт?

Сообщение SLEDopit »

Ну тогда виноват, как-то я не обратил внимание на просьбу про станадртные средства (:
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Как при входе любого пользователя запустить скрипт?

Сообщение drBatty »

t.t писал(а):
15.06.2010 20:54
Другими словами, человеку достаточно создать .ssh/rc в домашнем каталоге, чтобы системный sshrc не запустился.

да... но это уже будет второй раз. потому можно и стереть этот файл. хотя конечно через PAM проще и правильнее.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
bormant
Сообщения: 1354

Re: Как при входе любого пользователя запустить скрипт?

Сообщение bormant »

sash-kan писал(а):
15.06.2010 22:45
SLEDopit
топик-стартер ведь просил стандартных средств:
zshgm писал(а):
15.06.2010 18:56
Желательно стандартными средствами которые есть в любом дистрибутиве без предварительной настройки


Тут надобно сделать оговорку про любой дистрибутив и PAM. Не в каждой Slackware есть PAM, но в каждой, поставленной только из дистрибутива, его нет по сю пору (13.1).
Не придирок ради, но пользы для.
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Как при входе любого пользователя запустить скрипт?

Сообщение t.t »

drBatty писал(а):
16.06.2010 09:51
t.t писал(а):
15.06.2010 20:54
Другими словами, человеку достаточно создать .ssh/rc в домашнем каталоге, чтобы системный sshrc не запустился.
да... но это уже будет второй раз. потому можно и стереть этот файл. хотя конечно через PAM проще и правильнее.
Совсем не факт, что второй. Этот файл может уже существовать на момент обсуждаемой здесь настройки. И совсем не факт, что его можно удалять без согласования с пользователем — от ситуации зависит. Одним словом, я о том, что это решение далеко не универсальное.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали: