Astra linux автозапуск скриптов

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

Доброго дня!
Подскажите куда положить скрипт, что бы он запускался после входа пользователя в систему?
Сейчас этот скрипт лежит в «etc/network/if-ip.d» и запускается после инициализации сетевого интерфейса.
Скрипт удаляет и копирует файлы из смонтированных сетевых папок, и у пользователя нет доступа к этим файлам.
Подскажите, как решить проблему.

CrashBldash

New member

blackrook

New member
  1. хардкорно-олдвейный: создать ~/.xsessionrc и поместить туда имя скрипта. Только не забудьте в конце команды поставить амперсанд («&»), чтобы она выполнялась фоново — иначе загрузка компонентов рабочего стола и панели зависнет, т.к. будет ждать завершения команды, и может вовсе зависнуть, если скрипт по какой-то причине не отработает успешно;
  2. няшно-современный, т.е. через GUI: «Панель управления» → «Система» ⇒ «Автозапуск».

UPD: Если скрипт должен запускаться при логине у всех пользователей, то сам скрипт, если он работоспособен, можно закинуть в папку /etc/X11/Xsession.d .

blackrook

New member

Перечитал Ваш пост, и, может быть, я чего-то не понимаю: т.е. Вы хотите, чтобы пользователь логинился, а файлы тёрлись от имени другого пользователя (скажем, от root’а)? Или наоборот, Вы хотите этого варианта избежать? От чьего имени должен запускаться Ваш скрипт — от рута или от логинящегося пользователя? И чьи файлы будут удаляться? Может быть, Вам вообще нужно службу писать?

Saltoon

New member

Перечитал Ваш пост, и, может быть, я чего-то не понимаю: т.е. Вы хотите, чтобы пользователь логинился, а файлы тёрлись от имени другого пользователя (скажем, от root’а)? Или наоборот, Вы хотите этого варианта избежать? От чьего имени должен запускаться Ваш скрипт — от рута или от логинящегося пользователя? И чьи файлы будут удаляться? Может быть, Вам вообще нужно службу писать?

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

oko

New member

Скрипт удаляет и копирует файлы из смонтированных сетевых папок, и у пользователя нет доступа к этим файлам.

На этом модуль экстрасенсорики перегрелся.
Раскройте мысль, а то пока суть проблема не ясна (+1 к тов. blackrook в тему демона-службы).

Saltoon

New member

Saltoon

New member

Есть скрипт. Он удаляет из 3 папок все файлы. Далее копирует из смонтированных сетевых папок файлы взамен тех, что удалил.
Все это делаться под root.
Поэтому user не имеет доступа к этим файлам.

Saltoon

New member
chmod -R 777 /home/user/нужная папка/

blackrook

New member

Я, честно говоря, всё равно задумку понял не до конца, но просто на всякий случай: может быть, Вам стоит посмотреть в сторону программы «rsync»? Она позволяет синхронизировать папки, сохраняя бэкап-копии изменяемых файлов, и много чего другого. Кстати, есть вариант демона/сжубы — она запускается автоматически и фоново синхронизирует содержимое папок.

Читайте также:  Heap memory in linux

oko

New member

to Saltoon
Вместо chmod -R 777 полный_путь_к_каталогу (дать дискреционные права Запись+Чтение+Исполнение всем и вся) лучше уж chown -R имя_пользователя полный_путь_к_каталогу
В противном случае рискуете нарваться на «лихие руки» оконечных пользователей.
Вообще, ваш способ мало чем отличается (в контексте озвученной задачи) от создания systemd-сервиса (Гугл в помощь по части systemd). Как бы раньше, до systemd, большинство способов и сводилось к тому, чтобы sh-скрипт подкинуть какому-нибудь существующему сервису, стартующему при загрузке системы (например, /etc/rc.local). Сейчас это несколько «окультурилось», хотя для мелких задач, imho, писать полноценные systemd-сервисы куда муторнее, чем подсунуть в нужное место sh-скрипт.
И да, rsync больше для инкрементального копирования или синхронизации расхождений, чем для задачи «полной перезаписи».
И вообще, золотое правило: если нет времени/возможности изучить нечто неизведанное ранее, лучше использовать те инструменты, которые знаешь и понимаешь. Во всяком случае, в «боевой обстановке», ага.

Saltoon

New member

Не думаю, что такое возможно. Пользователи впервые увидят это систему (пока идет стадия настроек, обкатка) и вряд ли смогут что либо повредить. Файлы нужны для DOS приложения и кроме него, приложения, к этим папкам никто не ходит. Приложение запускается под user.
Даже в случае повреждения этих файлов, запускается скрипт, и с сервера копируются новые файлы. Обновление происходит ежедневно в конце рабочего дня.

oko

New member

to Saltoon
Даже самый долгий дорог начинается с первый шаг (с)
Так что я бы не брезговал юзать chown вместо chmod в вашем случае. Тем более, что трудозатраты по настройке не сильно различаются, ага.

Saltoon

New member

Я, честно говоря, всё равно задумку понял не до конца, но просто на всякий случай: может быть, Вам стоит посмотреть в сторону программы «rsync»? Она позволяет синхронизировать папки, сохраняя бэкап-копии изменяемых файлов, и много чего другого. Кстати, есть вариант демона/сжубы — она запускается автоматически и фоново синхронизирует содержимое папок.

Проблема решена, но я попробую объяснить как организован процесс.
Есть программа с базой данных. Программа старая, написана пот DOS еще в мохнатом году. На сегодняшний день внедряется новая и по плану этот процесс растянут на 3 года, но не в этом дело. Еще 3 года нужно будет поддерживать работоспособность старой программы, а возможно и больше.
Теперь собственно к процессу работы с программой и БД к ней.
В течении дня вносятся изменения в базу данных, которые сохраняются в буфере. В конце дня с машины администратора вносятся изменения в БД на сервере. В начале следующего дня при включении компов заменяются файлы БД на локальных дисках. (Удаляются старые и копируются новые с сервера). Для этого на компах в автозагрузке есть батник (батник в Windows под Астру переделал его в «bash»), который все это делает. Все это придумано не мной, я лишь поддерживаю эту систему в работоспособном состоянии.)) Задача была внедрить новые компы под Астрой в эту систему. Компы поставляются централизованно, не моя прихоть. Программа «rsync» как я понял синхронизирует нужные папки в реальном времени. В этом нет необходимости. У пользователя обновленная (вчерашняя) база. А все изменения за сегодня, он увидит на следующий день, т.к. обновление БД производится вручную в конце рабочего дня. В автоматическом режиме обновлять БД нет технической возможности, так построена работа с этой программой. Как то так. Надеюсь все понятно изложил.

Читайте также:  Linux convert xlsx to xls

Источник

Смоленск 1.5 автозагрузка скрипта под конкретным пользователем

имеется такая задача:
есть 2 пользователя, условно admin и user
user входит в систему, в которой сразу запускается программа, и он ничего не может делать, кроме как пользоваться этой программой,
под admin программа не запускается, его задача эту программу настраивать, обновлять, добавлять при необходимости пользователей типа user и т.д.
и вот в чём вопрос: как сделать, чтобы скрипт запускающий программу работал под конкретных пользователей?

на просторах интернета нашёл, что нужно добавить для конкретного пользователя
sudo -i -u user /etc/runmyprog.sh
или для всех пользователей
/etc/runmyprog.sh
в /etc/rc.local, но ни тот, ни другой вариант не работает, при этом двойной клик по rc.local запускает программу в обоих случаях

Montfer

New member

с режимом Киоск не пробовали?

— попробовал на виртуалке:
— установил пакет fly-admin-kiosk
— создал пользователя user
— сделал вход под ним, чтобы создались домашние каталоги
— под админом в политике безопасности включил user’у режим киоска, указав, что он будет работать только с прогой firefox.
— юзверю стал доступен только firefox

DrageFabeldyr

New member

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

можно каждому пользователю при создании добавлять её в пуск -> настройки -> автостарт, но может есть более «админский» способ?

Montfer

New member

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

можно каждому пользователю при создании добавлять её в пуск -> настройки -> автостарт, но может есть более «админский» способ?

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

oko

New member

to DrageFabeldyr
/etc/rc.local — bash-скрипт, запускаемый при старте системы согласно спецификации System V Init, но до старта X-Server и его окружения (т.е. до старта графики). Поэтому размещать в нем скрипты, стартующие какое-либо GUI-приложение — не выход (хотя и тут можно нагородить велосипед с задержками и автоподключением к текущей X-сессии, но оно того не стоит). Еще /etc/rc.local исполняется с правами суперпользователя root. Из него, конечно, можно что-либо запустить с правами пользователя через su — имя_пользователя или через предложенный у вас вариант с sudo. Но это тоже весьма узкоспециализированные варианты и не для такого монолита, как Astra Linux Special Edition в графическом режиме, ага.
Так что да, проще и быстрее всего добавлять штатными средствами нужный софт в автозапуск пользователю при его создании. Можно чуток автоматизировать — тут на форуме был предложен вариант с автозапуском через правку файлов FlyWM. Поищите.
Или, да, +1 к тов. Montfer — «киос» решает проблему, если, конечно, пользователю для штатной работы хватит одного единственного приложения.

Читайте также:  Linux vim editor command

Источник

Как добавить программу в автозагрузку Linux Astra через терминал?

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

Большинство пользовательских программ, таких как torrent клиент (или яндекс браузер) можно добавить в автозагрузку через меню «Пуск»- «Панель управления». Знакомо, не правда ли?

Открыв оснастку мы увидим список программ. Недавно мы с вами делали скриншоты в linux и устанавливали для этого программу Shutter. Можно установить флажок напротив нее и тем самым, добавить ее в автозапуск:

Не все программы, установленные в Astra Linux попали в список Автозапуска. Например, торрент клиент. Как добавить торрент в автозагрузку?

Первый способ — через меню автозапуска:

Файлы устанавливаемых программ попадают в папки /bin. По сути мы сейчас должны добавить команду на запуск:

Можно здесь же прописать команды на запуск в терминале. Имя команды всегда можно посмотреть в свойствах ярлыка нужной программы в меню или на рабочем столе. Не забываем указать имя приложения, чтобы в списке было понятно, и ярлык можно выбрать

Если программы устанавливаются в качестве службы, то их автозапуск можно определять командой systemctl

смотреть список уже запущенных служб можно так:

systemctl list-unit-files | grep enabled

Список неработающих служб выводим так:

systemctl list-unit-files | grep disabled

Добавить службу в автоЗапуск вместе с ситстемой можно так:

systemctl enable «имя службы»

Отключение запуска служб вместе с системой:

systemctl disable «имя службы»

Останов запущенной службы принудительно:

systemctl start «имя службы»

Запуск остановленной службы принудительно:

Удаление программы из списка автозапуска в Linux Astra происходит легко и привычно:

Можно достаточно гибко настраивать автозапуск, используя команду sleep. Очень простая в использовании и полезная вещь, когда требуется тонкая настройка.

Если вам нужно отсрочить запуск нужной программы — указываем число секунд ( минут m, часов h, d дней) задержки:

Способов настройки автозапуска достаточно много. Можно настраивать его даже на уровне запуска ядра. Но это материал других статей, все это подробно мы еще изучим! Удачи!

Источник

Оцените статью
Adblock
detector