Você pode conseguir o que deseja com sudo
: você pode permitir que o usuário2 execute o script que precisa como usuário1, permitindo somente executar esse script, preservando assim a segurança do seu sistema ( user2 não pode ser desonesto e usar um shell como user1). Você pode fazer isso por:
-
sudo visudo
(para editar o arquivo de configuração do sudo) - Adicione isto ao final do arquivo:
user2 ALL = (user1) NOPASSWD:/path/to/your/script.sh
- Salve e feche o arquivo.
Agora, se você abrir um shell como user2, poderá usar sudo -u user1 /path/to/your/script.sh
para executá-lo como user1; você pode usar esse mesmo comando do java. A segurança é preservada, pois o usuário2 não pode executar um shell como user1: sudo -u user1 bash
será negado.
No entanto , acho que uma solução cada vez mais limpa seria obtida apenas criando um grupo que user1 e user2 compartilhariam e usando esse grupo para gerenciar a permissão de execução do arquivo. Dependendo de suas necessidades, convém também considerar as ACLs ou o bit setuid (por exemplo, chmod 4700 /path/to/your/script.sh
) se mais usuários precisarem executar esse script como user1.