Authbind , @Gilles já mencionou isso, mas eu gostaria de expandir um pouco sobre isso.
Possui controle de acesso conveniente (detalhes na página de manual): você pode filtrar o acesso por porta, endereço de interface, uid, intervalos de endereço ou porta e combinação destes.
Tem um parâmetro muito útil --depth
:
--depth levels
Causes authbind to affect programs which are levels deep in the calling graph.
The default is 1.
"Níveis profundos" significa que quando um script (ou programa) executa outro script, ele desce um nível. Então, se você tem --depth 5
, isso significa que nos níveis 1 (ou é 0?) Até 5 você tem permissão para ligar, enquanto que no nível 6 e em diante, você não tem. Útil quando você quer que um script tenha acesso, mas não programas que são executados com ou sem o seu conhecimento.
Para ilustrar, você poderia ter algo assim: por questões de segurança, você tem um usuário java
que serve apenas para executar java e você quer dar a ele acesso à porta 80:
sudo echo > /etc/authbind/byport/80 &&
chown root:java /etc/authbind/byport/80
chmod 710 /etc/authbind/byport/80
Eu criei o ../byport/80 file
, dei-o ao grupo de usuários java
(cada usuário tem seu próprio grupo) e o tornei executável por grupo, o que significa que ele é executável por java
user. Se você está dando acesso por porta, o arquivo tem que ser executável pelo usuário que deve ter acesso, então fizemos isso.
Isso pode ser o suficiente para o Joe comum, mas como você sabe como usar o parâmetro --depth
, execute (como java
user) authbind --depth [depth] my_web_app's_start_script
começando em --depth 1
e trabalhando até encontrar a menor profundidade que funciona e usar isso.
Leia a página de manual para detalhes .