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

Saltoon

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

blackrook

New member
Сообщения
25
#3
«~/.profile» это всё-таки больше про шелл и переменные окружения; если же под «входом в систему» подразумевается запуск X-сервера с панелью, уведомлениями, или, скажем, libnotify/zenity, то тогда можно попробовать менее суровые варианты, такие как:
  1. хардкорно-олдвейный: создать ~/.xsessionrc и поместить туда имя скрипта. Только не забудьте в конце команды поставить амперсанд («&»), чтобы она выполнялась фоново — иначе загрузка компонентов рабочего стола и панели зависнет, т.к. будет ждать завершения команды, и может вовсе зависнуть, если скрипт по какой-то причине не отработает успешно;
  2. няшно-современный, т.е. через GUI: «Панель управления» → «Система» ⇒ «Автозапуск».
Если же речь идёт о любом логине (т.е. не нужны средства, предоставляемые оконным менеджером, иксами и проч., и требуется, чтобы скрипт выполнялся и при логинах через виртуальные терминалы), — то тогда да, profile'ы ( ~/.profile, /etc/profile.d/ ) — Ваше всё :)

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

blackrook

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

Saltoon

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

oko

New member
Сообщения
1 257
#6
to Saltoon
Скрипт удаляет и копирует файлы из смонтированных сетевых папок, и у пользователя нет доступа к этим файлам.
и
Нужно, что бы user имел доступ к этим файлам и мог изменять их.
На этом модуль экстрасенсорики перегрелся...
Раскройте мысль, а то пока суть проблема не ясна (+1 к тов. blackrook в тему демона-службы)...
 

Saltoon

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

blackrook

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

oko

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

Saltoon

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

oko

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

Saltoon

New member
Сообщения
95
#14
Я, честно говоря, всё равно задумку понял не до конца, но просто на всякий случай: может быть, Вам стоит посмотреть в сторону программы «rsync»? Она позволяет синхронизировать папки, сохраняя бэкап-копии изменяемых файлов, и много чего другого. Кстати, есть вариант демона/сжубы — она запускается автоматически и фоново синхронизирует содержимое папок.
Проблема решена, но я попробую объяснить как организован процесс.
Есть программа с базой данных. Программа старая, написана пот DOS еще в мохнатом году. На сегодняшний день внедряется новая и по плану этот процесс растянут на 3 года, но не в этом дело. Еще 3 года нужно будет поддерживать работоспособность старой программы, а возможно и больше.
Теперь собственно к процессу работы с программой и БД к ней.
В течении дня вносятся изменения в базу данных, которые сохраняются в буфере. В конце дня с машины администратора вносятся изменения в БД на сервере. В начале следующего дня при включении компов заменяются файлы БД на локальных дисках. (Удаляются старые и копируются новые с сервера). Для этого на компах в автозагрузке есть батник (батник в Windows под Астру переделал его в "bash"), который все это делает. Все это придумано не мной, я лишь поддерживаю эту систему в работоспособном состоянии.)) Задача была внедрить новые компы под Астрой в эту систему. Компы поставляются централизованно, не моя прихоть. Программа "rsync" как я понял синхронизирует нужные папки в реальном времени. В этом нет необходимости. У пользователя обновленная (вчерашняя) база. А все изменения за сегодня, он увидит на следующий день, т.к. обновление БД производится вручную в конце рабочего дня. В автоматическом режиме обновлять БД нет технической возможности, так построена работа с этой программой. Как то так. Надеюсь все понятно изложил.
 
Последнее редактирование:

blackrook

New member
Сообщения
25
#15
Запускать батники под линуксом… зашибись конструкция! )))) Понял, что не Вы это придумали — я Вам сочувствую ))))
 

oko

New member
Сообщения
1 257
#17
to Saltoon
Если не секрет, МРЭО? МФЦ? :)
Кстати, можете подробнее раскрыть, какова в такой схеме роль Astra Linux? Запуск софта в Wine с последующей его обработкой? И что из себя представляет буфер, в котором хранятся текущие модифицированные данные до их "обновления" (записи в файл) с админской машины?
 

Saltoon

New member
Сообщения
95
#18
to Saltoon
Если не секрет, МРЭО? МФЦ? :)
Кстати, можете подробнее раскрыть, какова в такой схеме роль Astra Linux? Запуск софта в Wine с последующей его обработкой? И что из себя представляет буфер, в котором хранятся текущие модифицированные данные до их "обновления" (записи в файл) с админской машины?
Роль АстраЛинукс, централизованная поставка системных блоков от министерства.
Wine на сколько я понимаю, это запуск приложений Windows в Линуксе, у нас нет такого. Старая программа под DOS, новая запускается в браузере, естественно в защищенной корпоративной сети, прокси закупили для этого во все подразделения.
Буфер в программе, сложно объяснить, толком не знаю все принципы работы программы. Знаю, что в течении дня там копятся все данные, которые потом в конце дня обрабатываются вручную на центральной машине и записываются в БД на сервере, откуда потом и копируются на все машины в локалке. Скорее всего это отдельная папка на диске в общем каталоге программы. Старая программа написана на FOX v. 2.6
 
Последнее редактирование:

oko

New member
Сообщения
1 257
#19
to Saltoon
Точно, как я мог забыть про эти системы. Было дело, разграничивали доступ под Win Secret Net'ами и Рубиконы на периметр втыкали по целевому контракту. Аж прослезился...
Т.е. из-под Астры вы работаете с новой браузерной версией софта (вестимо, не прокси, а криптошлюзы до какой-нибудь ФГИС)? Но как она тогда синхронизируется со старой БД под DOS-софтом? Просто пытаюсь прикинуть, как вам оптимизировать процесс. Потому что приведенная выше схема, это, конечно, адовые костыли...
 

Saltoon

New member
Сообщения
95
#20
to Saltoon
Точно, как я мог забыть про эти системы. Было дело, разграничивали доступ под Win Secret Net'ами и Рубиконы на периметр втыкали по целевому контракту. Аж прослезился...
Т.е. из-под Астры вы работаете с новой браузерной версией софта (вестимо, не прокси, а криптошлюзы до какой-нибудь ФГИС)? Но как она тогда синхронизируется со старой БД под DOS-софтом? Просто пытаюсь прикинуть, как вам оптимизировать процесс. Потому что приведенная выше схема, это, конечно, адовые костыли...
А никак не синхронизируется! Из DBF конвертнут во что не знаю, SQL скорее всего и будут работать с нового года в двух базах одновременно.)) Сервер у новой базы не федеральный. Только на область. Про планы внедрения в единую сеть меня не информируют.)) И есть ли она! Иначе бы не слали бы запросы по межведу почтой России в другие регионы.))
Как бы мне по шапке не надовали, знаю, что один из тех. специалистов, к которому обращался за помощью при переустановке Астры, читает этот форум.))