Автор Тема: Беспарольное монтирование дисков в Кентавре.  (Прочитано 4211 раз)

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Теперь, если пользователь состоит в группе wheel с него не будут требовать пароль на монтирование.
В чём промах-то?
Исправил: http://forum.altlinux.org/index.php/topic,34683.msg256263.html#msg256263

Опять и ещё раз:
Без веской причины добавлять пользователя в группу wheel, это хреновая затея.
На домашних компьютерах может быть зарегистрирован не один пользователь, и домашние пользователи читая советы, не сильно часто вдаются в детали, а слепо копируют рекомендации.
Там Skull подсказывал на линуксфоруме:
Цитировать
для залогиненых в графике пользователей (группа xgrp)

При этом, ни явно, ни потенциально, нет необходимости повышать права пользователя.
С учётом того, что беспарольное автомонтирование нужно гуёвому менеджеру. И больше ничему.
И только для пользователей прошедших авторизацию в Х-сах.
По вашему варианту: все пользователи захотевшие беспарольного монтирования, обязаны быть в группе wheel.
Упомянуто, потому что судя по всему планируется перенос на вики.

Вариант рулеза v0.1 с через xgrp от Шигорина, по мнению моей скромной персоны, более правильный и безопасный, поскольку разруливается через subject.isInGroup("xgrp") для локальных fs и медиадевайсов двумя правилами в одном рулезе монтирования и не требует добавления пользователя в группу wheel.

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

  • alt linux team
  • ***
  • Сообщений: 5 182
  • antohami@
Там Skull подсказывал на линуксфоруме:
Цитировать (выделенное)

    для залогиненых в графике пользователей (группа xgrp)


При этом, ни явно, ни потенциально, нет необходимости повышать права пользователя.

Группа xgrp только в Симпли, по-умолчанию, есть. Ладно, поправил.

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Там Skull подсказывал на линуксфоруме:
Цитировать (выделенное)

    для залогиненых в графике пользователей (группа xgrp)

При этом, ни явно, ни потенциально, нет необходимости повышать права пользователя.

Группа xgrp только в Симпли, по-умолчанию, есть.

По этому ключу создаётся системная группа:
# man groupadd|col -bfx|sed -n '9,10p;53,57p'
       groupadd [options] group

       -r, --system
           Create a system group.

           The numeric identifiers of new system groups are choosen in the SYS_GID_MIN-SYS_GID_MAX
           range, defined in login.defs, instead of GID_MIN-GID_MAX.

Проще говоря, создаётся группа, идентификатор которой меньше 500 (в альтах, но в каких-то других Линукс, меньше 1000).

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Ладно, поправил.

Чуть глубже о необходимости пользователей в wheel.

Мне пока что увиделась только одна причина по которой все пользователи должны быть в группе wheel:
После того как дебил Поттеринг прошёлся по Линукс как слон по посудной лавке, корректно работавший xfsm-shutdown-helper на системах с sysv в p6, на p7 в sysv оказался сломанным:
http://forum.altlinux.org/index.php/topic,34428.msg251790.html#msg251790
http://forum.altlinux.org/index.php/topic,34428.msg251792.html#msg251792
И он в альтах сломан до сих пор в sysv, но объезжается хаком.

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

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

  • alt linux team
  • ***
  • Сообщений: 5 182
  • antohami@
Надо будет на вики всё подробно описать, штука востребованная ;-)

Сделал страничку на Вики: http://www.altlinux.org/Polkit
« Последнее редактирование: 12.06.2015 07:53:38 от Антон Мидюков »

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 361
  • Учиться .... Телепатами не рождаются, ими ....
Цитировать
useradd -G xgrp имя_пользователя
Насколько я помню, эта команда выкинет пользователя из всех групп, в которых он состоял.

Лучше
Цитировать
gpasswd -a имя_пользователя xgrp

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Сделал страничку на Вики: http://www.altlinux.org/Polkit

В отношении NM, здесь больше соглашусь с gvy, у которого:
$ cat 60-sysvinit-nm.rules
polkit.addRule(function(action, subject) {
    if (subject.isInGroup("_nmconnect") && (action.id.indexOf("org.freedesktop.NetworkManager.") == 0 )) {
        return polkit.Result.YES;
    }
});

Первое:
NM это не только settings:
# grep -rH org.freedesktop.NetworkManager /usr/share/polkit-1/|cut -f 3- -d ' '
<action id="org.freedesktop.NetworkManager.enable-disable-network">
<action id="org.freedesktop.NetworkManager.sleep-wake">
<action id="org.freedesktop.NetworkManager.enable-disable-wifi">
<action id="org.freedesktop.NetworkManager.enable-disable-wwan">
<action id="org.freedesktop.NetworkManager.enable-disable-wimax">
<action id="org.freedesktop.NetworkManager.network-control">
<action id="org.freedesktop.NetworkManager.wifi.share.protected">
<action id="org.freedesktop.NetworkManager.wifi.share.open">
<action id="org.freedesktop.NetworkManager.settings.modify.own">
<action id="org.freedesktop.NetworkManager.settings.modify.system">
<action id="org.freedesktop.NetworkManager.settings.modify.hostname">
И у gvy привязка идёт по маске.
Либо если разрешать выборочно, то для нужных и часто используемых action писать своё полиси.

Второе:
gvy'евый рузез завязан на группе _nmconnect (наличие в группе разрешает редактировать настройки).
А запуск nm-connection-editor, особенно на слабых машинках, при наличии nmcli, может быть и из 'runlevel 3'. Т.е. вариант с _nmconnect авторизации в Х-сах не требует. Но требует состоять в группе _nmconnect.

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

  • alt linux team
  • ***
  • Сообщений: 5 182
  • antohami@
В отношении NM, здесь больше соглашусь с gvy, у которого:

А вы внимательнее прочитайте содержимое org.freedesktop.NetworkManager.policy
Запрос пароля установлен только для org.freedesktop.NetworkManager.settings.modify.system и org.freedesktop.NetworkManager.settings.modify.hostname
Имхо, разрешать менять имя хоста без запроса пароля небезопасно.

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Имхо, разрешать менять имя хоста без запроса пароля небезопасно.

Если пользователь не в _nmcoonect, он вообще ничего не сможет сделать.

В отношении NM, здесь больше соглашусь с gvy, у которого:

А вы внимательнее прочитайте содержимое org.freedesktop.NetworkManager.policy
Запрос пароля установлен только для org.freedesktop.NetworkManager.settings.modify.system и org.freedesktop.NetworkManager.settings.modify.hostname

:-) Да мне и читать не надо, если как у вас:
# cat /etc/polkit-1/rules.d/60-sysvinit-nm.rules
polkit.addRule(function(action, subject) {
    if (subject.isInGroup("_nmconnect") && (action.id.indexOf("org.freedesktop.NetworkManager.settings.modify.system") == 0 )) {
        return polkit.Result.YES;
    }
});
$ nmcli nm permissions
РАЗРЕШЕНИЕ                                                ЗНАЧЕНИЕ 
org.freedesktop.NetworkManager.enable-disable-network     нет       
org.freedesktop.NetworkManager.enable-disable-wifi        нет       
org.freedesktop.NetworkManager.enable-disable-wwan        нет       
org.freedesktop.NetworkManager.enable-disable-wimax       нет       
org.freedesktop.NetworkManager.sleep-wake                 нет       
org.freedesktop.NetworkManager.network-control            нет       
org.freedesktop.NetworkManager.wifi.share.protected       нет       
org.freedesktop.NetworkManager.wifi.share.open            нет       
org.freedesktop.NetworkManager.settings.modify.system     да       
org.freedesktop.NetworkManager.settings.modify.own        нет       
org.freedesktop.NetworkManager.settings.modify.hostname   нет       
Ни wi-fi, ни сеть отключить нельзя.
Всё что не разрешено, деактивируется, и опция становится неактивной.


Или:
# cat /etc/polkit-1/rules.d/60-sysvinit-nm.rules
polkit.addRule(function(action, subject) {
    if (subject.isInGroup("_nmconnect") && (action.id.indexOf("org.freedesktop.NetworkManager.settings.modify.system") == 0 )) {
        return polkit.Result.YES;
    }
});


polkit.addRule(function(action, subject) {
    if (subject.isInGroup("_nmconnect") && (action.id.indexOf("org.freedesktop.NetworkManager.enable-disable-network") == 0 )) {
        return polkit.Result.YES;
    }
});


polkit.addRule(function(action, subject) {
    if (subject.isInGroup("_nmconnect") && (action.id.indexOf("org.freedesktop.NetworkManager.enable-disable-wifi") == 0 )) {
        return polkit.Result.YES;
    }
});

$ nmcli nm permissions
РАЗРЕШЕНИЕ                                                ЗНАЧЕНИЕ 
org.freedesktop.NetworkManager.enable-disable-network     да       
org.freedesktop.NetworkManager.enable-disable-wifi        да       
org.freedesktop.NetworkManager.enable-disable-wwan        нет       
org.freedesktop.NetworkManager.enable-disable-wimax       нет       
org.freedesktop.NetworkManager.sleep-wake                 нет       
org.freedesktop.NetworkManager.network-control            нет       
org.freedesktop.NetworkManager.wifi.share.protected       нет       
org.freedesktop.NetworkManager.wifi.share.open            нет       
org.freedesktop.NetworkManager.settings.modify.system     да       
org.freedesktop.NetworkManager.settings.modify.own        нет       
org.freedesktop.NetworkManager.settings.modify.hostname   нет       
Совсем другой компот.
И вот теперь можно:
$ nmcli nm wifi
WIFI     
включён   
$ nmcli nm wifi off
$ nmcli nm wifi
WIFI     
отключён 
$ nmcli nm wifi on
$ nmcli nm wifi
WIFI     
включён   

Иначе, если не разрешать enable-disable-wifi:
$ nmcli nm wifi
WIFI     
включён   
$ nmcli nm wifi off
$ nmcli nm wifi
WIFI     
включён   


К тому же wiki не объясняет откуда берутся эти action id, где и как их посмотреть:
# grep -rH org.freedesktop.udisks2.filesystem-mount-system /usr/share/polkit-1/
/usr/share/polkit-1/actions/org.freedesktop.udisks2.policy:  <action id="org.freedesktop.udisks2.filesystem-mount-system">
# grep -rH org.freedesktop.NetworkManager /usr/share/polkit-1/
/usr/share/polkit-1/actions/org.freedesktop.NetworkManager.policy:  <action id="org.freedesktop.NetworkManager.enable-disable-network">
/usr/share/polkit-1/actions/org.freedesktop.NetworkManager.policy:  <action id="org.freedesktop.NetworkManager.sleep-wake">
/usr/share/polkit-1/actions/org.freedesktop.NetworkManager.policy:  <action id="org.freedesktop.NetworkManager.enable-disable-wifi">
/usr/share/polkit-1/actions/org.freedesktop.NetworkManager.policy:  <action id="org.freedesktop.NetworkManager.enable-disable-wwan">
/usr/share/polkit-1/actions/org.freedesktop.NetworkManager.policy:  <action id="org.freedesktop.NetworkManager.enable-disable-wimax">
/usr/share/polkit-1/actions/org.freedesktop.NetworkManager.policy:  <action id="org.freedesktop.NetworkManager.network-control">
/usr/share/polkit-1/actions/org.freedesktop.NetworkManager.policy:  <action id="org.freedesktop.NetworkManager.wifi.share.protected">
/usr/share/polkit-1/actions/org.freedesktop.NetworkManager.policy:  <action id="org.freedesktop.NetworkManager.wifi.share.open">
/usr/share/polkit-1/actions/org.freedesktop.NetworkManager.policy:  <action id="org.freedesktop.NetworkManager.settings.modify.own">
/usr/share/polkit-1/actions/org.freedesktop.NetworkManager.policy:  <action id="org.freedesktop.NetworkManager.settings.modify.system">
/usr/share/polkit-1/actions/org.freedesktop.NetworkManager.policy:  <action id="org.freedesktop.NetworkManager.settings.modify.hostname">
# rpm -qf /usr/share/polkit-1/actions/org.freedesktop.udisks2.policy
udisks2-2.1.1-alt1
# rpm -qf /usr/share/polkit-1/actions/org.freedesktop.NetworkManager.policy
NetworkManager-0.9.8.10-alt1.M70P.2.git20141027
« Последнее редактирование: 13.06.2015 02:33:06 от Speccyfighter »

Оффлайн sasa

  • Участник
  • *
  • Сообщений: 1 152
по wiki:
# touch /etc/polkit-1/rules/99-udisk2_mount.rules 99-networkmanager.rules
touch: невозможно выполнить touch для «/etc/polkit-1/rules/99-udisk2_mount.rules»: Нет такого файла или каталога
там, кажись, надо писать /etc/polkit-1/rules.d

и второй файл создается в каталоге /root

в кентавре группа xgrp тоже уже была.

в остальном все работает, спасибо!!
« Последнее редактирование: 13.06.2015 01:18:01 от sasa »
Компьютер - это лопата, к нему мозги нужны (с)

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
по wiki:
# touch /etc/polkit-1/rules/99-udisk2_mount.rules 99-networkmanager.rules
touch: невозможно выполнить touch для «/etc/polkit-1/rules/99-udisk2_mount.rules»: Нет такого файла или каталога
там, кажись, надо писать /etc/polkit-1/rules.d

Там ошибка в пути, это выброс не из терминала.

и второй файл создается в каталоге /root

Должен указываться полный путь к файлу, иначе файл создаётся в текущем каталоге, который может показать команда pwd.

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Кстати, - упс-с.
Какое интересное имя pid-файла:
$ nmcli nm sleep true
Ошибка в задержке: Rejected send message, ... (uid=0 pid=2385 comm="/usr/sbin/NetworkManager --pid-file=/var/run/Netwo")
Несмотря на разрешение, в спячку уходить не хочет.

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

  • alt linux team
  • ***
  • Сообщений: 5 182
  • antohami@
$ nmcli nm permissions

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

« Последнее редактирование: 13.06.2015 10:27:04 от Антон Мидюков »

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
$ nmcli nm permissions

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

:-) Вам на словах объяснить или культурно? (Не вам, а по поводу)

Культурно:
# tune2fs -l $(mount|grep ' / '|cut -f 1 -d ' ')|grep -i create
Filesystem created:       Sat Nov 15 21:19:10 2014
$ ck-list-sessions|grep active
active = TRUE
$ ps -eo args|grep dm
/usr/sbin/rundm /dev/tty1 /dev/tty2 /dev/tty3 /dev/tty4 /dev/tty5 /dev/tty6 --
/usr/sbin/gdm-binary -nodaemon
/usr/sbin/gdm-binary -nodaemon
/usr/bin/X :0 -audit 0 -auth /var/lib/gdm/:0.Xauth -nolisten tcp vt7
$ rpm -qf /sbin/init
sysvinit-2.88-alt4

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

  • alt linux team
  • ***
  • Сообщений: 5 182
  • antohami@
:-) Вам на словах объяснить или культурно? (Не вам, а по поводу)

Не догоняю. То, что у вас sysvinit я в курсе. Но NetworkManager-0.9.8.10-alt1.M70P.2.git20141027 в стартеркитах, как и у вас. И именно в этом пакете находится файл /usr/share/polkit-1/actions/org.freedesktop.NetworkManager.policy Но мне не понятно почему содержимое этого файла у вас отличается от содержимого файла стартеркитов? У вас на sysvinit какой-то другой NetworkManager?