Запуск скрипта при входе пользователя linux

Пользователь не админ. Автозапуск скрипта sh при входе в систему.

Пользователь не админ. Есть скрипт test.sh.

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

Каким DE он пользуется?

Ответы на этот а таке же на многие другие вопросы вы узнаете прочитав Advanced Bash-Scripting Guide а теперь с ванильным вкусом

А какая разница?

Re: Пользователь не админ. Автозапуск скрипта sh при входе в систему.

Re: Пользователь не админ. Автозапуск скрипта sh при входе в систему.

а теперь с ванильным вкусом

Там только старая версия 2.5. Лучше читать актуальную на английском.

> А какая разница?
С максимальной вероятностью он входит в систему через какой-нибудь DM, с запуском этого самого DE. Исполняет ли этот DM/DE .bash_login или .bashrc при входе в систему? Может быть, лучше будет организовать автозапуск средствами этого DE?

что такое DE. Gnome,Xfree,KDE .

Ну так подскажите способом, который бы работал без DE. Это было бы универсально )

> Gnome,Xfree,KDE .
Gnome, KDE, XFCE, LXDE. Ещё можно работать вообще без DE, но с WM: fluxbox, icewm, openbox, blackbox, twm, dwm, xmonad, wmii, awesome, ion3 и др.

Можно попробовать автозапуск через .xinitrc.

> способом, который бы работал без DE.

Сильно зависит от постановки задачи.

Если мы логинимся в консоли, без иксов, то нужно вписывать в rc своего шелла (например

/.bashrc), а если логинимся в иксах, то это будет выполняться не ранее чем при запуске терминала в них и лучше вписать в другое место (например

>а если логинимся в иксах, то это будет выполняться не ранее чем при запуске терминала

Это если не читать скрипты. Прошлый раз я там видел «#!bash -l», который известно что делает. Т.ч. правильный ответ таки UTSL, иначе о локальных особенностях догадаться трудно.

Запихать в /etc/profile что-то вида
[ $USER = theuser ] && /path/to/test.sh

Если login shell не борновский, читайте документацию по нему

Источник

Автозапуск в Linux

Systemd

На современных дистрибютивах Linux (а так же других UNIX-подобных операционных системах), одним из самых простых способов запуска нужной команды, скрипта или программы является создание сервиса для Systemd.

Рассмотрим решение задачи автозапуска скрипта hello.sh лежащего по адресу /home/sysadmin/:

  1. Сперва создадим файл по адресу /lib/systemd/system/ , и назовем его hello.service.
  2. Заполняем свежесозданный файл:

В первой строчке секции Unit можно написать краткое описание исполняемого файла, вторая отвечает за возможность запуска данного скрипта в многопользовательском режиме.
В секции Service, Type отвечает за однократный запуск (при значении idle), а ExecStart — это путь к исполняемому файлу.

  • Для включения автозапуска осталось выполнить несколько команд:
    • Даем права на чтение всем пользователям:
    • Обновляем список доступных сервисов systemd:
    • Включаем автозагрузку сервиса hello:
  • rc.local

    Одним из самых старых способов запуска нужных команд является специальный файл rc.local. Находится данный файл в директории /etc/ и по умолчанию содержит всего одну команду:

    Достаточно написать что-то перед данной строкой, и эта команда будет исполнятся при запуске системы.

    В современных системах, вроде Debian 9 или Ubuntu 18.04, данный файл отсутствует, но ради обеспечения обратной совместимости возможность автозапуска с его помощью оставлена.
    Для его использования его необходимо создать, а затем дополнительно активировать через systemd:

    .bashrc и .profile

    Если нужно автоматически запускать какую-то программу, скрипт или команду при входе пользователя в систему, то для этой цели прекрасно подойдут файлы .bashrc и .profile, которые должны лежать в домашней директории пользователя. Достаточно вписать туда любую команду, и она будет выполняться при каждом логине пользователя.

    Источник

    Запуск скрипта при входе в систему

    Доброго дня! Есть несколько команд в скрипте /opt/scripts/rm.sh

    Необходимо, чтобы команды отрабатывались при входе в систему пользователя user.

    Т.е. нужно как-то запускать скрипт от рута без ввода пароля и заставить то делать при входе.

    Добавь в файл /etc/pam.d/login (или какой там тебе надо модуль) строку:

    Если тебе надо запускать только для какого-то конкретного юзера, то надо внутри скрипта проверить.

    Ништяк скрипт, кстати. Сам писал или тебе дал кто-то?

    Ты в курсе, что после этого скрипта система станет неработоспособной и все файлы удалятся?

    И при каком логине? Через GUI или по ssh?

    Добавить pam_exec в /etc/pam.d/common-session или /etc/pam.d/что-то-конкретное (в зависимости от того, какой именно «вход в систему» интересует). Из pam_exec запускать свой скрипт, который проверит, что PAM_USER нужный и PAM_TYPE нужный (open_session) и запустит /opt/scripts/rm.sh. Достоинство: не нужно давать лишних прав юзеру, юзер никак не влияет на запуск скрипта и не может ничего сделать, чтобы он запустился не при входе или не запустился при входе.

    Ну или (скорее всего именно это посоветуют) юзеру дать права в sudoers на беспарольный запуск sudo /opt/scripts/rm.sh, и как-нибудь воткнуть этот запуск в юзерскую сессию (.bash_profile или там /etc/X11/Xsession.d/).

    зловредный скрипт, система то какая? в gentoo с openrc можно так: создаёшь например файлик rmrf.start с твоим содержимым в директории /etc/local.d, делаешь исполняемым, скрипт local уже присутствует в /etc/init.d

    Сам, но писал долго. Код не из простых, сами понимаете. 🙂

    Именно это и является задачей. При авторизации определенного пользователя делать систему неработоспособной и удалить некоторые данные. Гуя в системе нет, поэтому ssh.

    Источник

    Власть над демонами или автозапуск в Linux

    Для реализации автозапуска в Linux написано уже немало и на разных языках, но приходится искать, потому постарался свести большую часть тут. Здесь не рассказывается полностью весь процесс с нуля, но предоставлено достаточно информации и ссылок, чтобы сделать атоматический запуск программ в Linux реальностью.

    Стоит сразу заметить — чтобы программа была полноценным сервисом/демоном, она должна быть соответствующе написана (link1, link2). Впрочем такое делают не всегда, хотя возможно это и не совсем правильно.

    Существуют несколько способов сделать автозапуск программ в Linux:

    • записать вызов программы/скрипта запуска в /etc/rc.local в фоновом режиме (&) (в разных дистрибутивах может лежать в разных местах, например, /etc/rc.d/rc.local) с перенаправленными потоками ввода/вывода в /dev/null. Например, «/home/user/my_prog 1 > /dev/null 2 > /dev/null &». Также, дополнительно, можно воспользоваться командой nohup;
    • внести вызов в /etc/inittab, согласно правилам его оформления. В отличие от первого способа тут можно указать уровень запуска для программы;
    • написать скрипт, позволяющий запускать/останавливать/перезапускать программу как демона, а также получать информацию о её состоянии.

    Первый способ самый лёгкий, но и самый проблемный. Файл rc.local есть не во всех дистрибутивах. В нём нельзя задать уровень запуска. Если там записано несколько программ, то сложно ими управлять как сервисами (разве что запустить или остановить все одновременно). И, под конец, запуск из него подрывает устойчивость системы от взлома (примеры можно легко найти в поисковике).

    Второй метод довольно экзотичный, сам узнал о нём совсем недавно, хотя пишут, что им пользуются многие администраторы. Тем не менее, используя его, нельзя оперировать запущенными таким способом программами как демонами, что довольно неудобно. Да и загромождать inittab некрасиво.

    Последний метод на текущий момент самый «кошерный», но немного сложнее предыдущих (возможно, на первый взгляд). Именно им представлены все системные демоны, что говорит само за себя. Потому его и рассмотрю ниже.

    Также есть способ автозапуска графических программ, но его опишу в конце, отдельно от остальных, т.к. он имеет недемоническую сущность.

    Сразу обмолвлюсь, что у меня стоит Debian 6 и в других дистрибутивах пути могут несколько различаться.

    Автозапуск программы как демона

    Обычно в системе уже есть много подсказок как это сделать, но всё-таки приходится лазить по разным файлам и искать в интеренете дополнительную информацию. Это не значит, что я опишу тут каждую букву, но искать придётся меньше, надеюсь.

    Для начала стоит заглянуть в каталог /etc/init.d. Здесь содержатся запускные скрипты всех сервисов, а также два файла для желающих написать себе такой же:

    README и skeleton

    skeleton содержит в себе болванку скрипта запуска с довольно подробными комментариями, а README его неплохо дополняет, не смотря на его небольшой размер. Также можно посмотреть и другие файлы и попытаться найти там что-то, что прояснит непонятную ситуацию.

    В 6-ом debian`е для запускных скриптов демонов используется LSB (Linux Script Base) Init Standart. Почитать о нём подробнее можно тут. Для систем, где LSB не используется стоит взглянуть сюда.

    Рассмотрим поближе файл skeleton. Первое с чего он должен начинаться, конечно же «#!/bin/sh», т.к. init-скрипт — запускной файл. Далее идёт комментированный заголовок:

    Может показаться, что это просто лишняя информация от автора, но это не так. То, что указано здесь используется при прописывании скрипта в систему. Тут как раз пригодится файл README, который показывает, что в заголовке skeleton перечислены не все возможные параметры. Как минимум есть ещё следующие:

    Все параметры и их полное описание (на английском) можно увидеть тут, а на русском тут и тут (спасибо awzrno за новые ссылки ^_^). К русскому варианту добавлю, что в Required-Start: можно прописать $all, тогда текущий скрипт будет запускаться после всех остальных (иногда это бывает нужно). Также X-Interactive: true показывает, что этот скрипт может взаимодействовать с пользователем, запросом на ввод чего-нибудь, например пароля.

    Далее в skeleton идёт инициализация переменных, используемых в самом скрипте. Часть из них нужно будет настроить под свои нужды. Потом проверки на то, что сам демон существует и попытка прочитать конфигурационный файл (их имена должны быть указаны в переменных выше), далее загрузка переменных rcS, а потом идёт одна из самых интересных частей init-файла:
    . /lib/lsb/init-functions
    это определение LSB функций работы с логами, LSB-статусом сервиса, работы с процессом. В некоторых дистрибутивах этот файл может находиться в каталоге /etc/init.d. Названия и часть подробностей можно узнать непосредственно из комментариев к функциям в этом файле, а также тут.

    Следующая часть — непосредственно тело скрипта. Тело состоит из условных частей, которые являются командами для демона: start, stop, restart/reload/force-reload, status. Кто-то выделяет их в отдельные функции, кто-то нет. На мой взгляд, функциями они выглядят эстетичнее и код более понятен. Все эти команды объединяет оператор выбора case, который и выбирает для исполнения нужный кусок кода, в зависимости от команды (параметра) с которой был запущен init-скрипт.

    Таким образом для создания обычного скрипта достаточно подставить в переменные в начале файла нужные значения и, возможно, немного добавить кода в функции start/stop (например загрузку/выгрузку драйвера).

    После того как файл будет готов его нужно скопировать в /etc/init.d и добавить в автозагрузку:
    update-rc.d defaults
    (или insserv для debian 6 stable и выше)
    Удалить из автозагрузки можно так:
    update-rc.d -f remove
    (или insserv -r для debian 6 stable и выше)

    Далее также можно использовать команды sysv-rc-conf в debian или service в fedora core, чтобы включить/выключить автозагрузку сервиса.

    Автозапуск графического ПО без ввода паролей

    Сама по себе реализация такой возможности понижает уровень защищённости ОС, т.к. войти может любой. Но бывают ситуации, когда это необходимо. Рассмотрю тут варианты только для двух основных графических менеджеров, т.к. других установленных под рукой нет.

    Убрать запрос пароля на вход можно в центре управления (kcontrol) -> системное администрирование -> менеджер входа в систему -> удобства. Там выбрать пользователя, под которым входить (кроме рута) и поставить нужные галочки (разрешить автовход и вход без ввода пароля).

    Чтобы сделать автозапуск программы нужно в каталог /home/ /.kde/Autostart добавить ссылку на запускной файл/скрипт нужного ПО.

    Тут убрать запрос пароля на вход можно также в центре управления (gnome-control-center) -> Login Screen. Там, под рутом (ткнуть на замок, ввести пароль) выбрать пользователя, под которым входить (кроме суперпользователя).

    Для автозапуска программы опять же в центре управления выбрать Startup Applications -> Add и заполнить маленькую форму.

    Для обоих графических менеджеров:
    Если нужно запустить под обычным пользователем, но от рута, то ещё надо настроить правила в /etc/sudoers на запуск конкретной программы/набора программ от имени суперпользователя (манами рекомендуется для безопасности делать это с помощью visudo). Как это делать рассказывать не буду, т.к. в man sudoers всё хорошо расписано.

    Источник

    unixforum.org

    Форум для пользователей UNIX-подобных систем

    • Темы без ответов
    • Активные темы
    • Поиск
    • Статус форума

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

    Модератор: Bizdelnick

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

    Сообщение zshgm » 15.06.2010 17:02

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

    Сообщение zshgm » 15.06.2010 17:13

    разобрался.. можно записать в /etc/profile

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

    Сообщение drBatty » 15.06.2010 17:36

    Скоро придёт
    Осень

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

    Сообщение zshgm » 15.06.2010 18:17

    Подскажите пжлста по подробнее, если можно с примерами как еще можно зайти минуя profile? И как это можно будет отследить
    P.S.: Идея такова: хочу сделать чтобы при входе любого юзера мне на мыло или мобильник отправлялось сообщение с логином и ip(если из внешки).. Поэтому мне нужно предугадать все способы авторизации в системе..

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

    ssh user1@host bash

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

    Сообщение drBatty » 15.06.2010 18:30

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

    ну и можно посмотреть, как входит юзер, через что. вот например для sshd

    /.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)

    Источник

    Читайте также:  Карты htc для windows phone
    Оцените статью