Bug 44363 - Отображает кнопку Загрузить, не смотря на отсутствие прав
Summary: Отображает кнопку Загрузить, не смотря на отсутствие прав
Status: NEW
Alias: None
Product: Branch p10
Classification: Unclassified
Component: pve-manager (show other bugs)
Version: не указана
Hardware: x86_64 Linux
: P5 normal
Assignee: Alexey Shabalin
QA Contact: qa-p10@altlinux.org
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2022-11-18 15:26 MSK by Evgeny Shesteperov
Modified: 2022-11-18 15:26 MSK (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Evgeny Shesteperov 2022-11-18 15:26:49 MSK
Версия
======

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 '0' occurred while receiving the document