Primeiro, desculpe pelo meu inglês ruim. Vamos mostrar algo para você usando apenas conceitos unix, porque eu acho que pode ajudar (ou talvez não).
Imagine que eu quero que o executável nano possa ser executado por todos os usuários, mas nunca deve ser executado como o usuário que chama seu executável, mas com um ambiente limitado, com acesso para editar somente a configuração do apache ou arquivos em determinados grupos, em outras palavras, eu quero que o nano seja executado como um serviço linux limitado a privilégios específicos de um usuário virtual.
1- Primeiro eu vou criar o usuário nano e desabilitar o seu login:
useradd nano -d /var/nano
mkdir /var/nano
chown -R nano:nano /var/nano
passwd -l nano
2 - força o nano a rodar como usuário nano (por exemplo, se o root nano precisar rodar como nano e não pelo root)
chown nano:nano /usr/bin/nano
chmod a+s /usr/bin/nano
Agora, + s significa que o nano será executado como proprietário e não por quem o chamou.
3- Ligue para nano com root para um teste:
#nano
#ps aux | grep nano
nano 3399 0.0 0.0 13828 3840 pts/0 S+ 08:48 0:00 nano
Lindo! Nano agora é executado como usuário nano não dependendo de com qual usuário eu fiz o login.
4- Então e agora? Eu quero que o nano edite os arquivos em / var / www / apache2
chgrp -R www-data /var/www/ (yes i now that is unnecessary in Debian if the group are respected)
chmod -R g+rw /var/www
adduser nano www-data
5- O que mais?
Você notará que todo usuário agora pode usar o nano (ou uma cópia especial dele "nano-especial" ;-) para editar arquivos / var / www, e se você quiser que apenas usuários do grupo nano possam fazer isso? ?
Simples, remova outros privilégios para executá-lo:
chmod o-x /usr/bin/nano
E adicione os usuários ao grupo nano
adduser myuser1 nano