Acontece que, embora eu tenha criado esse grupo e adicionado a ele há vários dias, e isso era o que eu achava uma nova conexão ssh, não era realmente. Devido ao uso do recurso de multiplexação de conexão do OpenSSH ( ControlMaster
/ ControlPath
/ etc.), Eu estava realmente logando em uma conexão que tinha ~ 10 dias, então minha sessão (processos) não tinha o novo grupo configurado. Eu confirmei isso com id
.
Depois de fazer login via ssh -o ControlPath=none HOST
, id
confirma que minha sessão tem o grupo git-books
e o chmod g+s
funciona.
Quanto ao motivo pelo qual isso não deu um erro de permissão negada, parece que o padrão requer esse comportamento para arquivos e permite que implementações ignorem os bits:
If the calling process does not have appropriate privileges, and if the group ID of the file does not match the effective group ID or one of the supplementary group IDs and if the file is a regular file, bit S_ISGID (set-group-ID on execution) in the file's mode shall be cleared upon successful return from chmod().
Additional implementation-defined restrictions may cause the S_ISUID and S_ISGID bits in mode to be ignored.
Single Unix Spec v4 2018 edition, chmod. http://pubs.opengroup.org/onlinepubs/9699919799/functions/chmod.html (registration may be required).
Provavelmente, retornar um erro seria meramente sã, não em conformidade ☹.