Всем доброго. Суть подробнее: В системе alt-p8-xfce-20190312-i586 на xfce с polkit agent, непревилегированый пользователь, # groups tester tester : tester находясь в # who | grep tester tester tty2 2019-05-23 15:37 (localhost) игнорируя запрет системы # ls -1 /etc/polkit-1/rules.d/ 50-default.rules 60-mount-other-seat.rules.bak 60-mount-other-seat.rules.bak0 60-system-mount.rules.bak # sed -n '171p; 239,243p' /usr/share/polkit-1/actions/org.freedesktop.UDisks2.policy <action id="org.freedesktop.udisks2.filesystem-mount-other-seat"> <defaults> <allow_any>auth_admin</allow_any> <allow_inactive>auth_admin</allow_inactive> <allow_active>auth_admin_keep</allow_active> </defaults> накопитель usb # ls -l /dev/disk/by-id/ | grep sdc lrwxrwxrwx 1 root root 9 май 23 11:54 usb-Multiple_Card_Reader_058F63666433-0:0 -> ../../sdc lrwxrwxrwx 1 root root 10 май 23 11:54 usb-Multiple_Card_Reader_058F63666433-0:0-part1 -> ../../sdc1 lrwxrwxrwx 1 root root 10 май 23 11:54 usb-Multiple_Card_Reader_058F63666433-0:0-part2 -> ../../sdc2 lrwxrwxrwx 1 root root 10 май 23 11:54 usb-Multiple_Card_Reader_058F63666433-0:0-part3 -> ../../sdc3 может примонтировать # mount | grep tester /dev/sdc1 on /run/media/tester/ALT regular-cinnamon_x86_64 type iso9660 (ro,nosuid,nodev,relatime,nojoliet,check=s,map=n,blocksize=2048,uid=501,gid=501,dmode=500,fmode=400,uhelper=udisks2) /dev/sdc1 on /var/run/media/tester/ALT regular-cinnamon_x86_64 type iso9660 (ro,nosuid,nodev,relatime,nojoliet,check=s,map=n,blocksize=2048,uid=501,gid=501,dmode=500,fmode=400) И из-за этой уязвимости, невозможно организовать распределение прав доступа для other-seat в рамках группы storage. При этом следует учитывать что, это касается только устройств other-seat. Поскольку системные устройства обрабатываются верно (в отличие от other-seat): # head -n 11 vcs2.txt [tester@localhost ~]$ ls -l /dev/disk/by-id/ | grep sda11; udisksctl mount -b /dev/sda11 lrwxrwxrwx 1 root root 11 май 23 11:48 ata-WDC_WD5000LPCX-24C6HT0_WD-WXC1A45NS2D4-part11 -> ../../sda11 lrwxrwxrwx 1 root root 11 май 23 11:48 wwn-0x50014ee605c946d5-part11 -> ../../sda11 ==== AUTHENTICATING FOR org.freedesktop.udisks2.filesystem-mount-system ==== Для монтирования WDC WD5000LPCX-24C6HT0 (/dev/sda11) требуется подтверждение подлинности пользователя Authenticating as: altlinux Password: polkit-agent-helper-1: pam_authenticate failed: Authentication failure ==== AUTHENTICATION FAILED ==== Error mounting /dev/sda11: GDBus.Error:org.freedesktop.UDisks2.Error.NotAuthorized: Not authorized to perform operation [tester@localhost~]$ в соответствии с запрошенным действием и запросом на авторизацию # sed -n '92p; 163,167p' /usr/share/polkit-1/actions/org.freedesktop.UDisks2.policy <action id="org.freedesktop.udisks2.filesystem-mount-system"> <defaults> <allow_any>auth_admin</allow_any> <allow_inactive>auth_admin</allow_inactive> <allow_active>auth_admin_keep</allow_active> </defaults> Следуя правильному алгоритму, udiskctl в tty для непревилегированного, должен был задействовать экшн org.freedesktop.udisks2.filesystem-mount-other-seat который потребовал бы ввода пароля одного из wheel. Но по моим предположениям, косвенным анализом, он при монтировании флешки в tty, задействовал экшн org.freedesktop.udisks2.filesystem-mount который в <allow_active>yes</allow_active> by defaults. Это правило: https://forum.altlinux.org/index.php?topic=42293.msg335528#msg335528 блокирует эту уязвимость, безусловно запрещая всем монтировать флешки. Но здесь первое правило https://forum.altlinux.org/index.php?topic=42293.msg335529#msg335529 блокирует уязвимость, разрешая монтировать только wheel и ближе к правильному алгоритму по-умолчанию. Хоть и не решает проблему в целом. И эта уязвимость мешает организовать распределение прав доступа по группе storage для other-seat. Требуется: Заставить udisksctl использовать экшн org.freedesktop.udisks2.filesystem-mount-other-seat при монтировании устройств other-seat, - извлекаемых устройств. Чем отличаются системные устройства от подключенных в другое место: http://storaged.org/doc/udisks2-api/latest/udisks-polkit-actions.html Посмотрел на свежий 1.3.2/slackware-live-xfce-current.iso. Всё как в альтах, только наоборот: В tty у непревилегированного требует пароль root, но в X-сах, монтирование флешки проходит на ура, несмотря на auth_admin_keep. Проверил на devuan ascii в toram. Поведение такое же как и в slackware-xfce-current-live с toram.
Ошибка также воспроизводится и в p9/branch Уязвимость в системах на udisks2: Непревилегированный пользователь может смонтировать накопитель usb-flash. # cat /etc/os-release NAME="starter kit" VERSION="p9 (Hypericum)" ID=altlinux VERSION_ID=p9 PRETTY_NAME="ALT Starterkit (Hypericum)" ANSI_COLOR="1;33" CPE_NAME="cpe:/o:alt:starterkit:p9" HOME_URL="http://en.altlinux.org/starterkits" BUG_REPORT_URL="https://bugs.altlinux.org/" # groups tester tester : tester # who | grep tester tester tty3 2019-05-26 19:35 (localhost) tester :1 2019-05-26 19:29 (:1) # ls -l /etc/polkit-1/rules.d/ итого 1 -rw-r--r-- 1 root root 326 апр 26 11:40 50-default.rules # sed -n '173p; 244,248p' /usr/share/polkit-1/actions/org.freedesktop.UDisks2.policy <action id="org.freedesktop.udisks2.filesystem-mount-other-seat"> <defaults> <allow_any>auth_admin</allow_any> <allow_inactive>auth_admin</allow_inactive> <allow_active>auth_admin_keep</allow_active> </defaults> # ls -l /dev/disk/by-id/ | grep sdc lrwxrwxrwx 1 root root 9 мая 26 2019 usb-TOSHIBA_TransMemory_756962663EF9CCC0BE129539-0:0 -> ../../sdc lrwxrwxrwx 1 root root 10 мая 26 2019 usb-TOSHIBA_TransMemory_756962663EF9CCC0BE129539-0:0-part1 -> ../../sdc1 lrwxrwxrwx 1 root root 10 мая 26 2019 usb-TOSHIBA_TransMemory_756962663EF9CCC0BE129539-0:0-part2 -> ../../sdc2 # mount | grep tester /dev/sdc2 on /run/media/tester/alt-live-storage type ext4 (rw,nosuid,nodev,relatime,block_validity,delalloc,barrier,user_xattr,acl,uhelper=udisks2) # cat vcs3-p9.txt Hello friend, say `altlinux' to log in at tty3 localhost login: tester Password: [tester@localhost ~]$ udisksctl mount -b /dev/sdc1 Mounted /dev/sdc1 at /run/media/tester/ALT p8 xfce_i586. [tester@localhost ~]$ [tester@localhost ~]$ groups tester [tester@localhost ~]$ [tester@localhost ~]$ udisksctl mount -b /dev/sda11 ==== AUTHENTICATING FOR org.freedesktop.udisks2.filesystem-mount-system ==== Для монтирования WDC WD5000LPCX-24C6HT0 (/dev/sda11) требуется подтверждение подлинности пользователя Authenticating as: altlinux Password: polkit-agent-helper-1: pam_authenticate failed: Authentication failure ==== AUTHENTICATION FAILED ==== Error mounting /dev/sda11: GDBus.Error:org.freedesktop.UDisks2.Error.NotAuthorized: Not authorized to perform operation # cat vcs3-p9.txt Hello friend, say `altlinux' to log in at tty3 localhost login: tester Password: [tester@localhost ~]$ udisksctl mount -b /dev/sdc1 Mounted /dev/sdc1 at /run/media/tester/ALT p8 xfce_i586. [tester@localhost ~]$ [tester@localhost ~]$ groups tester ... Но это не касается системных устройств с HintSystem: true Здесь права доступа обрабатываются верно: # cat vcs3-p9.txt Hello friend, say `altlinux' to log in at tty3 localhost login: tester Password: ... [tester@localhost ~]$ udisksctl mount -b /dev/sda11 ==== AUTHENTICATING FOR org.freedesktop.udisks2.filesystem-mount-system ==== Для монтирования WDC WD5000LPCX-24C6HT0 (/dev/sda11) требуется подтверждение подлинности пользователя Authenticating as: altlinux Password: polkit-agent-helper-1: pam_authenticate failed: Authentication failure ==== AUTHENTICATION FAILED ==== Error mounting /dev/sda11: GDBus.Error:org.freedesktop.UDisks2.Error.NotAuthorized: Not authorized to perform operation
> Следуя правильному алгоритму, udiskctl в tty для непревилегированного, должен > был задействовать экшн org.freedesktop.udisks2.filesystem-mount-other-seat > который потребовал бы ввода пароля одного из wheel. Правильно ли я понял, что Вы считаете, что сессия в X и tty2 это разные seats? Физически, это не так: я, например, в X, и в tty2 нахожусь за одним и тем же монитором и клавиатурой. logind тоже так считает: $ loginctl list-sessions SESSION UID USER SEAT TTY 3 500 iv seat0 37 503 test seat0 tty2 2 sessions listed. Имя пользователя не имеет значения. Вы уверены, что у вас правда несколько seats? Как Вы этого добились?