Bug 36144

Summary: Неочевидная работа girar acl replace и отсутствие внятной справки
Product: Infrastructure Reporter: Aleksei Nikiforov <darktemplaralt>
Component: girarAssignee: placeholder <placeholder>
Status: NEW --- QA Contact: Andrey Cherepanov <cas>
Severity: normal    
Priority: P3 CC: glebfm, ldv
Version: unspecified   
Hardware: all   
OS: Linux   

Description Aleksei Nikiforov 2019-02-20 18:36:28 MSK
Справка girar acl:

$ ssh girar acl --help
Usage: girar-acl --list
   or: girar-acl <repository> [{<package>|@<group>} {check|show}]
   or: girar-acl <repository> [{<package>|@<group>} {add|del|leader|replace} {<login>|@<group>}...]
   or: girar-acl <repository>
Valid repositories are: c7 c7.1 c8 c8.1 icarus p7 p8 sisyphus t7
If no package is given, read commands from stdin, one command per line.
See http://www.altlinux.org/Incoming/acl for details.


Справка показывает команду replace, но не объясняет что данная команда делает. И указано, что принимается один или более аргументов для списка acl.

Из этого можно сделать вывод о том, что команда replace заменяет acl пакета на указанный список acl, поскольку она принимает список аргументов неопределённой длины.


$ ssh girar acl sisyphus filezilla replace darktemplar @everybody
< filezilla replace darktemplar @everybody
> OK: filezilla: @nobody
girar-acl: 1 command(s) queued

Результат:
https://lists.altlinux.org/pipermail/sisyphus-incominger/2019-February/518957.html

filezilla: "darktemplar @qa" -> "@nobody"

Это явно не то, чего ожидалось.

Только при следующем вызове удаётся получить более внятную справку:
$ ssh girar acl sisyphus libfilezilla replace 
< libfilezilla replace 
> USAGE: <package|@group> replace <old-owner> <new-owner>

И то, для этого требуется, чтобы права на такие изменения были, иначе вместо справки будет сообщение об ошибке.

$ ssh girar acl sisyphus filezilla replace 
< filezilla replace 
> ERROR: filezilla replace: filezilla: Permission denied, only @nobody is allowed to change this acl

Я считаю, что либо должна быть доступна более внятная справка по вызову --help, либо поведение должно быть более очевидным.

Есть в конце справки и неприметная ссылка на "детали" в wiki, где неожиданно детали противоречат краткой справке (команда leader принимает ровно один аргумент, команда replace - ровно два аргумента, а не переменное количество).


Хоть это и отдельная проблема, но также наличие данной ошибки вызывает вопросы:
$ ssh girar acl sisyphus filezilla add darktemplar
< filezilla add darktemplar
> ERROR: filezilla add: filezilla: Permission denied, only @nobody is allowed to change this acl

Обойти, конечно, можно...
Comment 1 Aleksei Nikiforov 2019-02-21 10:07:14 MSK
Как вариант, если нельзя менять текущую работу команды acl replace, можно сделать команду, например, acl set {<login>|@<group>} [...], которая устанавливала бы acl в указанное значение, если для этого достаточно прав и список acl является корректным.