permissões do script para alterar as permissões?

1

Eu tenho uma VM VMWare que acessa diretamente alguns discos. Para executar (sem executar o vmware como su, que tem seus próprios problemas), eu preciso alterar a propriedade dos dispositivos. Eu fiz isso manualmente usando o Nemo , então eu sei o que precisa ser feito.

Escrevendo um script de shell para fazer isso, escrevi

chown john:john /dev/disk/by-id/blahblah  /dev/anotherblah  /dev/lastoneblah

Salvei-o como um arquivo drive-owner , defino o bit de execução, depois, em um shell de raiz, mudei seu proprietário para root e configure o sinalizador de modo especial de + s.

O resultado, de acordo com ls, é -rwsr-sr-x .

Se eu executar isso de um shell normal (não-raiz), recebo erros de chown, Operação não permitida . Ele roda sem reclamação de um shell de root.

Pareço estar faltando a parte que executa o script como root automaticamente. Eu pensei que era o propósito e função da permissão "setuid", e + s é como especificá-lo .

O que estou perdendo?

    
por JDługosz 22.07.2015 / 06:36

3 respostas

1

Sinalizadores setuid e setgid são ignorados por scripts de shell, por motivos de segurança.

    
por 22.07.2015 / 07:00
1

Siga estas etapas:

  • Experimente sudo
  • Experimente chmod +x script_path
  • Se a segurança não importa, execute chmod 777 script_path
por 22.07.2015 / 09:25
0

@hildred observou isso em um comentário acima. Vou expandi-lo em uma resposta, pois acho que é a resposta correta e altamente recomendada.

O super comando

… allows specified users to execute scripts (or other commands) as if they were root; or it can set the uid, gid, and/or supplementary groups on a per-command basis before executing the command. It is intended to be a secure alternative to making scripts setuid root. Super also allows ordinary users to supply commands for execution by others; these execute with the uid, gid, and groups of the user offering the command.

(ênfase minha).

    
por 22.07.2015 / 09:34