<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>44363</bug_id>
          
          <creation_ts>2022-11-18 15:26:49 +0300</creation_ts>
          <short_desc>Отображает кнопку Загрузить, не смотря на отсутствие прав</short_desc>
          <delta_ts>2022-11-18 15:26:49 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>Branch p10</product>
          <component>pve-manager</component>
          <version>не указана</version>
          <rep_platform>x86_64</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P5</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Evgeny Shesteperov">alimektor</reporter>
          <assigned_to name="Alexey Shabalin">shaba</assigned_to>
          
          
          <qa_contact name="qa-p10@altlinux.org">qa-p10</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>217631</commentid>
    <comment_count>0</comment_count>
    <who name="Evgeny Shesteperov">alimektor</who>
    <bug_when>2022-11-18 15:26:49 +0300</bug_when>
    <thetext>Версия
======

pve-manager-7.0.11-alt5

Дистрибутивы
============

* p10-server-10-x86-64

Предусловия
===========

Развернут PVE из трёх нод (pve01, pve02, pve03) со следующими хранилищами:

# cat /etc/pve/storage.cfg

dir: mycephfs
    path /mnt/mycephfs
    content snippets,iso,vztmpl,backup,images,rootdir
    prune-backups keep-last=1
    shared 1

drbd: drbd1001
    resourcegroup defaultpool
    content rootdir,images
    controller pve01

rbd: rbd
    content images,rootdir
    krbd 0
    pool rbd

dir: local
    path /var/lib/vz
    content snippets,iso,vztmpl,images,backup,rootdir
    prune-backups keep-all=1

dir: mystorage
    path /mnt/mycephfs/template/mystorage
    content vztmpl,rootdir,backup,images,iso,snippets
    prune-backups keep-all=1
    shared 1

dir: teststorage
    path /mnt/mycephfs/template/teststorage
    content iso,snippets,vztmpl,rootdir,backup,images
    prune-backups keep-all=1
    shared 1

Примонтирован CEPH:

# cat /etc/fstab | grep ceph
192.168.0.1,192.168.0.2,192.168.0.3:/     /mnt/mycephfs    ceph    name=admin,secretfile=/etc/ceph/admin.secret,noatime,_netdev,x-systemd.automount    0       0

Существует системный пользователь test:

uid=500(test) gid=500(test) группы=10(wheel),14(uucp),19(proc),22(cdrom),71(floppy),80(cdwriter),81(audio),83(radio),100(users),481(vboxusers),467(scanner),466(xgrp),440(camera),488(video),483(fuse),455(vboxadd),454(vboxsf),500(test)

Шаги воспроизведения
====================

1. Создать тестовую группу: Датацентр → Разрешения → Группы → Создать → задать имя как testgroup.
2. Создать пользователя test@pam: Датацентр → Разрешения → Пользователи → Добавить → заполнить следующие параметры
    1. Имя пользователя: test
    2. Область: Linux PAM standard authentication
    3. Группа: testgroup
→ нажать кнопку Добавить.
3. Добавить роль TestAudit: Датацентр → Разрешения → Роли → Создать → заполнить следующие параметры
    1. Имя: TestAudit
    2. Привелегии: Sys.Audit, Datastore.Audit
4. Добавить роль TestAllocateTemplate: Датацентр → Разрешения → Роли → Создать → заполнить следующие параметры
    1. Имя: TestAllocateTemplate
    2. Привелегии: Datastore.AllocateSpace, Datastore.AllocateTemplate, Datastore.Audit
5. Добавить разрешение: Датацентр → Разрешения → Добавить → Разрешения группы → заполнить следующие параметры
    1. Путь: /
    2. Группа: testgroup
    3. TestAudit
    4. Стоит галочка Распространять.
6. Добавить разрешение: Датацентр → Разрешения → Добавить → Разрешения группы → заполнить следующие параметры
    1. Путь: /storage
    2. Группа: testgroup
    3. TestAudit
    4. Стоит галочка Распространять.
7. Добавить разрешение: Датацентр → Разрешения → Добавить → Разрешения группы → заполнить следующие параметры
    1. Путь: /storage/mystorage
    2. Группа: testgroup
    3. TestAllocateTemplate
    4. Стоит галочка Распространять.
8. Убедиться, что в итоге у пользователя test такие права:

# pveum user permissions test@pam
┌────────────────────┬────────────────────────────────┐
│ ACL path           │ Permissions                    │
╞════════════════════╪════════════════════════════════╡
│ /                  │ Datastore.Audit (*)            │
│                    │ Sys.Audit (*)                  │
├────────────────────┼────────────────────────────────┤
│ /access            │ Datastore.Audit (*)            │
│                    │ Sys.Audit (*)                  │
├────────────────────┼────────────────────────────────┤
│ /access/groups     │ Datastore.Audit (*)            │
│                    │ Sys.Audit (*)                  │
├────────────────────┼────────────────────────────────┤
│ /nodes             │ Datastore.Audit (*)            │
│                    │ Sys.Audit (*)                  │
├────────────────────┼────────────────────────────────┤
│ /pools             │ Datastore.Audit (*)            │
│                    │ Sys.Audit (*)                  │
├────────────────────┼────────────────────────────────┤
│ /storage           │ Datastore.Audit (*)            │
│                    │ Sys.Audit (*)                  │
├────────────────────┼────────────────────────────────┤
│ /storage/mystorage │ Datastore.AllocateSpace (*)    │
│                    │ Datastore.AllocateTemplate (*) │
│                    │ Datastore.Audit (*)            │
├────────────────────┼────────────────────────────────┤
│ /vms               │ Datastore.Audit (*)            │
│                    │ Sys.Audit (*)                  │
└────────────────────┴────────────────────────────────┘

9. Зайти в веб-интерфейс, залогинится под пользователем test.
10. Перейти по Датацентр → pve01 → teststorage → ISO Images.
11. Проверить доступность кнопки Загрузить.

Ожидаемый результат: Кнопка Загрузить находится в неактивном состоянии (её невозможно нажать).

Фактический результат: Кнопка Загрузить находится в активном состоянии (её возможно нажать).

То есть право Datastore.AllocateTemplate присвоено /storage/mystorage, но при этом доступно /storage/teststorage. При попытке загрузить образ на teststorage, показывается сообщение об ошибке:

    Error &apos;0&apos; occurred while receiving the document</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>