sudo alternative para permitir que determinado usuário execute chmod de um programa

2

Eu gostaria de permitir que um determinado usuário que não possua os arquivos em um diretório execute chmod neles. Interativamente, sei que posso fazer isso configurando sudo com o (s) arquivo (s) de configuração do sudoers, e também posso definir um alias como

alias chmod='sudo chmod'

em .bashrc, .profile ou .bash_profile, para que o usuário não precise digitar sudo chmod a cada vez. Essa abordagem é interrompida se chmod não for executado a partir da linha de comandos dentro de um shell bash, mas de um programa. Como eu poderia fazer isso ainda funcionar?

O plano de fundo está em configurar Syncthing , que eu quero usar para sincronizar arquivos de diferentes usuários. Além disso, syncthing não será executado como root , mas como usuário syncuser . O usuário syncuser não tem permissões para executar chmod em arquivos que não possui, mas que ele sincronizou (permissões de leitura / gravação gerenciadas por grupos), e é aí que ele falha.

Essa situação deve ocorrer com mais freqüência. Estou bastante convencido de que existe outra solução do que executar syncthing como root , mas no momento não vejo como ...

    
por bdoering 12.04.2015 / 20:26

3 respostas

0

Quando eu tive um problema semelhante com um contexto completamente diferente, achei que o chmod estava restrito ao root. Isso é por design. Minha solução foi um trabalho de incron (inotify) [1] na pasta onde os arquivos foram armazenados. O incron (executado como root) iria chmod todos os novos arquivos para 'user: user' permitindo que ele fosse processado ainda mais.

[1] link

    
por 16.04.2015 / 06:16
0

Se você está em um Linux recente o suficiente, você pode usar o sistema de recursos para dar a sincronização a capacidade de chmod qualquer arquivo. Isso também lhe dará algumas habilidades adicionais, como alterar atributos estendidos em arquivos ou modificar o tempo de acesso de qualquer arquivo. Veja man 7 capabilities para a lista completa.

Para isso, use apenas setcap "CAP_FOWNER=EP" syncthing . Substitua syncthing pelo caminho completo para o executável se você não estiver na pasta correta.

    
por 16.04.2015 / 07:18
0

Eu encontrei o mesmo problema:

[YNQCP] 12:42:21 INFO: Puller: shortcut: chmod /some/file.name: operation not permitted

Veja também essa outra pergunta anterior sobre a questão mais geral de permitir que não-proprietários usem chmod e chown .

No meu caso, temos um único computador com vários usuários, todos com direitos de sudo. Eles compartilham uma única pasta com várias subpastas que devem ser sincronizadas automaticamente e estar disponíveis para todos. Eu chmod 777 a pasta principal e as subpastas, mas syncthing ainda reclama e tenta chmod os arquivos por algum motivo (por quê?).

Eu usei a solução hack de executar syncthing como root. Isso funciona bem, mas produz:

Estapareceserumaalternativamelhordoquetentarmexercomasconfiguraçõesdepermissões,demodoquesyncthingtenhapermissãoparachmodararquivosquenãosãodesuapropriedade.

Umasoluçãoalternativaéfazerumusuáriosincronizareconcederapropriedadedosarquivosefazercomqueoutrososusemviachmod777.

Problematambémrelatadoemoutrolugar:

por 10.08.2017 / 19:17