Astra linux скрипт при запуске
Команды, запускаемые с привелегиями root
В Astra Linux имеется следующий файл:
(не следует его путать с /etc/X11/fly-dm/Xsetup ).
В данном файле прописываются команды, которые будут выполнены перед тем, как сессия X11 запустится для конкретного пользователя. Команды, прописанные в этом файле, выполняются под пользователем root . При этом в переменной среды USER будет прописано имя логинещегося пользователя.
Проблема файла Xstartup в том, что после него выполняются еще настройки рабочего стола, и из-за этого, например для нового пользователя, новые файлы, прописанные в скриптах первичной инициализации могут еще не существовать на момент выполнения Xstartup .
Команды, запускаемые от логинещегося пользователя
Чтобы выполнить команды после того, как создаются файлы пользователя, настраивающие рабочий стол, можно воспользоваться каталогом /etc/X11/Xsession.d . В нем можно размещать файлы с нужным Bash-кодом, желательно начиная имя файла на цифру 98 , так как цифра 99 — это финишный шаг перед запуском графической сессии пользователя. Особенности скриптов, размещаемых в данном каталоге следующие:
- Код в этих скриптах выполняется под логинещимся пользователем. Системные настройки, для которых необходимы root-права сделать не получится.
- Данные скрипты — это не отдельные скрипты как таковые. Из файлов, лежащих в каталоге /etc/X11/Xsession.d как бы собирается один большой скрипт. Поэтому в них нет bang-заголовков (хотя они и не запрещены), и в них нет досрочного завершения через команду exit , так как в этом случае код, который расположен в последующих скриптах этого каталога просто не будет выполнен.
Если быть более точным, то последовательность сриптов, выполняющихся от логинещегося пользвателя, следующая:
- Соответствие версий Astra Linux Смоленск и Debian, таблица версий библиотек
- Как понять, к какой версии Astra Linux относятся файлы документации
- Восстановление пользователя root в Astra Linux 1.6 Смоленск
- Отключение блокировки экрана паролем в Astra Linux 1.6
- Как отменить гашение экрана в Astra Linux 1.6 через конфиги
- Как в Astra Linux 1.3 установить разрешение экрана через конфиги?
- Какие пакеты ПО устанавливаются при выборе пунктов «Средства работы в сети» и «Сетевые сервисы» в инсталляторе?
- Как прописать команды, которые должны выполниться перед появлением окна логина FLY DM
- Как прописать команды, которые выполнятся перед стартом X-сессии
- Как в Astra Linux 1.3 ограничить возможности рабочего стола
- Проблема запуска скрипта на сервере ALD домена при логине пользователя с нулевой мандатной меткой
- Как войти в домен ALD Astra Linux на рабочей станции, если вход не работает
- Как настроить видеодрайвер в Astra Linux 1.6 для Орион ПК 103 (ПК-Э-103-02)
- Как пользоваться мандатным флагом ccnr, чтобы не менялась мандатная метка в Astra Linux 1.6
- Управление безопасностью ОССН с использованием мандатного управления доступом в Astra Linux
- Мандатный контроль целостности в Astra Linux
- Структура мандатной метки в Astra Linux 1.6 (инфографика)
- Как предоставить доступ пользователю к COM-порту /dev/ttyS0 в ALD
- Понижение классификационной мандатной метки в Astra Linux 1.6
- Какие секции репозитария есть в Astra Linux
- Как в Astra отключить монитор печати при отключении области уведомлений
- Известные проблемные пакеты Astra Linux, которые блокируют установку обновлений и не только
- Почему не виден ярлык на рабочем столе Astra Linux 1.6 Update 10?
- Как включить NumLock при старте рабочего стола в Astra Linux 1.6
- Что не работает в Astra Linux 1.6
- Восстановление загрузчика Grub после применения обновлений в Astra Linux 1.6
- Как выйти/разлогиниться из FLY WM — опции команды fly-wmfunc в Astra Linux 1.6
- Как запустить SSH-сервер в Astra Linux 1.6
- Установка обновленного ejabberd в Astra Linux 1.6 Update 10. Как выкачивать ПО из репозитариев
- Загрузка X-сервера в Debian и Astra Linux 1.6. Какие скрипты в какие моменты времени срабатывают?
- Как загрузить и подключить диск со средствами разработки для Astra Linux SE 1.7
- Что означает аббревиатура МРОСЛ ДП
- Как обозначаются версии релизов Astra Linux в файлах etc-директории
Автозапуск скрипта после входа пользователя
Доброго дня!
Подскажите куда положить скрипт, что бы он запускался после входа пользователя в систему?
Сейчас этот скрипт лежит в «etc/network/if-ip.d» и запускается после инициализации сетевого интерфейса.
Скрипт удаляет и копирует файлы из смонтированных сетевых папок, и у пользователя нет доступа к этим файлам.
Подскажите, как решить проблему.
CrashBldash
New member
blackrook
New member
- хардкорно-олдвейный: создать ~/.xsessionrc и поместить туда имя скрипта. Только не забудьте в конце команды поставить амперсанд («&»), чтобы она выполнялась фоново — иначе загрузка компонентов рабочего стола и панели зависнет, т.к. будет ждать завершения команды, и может вовсе зависнуть, если скрипт по какой-то причине не отработает успешно;
- няшно-современный, т.е. через 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»? Она позволяет синхронизировать папки, сохраняя бэкап-копии изменяемых файлов, и много чего другого. Кстати, есть вариант демона/сжубы — она запускается автоматически и фоново синхронизирует содержимое папок.
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» как я понял синхронизирует нужные папки в реальном времени. В этом нет необходимости. У пользователя обновленная (вчерашняя) база. А все изменения за сегодня, он увидит на следующий день, т.к. обновление БД производится вручную в конце рабочего дня. В автоматическом режиме обновлять БД нет технической возможности, так построена работа с этой программой. Как то так. Надеюсь все понятно изложил.