Автор Тема: Xfce c Sysv  (Прочитано 564952 раз)

Оффлайн Антон Мидюков

  • alt linux team
  • ***
  • Сообщений: 5 183
  • antohami@
Re: Xfce c Sysv
« Ответ #345 : 05.06.2017 12:49:41 »
Есть другой вариант создания _nmconnect и добавления в неё первого пользователя:
- оставить в покое polkit-sysvinit-0.3.3 как есть, а init-скрипт ложить в отдельный пакет.

Этот вариант мне нравится больше. Надо ещё LSB заголовок добавить в init скрипт, чтоб на systemd тоже работало. Как это не парадоксально, а я использую polkit-sysvinit на LXDE вместо lxde-lxpolkit на systemd и доволен тем, что экономятся мегабайты ОЗУ :-)

Оффлайн gvy

  • alt linux team
  • ***
  • Сообщений: 1 008
    • Альт на Эльбрусе
    • Email
Re: Xfce c Sysv
« Ответ #346 : 05.06.2017 17:35:57 »
Ну договоритесь и сделайте, на этой неделе можем успеть :)
--
Michael Shigorin | ALT Linux Team | ANNA-News | Сделано у нас | altlinux.org/эльбрус

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: Xfce c Sysv
« Ответ #347 : 05.06.2017 23:32:50 »
Есть другой вариант создания _nmconnect и добавления в неё первого пользователя:
- оставить в покое polkit-sysvinit-0.3.3 как есть, а init-скрипт ложить в отдельный пакет.

Этот вариант мне нравится больше. Надо ещё LSB заголовок добавить в init скрипт, чтоб на systemd тоже работало.

:-) Антон, я тут не дока, но бегло посмотрел у дебианистов,
https://wiki.debian.org/LSBInitScripts
(оставил на будущее:  Linux Standard Base Core Specification 3.1  /  20.3. Comment Conventions for Init Scripts)
глянул в альтовые скрипты, прописал LSB хидер по-минимуму и родилось это.

Окончательный вариант пакета nm-sysvinit :

В системе на sysv
# rpm -qvl nm-sysvinit
-rwxr-xr-x    1 root    root                      825 Jun  5 20:34 /etc/rc.d/init.d/nm-group
# cat /etc/rc.d/init.d/nm-group
#!/bin/bash
#
# Adding the first user to the _nmconnect group
#

# chkconfig: 2345 10 92
# description:  Adding the first user to the _nmconnect group
#
### BEGIN INIT INFO
# Provides:       nm-group
# Required-Start:
# Required-Stop:
# Default-Start:  2 3 4 5
# Default-Stop:
# Description:    Adding the first user to the _nmconnect group
### END INIT INFO


# Source function library.
. /etc/rc.d/init.d/functions



start() {
# adding first user to a group _nmconnect

getent group _nmconnect>/dev/null 2>&1 || groupadd -r _nmconnect>/dev/null 2>&1
for n in `awk -F: '{if ($3==500) print $1}' /etc/passwd`
    do
id -Gn $n|grep -c _nmconnect>/dev/null 2>&1 || gpasswd -a $n _nmconnect>/dev/null 2>&1
done
}




case "$1" in
    start)
    start
    ;;
    *)
        echo $"Usage: $0 {start}"
        exit 1
esac
exit 0


В лайве regular-xfce на systemd:
# rpm -q nm-sysvinit
пакет nm-sysvinit не установлен
# find /etc/rc.d/ -name "*nm-group"
#
# rpm -qp --scripts /home/altlinux/nm-sysvinit-0.1-alt1.noarch.rpm
postinstall scriptlet (using /bin/sh):
if [ $1 -eq 1 ]; then
        /sbin/chkconfig --add nm-group
fi
preuninstall scriptlet (using /bin/sh):
if [ $1 -eq 0 ]; then
        /sbin/chkconfig --del nm-group
fi
# rpm -Uhv /home/altlinux/nm-sysvinit-0.1-alt1.noarch.rpm
Подготовка...                           ######################### [100%]
Обновление / установка...
1: nm-sysvinit-0.1-alt1                 ######################### [100%]
Running /usr/lib/rpm/posttrans-filetriggers
# find /etc/rc.d/ -name "*nm-group"
/etc/rc.d/rc6.d/K92nm-group
/etc/rc.d/rc5.d/S10nm-group
/etc/rc.d/rc4.d/S10nm-group
/etc/rc.d/rc3.d/S10nm-group
/etc/rc.d/rc2.d/S10nm-group
/etc/rc.d/rc1.d/K92nm-group
/etc/rc.d/rc0.d/K92nm-group
/etc/rc.d/init.d/nm-group
# chkconfig --list

Внимание: в выводе отображены только SysV службы (нативные службы systemd отсутствуют)
      конфигурация SysV  может быть сброшена нативной
      конфигураией systemd.

consolesaver    0:выкл 1:выкл 2:вкл 3:вкл 4:вкл 5:вкл 6:выкл
ethtool        0:выкл 1:выкл 2:выкл 3:выкл 4:выкл 5:выкл 6:выкл
hddtemp        0:выкл 1:выкл 2:выкл 3:выкл 4:выкл 5:выкл 6:выкл
nm-group        0:выкл 1:выкл 2:вкл 3:вкл 4:вкл 5:вкл 6:выкл
openvpn        0:выкл 1:выкл 2:выкл 3:выкл 4:выкл 5:выкл 6:выкл
rawdevices      0:выкл 1:выкл 2:выкл 3:выкл 4:выкл 5:выкл 6:выкл




Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: Xfce c Sysv
« Ответ #348 : 06.06.2017 05:57:48 »
nm-sysvinit-0.2

Добавлена фича:
- После первого отрабатывания, на старте системы или запуска вручную, после создания системной группы _nmconnect и добавления в неё пользователя с id=500, сервис выключает сам себя и больше мешать на загрузке не будет.

После первой инсталляции пакета и перезагрузки: группа _nmconnect была предварительно перед этим удалена

На старте системы сервис создал системную группу _nmconnect и добавил в неё пользователя с id=500
# groups user|grep -o _nmconnect
_nmconnect
# grep _nmconnect /etc/group
_nmconnect:x:468:user

затем сервис сам себя выключил
# find /etc/rc.d/ -name "*nm-group"|sort
/etc/rc.d/init.d/nm-group
/etc/rc.d/rc0.d/K92nm-group
/etc/rc.d/rc1.d/K92nm-group
/etc/rc.d/rc2.d/K92nm-group
/etc/rc.d/rc3.d/K92nm-group
/etc/rc.d/rc4.d/K92nm-group
/etc/rc.d/rc5.d/K92nm-group
/etc/rc.d/rc6.d/K92nm-group
поскольку он выполнил требуемое и теперь за ненадобностью.

При необходимости его можно будет включить снова:
# chkconfig nm-group on
« Последнее редактирование: 06.06.2017 06:05:07 от Speccyfighter »

Оффлайн Антон Мидюков

  • alt linux team
  • ***
  • Сообщений: 5 183
  • antohami@
Re: Xfce c Sysv
« Ответ #349 : 06.06.2017 11:00:48 »
У нас возникло непонимание с тем, что скрипт делать должен. Я думал, что он должен добавлять в группу _nmconnect всех у кого UID>=500. Именно поэтому скрипт должен работать как служба. Чтобы тот, кого такое поведение не устраивает, мог отключить её.

Если возражений против такого поведения нет, то я могу сегодня в Сизиф отправить версию 0.3.

А хак с автоматическим отключением службы самой себя считаю вредным. Это что же получается? Пользователь включает службу, а она себя сама отключает! От такого поведения может мозг вскипеть ;-)

Оффлайн Антон Мидюков

  • alt linux team
  • ***
  • Сообщений: 5 183
  • antohami@
Re: Xfce c Sysv
« Ответ #350 : 06.06.2017 11:31:05 »
Ламерские вопросы по спеку:
1. Зачем нужно условие:
if [ $1 -eq 1 ]; then

2. Почему
/sbin/chkconfig --add nm-group
А не
/sbin/chkconfig nm-group on

Оффлайн Антон Мидюков

  • alt linux team
  • ***
  • Сообщений: 5 183
  • antohami@
Re: Xfce c Sysv
« Ответ #351 : 06.06.2017 11:48:05 »
Сделал тестовое задание 183884:
apt-repo test 183884

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: Xfce c Sysv
« Ответ #352 : 06.06.2017 13:18:17 »
У нас возникло непонимание с тем, что скрипт делать должен. Я думал, что он должен добавлять в группу _nmconnect всех у кого UID>=500. Именно поэтому скрипт должен работать как служба. Чтобы тот, кого такое поведение не устраивает, мог отключить её.

Если возражений против такого поведения нет, то я могу сегодня в Сизиф отправить версию 0.3.

:-) Возражения есть, но я смирюсь. И при первой же установке у себя выломаю:
По моему скромному, первый созданный пользовательский аккаунт, это аккаунт root. Все остальные после id=500 это аккаунты непривелигированных пользователей и выборочно кому-то из них root может делегировать часть своих прав, - например включить в группу _nmconnect.
Выключение wifi или сети, в системе с NM общесистемное. И это означает что любой непривелигированный пользователь может контролировать интерфейс. К тому же xfce многопользовательская и может держать открытыми сразу несколько аккаунтов (эта фича в сизифном gdm2.20 работает безотказно) и любой непривелигированный пользователь состоящий в группе _nmconnect в системе на sysv может изменить настройки сети, - спасибо гадскому systemd. Т.е. по уровню защищённости, Linux окажется равным где-то Windows 95.
Ноги у привычки наделять всех пользователей повышенными правами растут отсюда:
https://technet.microsoft.com/ru-ru/library/ee623984%28v=ws.10%29.aspx

А хак с автоматическим отключением службы самой себя считаю вредным. Это что же получается? Пользователь включает службу, а она себя сама отключает! От такого поведения может мозг вскипеть ;-)

Сразу после инсталляции системы, только root, владея своим аккаунтом первого созданного в системе пользователя, имеет право изменять состояние сетевых интерфейсов и настроек.
Все остальные пользователи в UNIX-подобных многопользовательских системах могут наделяться такими повышенными правами, выборочно, персонально и только руками.

Первый созданный в системе аккаунт пользователя это личная собственность root. Все остальные последующие, это рядовые непривелигированные пользователи состоящие в одной группе, - своей.
:-) Поэтому я категорически против превращения UNIX-подобной системы в сраную винду.
Но если нужно и хочется, делайте. Но если количество таких виндовых вещей превысит критическую точку, у меня Slackware недалеко лежит. Использовать потенциально опасные альты мне резона не будет.

С практической точки зрения, например:
В многопользовательском xfce пользователь 502 оставил выкачивать файл через браузер загрузка которого не может быть прервана. Но вдруг оказывается, что какой-то безмозглый урод 503 уходя, перед блокировкой своей сессии сложил сеть. Но пользователь в системе с sysv и не состоящий в группе _nmconnect в принципе этого сделать не может, - он не обладает для этого надлежащими правами. Так же как и включить сеть: сказано нельзя, значит нельзя и баста!
« Последнее редактирование: 06.06.2017 13:34:27 от Speccyfighter »

Оффлайн Антон Мидюков

  • alt linux team
  • ***
  • Сообщений: 5 183
  • antohami@
Re: Xfce c Sysv
« Ответ #353 : 06.06.2017 13:45:33 »
Ладно, будь по-вашему. С точки зрения безопасности хак с самоотключением службы оптимальный вариант. И с добавлением только пользователя 500 в группу тоже убедили. Объясните мне ещё вот это:
https://forum.altlinux.org/index.php?topic=36177.msg311683#msg311683

А то у меня служба не включается ни фига (на systemd) по вашему, только вот так:
%post
/sbin/chkconfig nm-group on
« Последнее редактирование: 06.06.2017 13:54:49 от Антон Мидюков »

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: Xfce c Sysv
« Ответ #354 : 06.06.2017 14:37:09 »
Ладно, будь по вашему. С точки зрения безопасности хак с самоотключением службы оптимальный вариант. И с добавлением только пользователя 500 в группу тоже убедили. Объясните мне ещё вот это:
https://forum.altlinux.org/index.php?topic=36177.msg311683#msg311683

А то у меня служба не включается ни фига (на systemd) по вашему, только вот так:
%post
/sbin/chkconfig nm-group on


1. Зачем нужно условие:
if [ $1 -eq 1 ]; then

https://www.altlinux.org/SpecTips/triggers
Цитировать
Определение типа операции с пакетом

1) пакет ставится в систему в первый раз

[ $1 -eq 1 ] в %post и %pre

2) пакет обновляется (удаляется старый и ставится одновременно новый)

[ $1 -eq 2 ] в %post и %pre, [ $1 -eq 1 ] в %preun и %postun

3) пакет вообще удаляется из системы

[ $1 -eq 0 ] в %preun and %postun


2. Почему
/sbin/chkconfig --add nm-group
А не
/sbin/chkconfig nm-group on

:-) Я просто взял из startup:
$ sed -n '80,87p; 119,125p' ~/RPM/SPECS/startup.spec
%post
if [ $1 -eq 1 ]; then
/sbin/chkconfig --add fbsetfont
/sbin/chkconfig --add netfs
/sbin/chkconfig --add random
/sbin/chkconfig --add rawdevices
touch /etc/firsttime.flag
fi
%preun
if [ $1 -eq 0 ]; then
/sbin/chkconfig --del fbsetfont
/sbin/chkconfig --del netfs
/sbin/chkconfig --del random
/sbin/chkconfig --del rawdevices
fi

Но да, это не принципиально,
# gpasswd -d user _nmconnect
Removing user user from group _nmconnect
# rpm -e nm-sysvinit
# rpm -Uhv --nopost /home/user/polkit-sysvinit-0.3.5/nm-sysvinit-0.2-alt1.noarch.rpm
Preparing...                            ################################################################################################# [100%]
Updating / installing...
1: nm-sysvinit-0.2-alt1                 ################################################################################################# [100%]
Running /usr/lib/rpm/posttrans-filetriggers
# find /etc/rc.d/ -name "*nm-group"|sort
/etc/rc.d/init.d/nm-group
# groups user|grep -o _nmconnect
#

и для %post в спеке можно заменить на
# /sbin/chkconfig nm-group on

главное что симлинки созданы, но сервис не отработал, -
# groups user|grep -o _nmconnect
#
# find /etc/rc.d/ -name "*nm-group"|sort
/etc/rc.d/init.d/nm-group
/etc/rc.d/rc0.d/K92nm-group
/etc/rc.d/rc1.d/K92nm-group
/etc/rc.d/rc2.d/S10nm-group
/etc/rc.d/rc3.d/S10nm-group
/etc/rc.d/rc4.d/S10nm-group
/etc/rc.d/rc5.d/S10nm-group
/etc/rc.d/rc6.d/K92nm-group


по полиси запуск сервиса сразу на первой установке запрещён:
https://www.altlinux.org/ALT_Packaging_HOWTO
Цитировать
Запускать сервис автоматически сразу при первой установке пакета не положено. (ldv@)

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: Xfce c Sysv
« Ответ #355 : 06.06.2017 15:14:49 »
А то у меня служба не включается ни фига (на systemd) по вашему, только вот так:
%post
/sbin/chkconfig nm-group on

Т.е. по какой-то причине система на systemd не может определить что пакет устанавливается в первый раз?
Отработка постинсталл скриптов через условие
if [ $1 -eq 1 ]; then
не позволяет отрабатывать постинсталл скриптам при обновлении пакета, - только при первой установке.
Суть в том, чтобы настройки выполненные системным администратором (симлинки S*, K*), после обновления пакета изменены не были.
« Последнее редактирование: 06.06.2017 15:43:39 от Speccyfighter »

dango

  • Гость
Re: Xfce c Sysv
« Ответ #356 : 06.06.2017 15:45:48 »
Народ, вы что, уже новый systemd начали писать? Х-)

Оффлайн Антон Мидюков

  • alt linux team
  • ***
  • Сообщений: 5 183
  • antohami@
Re: Xfce c Sysv
« Ответ #357 : 06.06.2017 17:40:08 »
Т.е. по какой-то причине система на systemd не может определить что пакет устанавливается в первый раз?

Нет, пакет у меня уже был установлен. А я не знал, что это условие означает, вот и выкинул. Сейчас всё вернул.

dango

  • Гость
Re: Xfce c Sysv
« Ответ #358 : 07.06.2017 06:38:55 »
Ладно, шутки шутками, но если серьезно: вы часом не умножаете ли сущности? Зачем этот скрипт превращать в сервис? У него скромная роль: добавить главного пользователя в группу _nmconnect. Все остальное на усмотрение главного пользователя. ИМХО лучшее место этому скрипту в постинсталле пакета NetworkManager. Блин, здесь хак на хаке и хаком погоняет...

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: Xfce c Sysv
« Ответ #359 : 07.06.2017 12:55:35 »
Ладно, шутки шутками, но если серьезно: вы часом не умножаете ли сущности? Зачем этот скрипт превращать в сервис? У него скромная роль: добавить главного пользователя в группу _nmconnect. Все остальное на усмотрение главного пользователя.

Здесь наши мысли полностью сходятся.
Всё началось отсюда:
https://forum.altlinux.org/index.php?topic=38864.msg311625#msg311625
С функционала для лайва.
/etc/firsttime.flag для лайва не прокатит.

ИМХО лучшее место этому скрипту в постинсталле пакета NetworkManager.

Согласен, но сегодня я уже не верю что альты станут изменять ключевые пакеты ради sysv на десктопе.

Блин, здесь хак на хаке и хаком погоняет...

:-) Ты хотел сказать, костыль на костыле и костылём погоняет? Вся эта тема изначально один сплошной костыль.
Здесь нужно просто перестать себя обманывать: сегодня альты плотно сидят под колпаком systemd.