8.3 KiB
title, source, path
| title | source | path |
|---|---|---|
| Configurar ambiente Linux para não utilizar o usuário root | https://tdn.totvs.com/pages/viewpage.action?pageId=454453183 | \Plataforma Documentação técnica\Configuração\Configuração de Ambiente\Configurar ambiente Linux para não utilizar o usuário root.md |
Objetivo
Abaixo é apresentado um guia sobre como alterar as permissões e scripts para executar a plataforma e os serviços com um usuário fluig.
Nota:
Por conta da instalação dos serviços, o processo de instalação do TOTVS Fluig deve ser feito utilizando o usuário root e deve ser feito um primeiro start também utilizando o usuário root.
Nota:
Estas alterações serão desfeitas após o processo de atualização.
Instalação/atualização da plataforma
Proceda a instalação ou atualização conforme o processo padrão que exige o usuário root. Para conferir os passos necessários, acesse [Instalação da plataforma no Linux - Instalador](../../Instalação e Atualização/Guia de instalação da plataforma/Instalação da plataforma no Linux - Instalador.md).
Usuário
Siga o procedimento abaixo para criar o usuário fluig. Utilize o comando abaixo:
$ sudo useradd --system --shell /bin/false fluig
Esse é um usuário de sistema, portanto não possuí senha ou interpretador de comando, logo não é possível realizar o login através dele. Porém se precisar realizar alguma atividade com o login fluig utilize o comando sudo no formato abaixo:
$ sudo -u fluig <comando>
Limites do usuário
Como o usuário criado não é mais o administrador, são definidos automaticamente alguns limites de recursos, que precisam ser expandidos, para tal edite o arquivo /etc/security/limits.conf e insira as linhas abaixo:
fluig hard nofile 500000
fluig soft nofile 500000
Lembrando que esse é um valor sugerido, em alguns casos o valor precisa ser aumentado, pois uma mensagem no log "too many open files" irá indicar que o valor limite de arquivos aberto não é suficiente.
Scripts
Para a utilização do usuário adequado é necessário modificar os scripts de inicialização:
Inicialização da plataforma
- Altere o arquivo [diretório_instalação]/appserver/bin/service/wildfly.conf, substitua o valor da variável JBOSS_USER por fluig, e.g:
JBOSS_USER=fluig
Somente para a atualização Voyager (2.0) ou superiores:
- Se você utiliza a atualização Voyager (2.0) ou superior e o seu ambiente utiliza systemd, faça também o passo abaixo:
-
Altere o arquivo /etc/systemd/system/fluig.service (ou dependendo /etc/init.d/fluig), substituindo o valor das variáveis User com valor fluig, e.g.:
User=fluig -
Caso for instaldo o serviço fluig na porta abaixo de 1024 e sem proxy reverso, por exemplo na porta 80, precisa adicionar a variável AmbientCapabilities com o valor CAP_NET_BIND_SERVICE abaixo da variável User:
User=fluig AmbientCapabilities=CAP_NET_BIND_SERVICE -
Em seguida, execute este comando no terminal:
sudo systemctl daemon-reload
-
Inicialização do serviço de indexação
- Altere o arquivo /etc/init.d/fluig_Indexer, substitua o valor da variável RUNAS para fluig, e.g:
RUNAS="fluig"
- No final do arquivo, substitua o bloco abaixo:
if [ -n "$RUNAS" ]; then
su -c "SOLR_INCLUDE=\"$SOLR_ENV\" \"$SOLR_INSTALL_DIR/bin/solr\" $SOLR_CMD" - "$RUNAS"
else
SOLR_INCLUDE="$SOLR_ENV" "$SOLR_INSTALL_DIR/bin/solr" $SOLR_CMD
fi
- pela linha a seguir:
sudo -u "$RUNAS" SOLR_INCLUDE="$SOLR_ENV" "$SOLR_INSTALL_DIR/bin/solr" $SOLR_CMD
- Altere o arquivo [diretório_instalação]/solr/bin/solr, substituindo a linha abaixo:
running=$(lsof -t -PniTCP:$SOLR_PORT -sTCP:LISTEN || :)
if [ -z "${running:-}" ]; then
- pela linha a seguir:
running=$(get_info | grep "\"solr_home\":\"$SOLR_HOME\"" > /dev/null)
if [ "${running:-}" ]; then
Inicialização do serviço de Notificação em tempo Real
-
Altere o arquivo /etc/systemd/system/fluig_RealTime.service (ou dependendo /etc/init.d/fluig_RealTime):
-
Substitua o valor da variável User por fluig, e.g.:
User=fluig -
Caso for instalado o serviço fluig_RealTime na porta abaixo de 1024 e sem proxy reverso, por exemplo na porta 77, precisa adicionar a variável AmbientCapabilities com o valor CAP_NET_BIND_SERVICE abaixo da variável User:
User=fluig AmbientCapabilities=CAP_NET_BIND_SERVICE -
Em seguida, execute este comando no terminal:
sudo systemctl daemon-reload -
Substitua a linha:
CNT=`ps -p $PID -o comm= | wc -l`
- pela linha abaixo:
CNT=`sudo -u fluig ps -p $PID -o comm= | wc -l`
- e substitua a linha:
nohup $NODE_HOME/bin/node /fluig/dev/node/bin/fluig.rt >> $LOG 2>&1 &
- pela linha abaixo:
sudo -u fluig nohup $NODE_HOME/bin/node /fluig/dev/node/bin/fluig.rt >> $LOG 2>&1 &
Permissões
Para que os serviços consigam acessar os arquivos é necessário que o usuário fluig tenha acesso nos seguintes locais:
-
Instalação da plataforma (ex: /opt/fluig/*)
-
Mude o dono de forma recursiva (-R) para o usuário fluig
sudo chown -R fluig:fluig /opt/fluig sudo chmod -R 755 /opt/fluig
-
-
Volume de dados (ex: /opt/volume/*)
-
Mude o dono de forma recursiva (-R) para o usuário fluig
sudo chown -R fluig:fluig /opt/fluig sudo chmod -R 755 /opt/fluig
-
Executando serviços em portas protegidas
Alguns sistemas operacionais Linux impedem que um usuário sem permissões administrativas utilize portas abaixo de 1024, isso impede por exemplo que o fluig aceite conexões na porta 80 e 443.
Isso pode ser mitigado de 2 formas:
- Usar uma ferramenta para realizar a tarefa de redirecionar as requisições para o fluig, como um [proxy reverso](Proxy reverso.md) (recomendado).
- Utilizar ferramentas de acordo com a distribuição, como por exemplo: ufw ou firewall-cmd ou iptables.
- Ubuntu Server 16.04 a 24.04
-
Execute os comandos abaixo para liberar a porta 80 (fluig) e 7777 (fluig_RealTime):
sudo ufw allow 80/tcp sudo ufw allow 7777/tcp
-
- Oracle Linux 7.x a 8.7 e 9.5 / CentOS 7.0 a 7.5 / Red Hat Enterprise Linux 9.5
-
Execute os comandos abaixo para liberar a porta 80 (fluig) e 7777 (fluig_RealTime):
sudo firewall-cmd --permanent --add-port=80/tcp sudo firewall-cmd --permanent --add-port=7777/tcp sudo firewall-cmd --reload # Caso o serviço do firewalld esteja parado, execute: sudo systemctl enable firewalld sudo systemctl start firewalld
-
- Oracle Linux 6.4 a 8.7 / CentOS 6.4 a 6.10 / Red Hat Enterprise Linux 6.4 a 8.7
-
Execute os comandos abaixo para liberar a porta 80 (fluig) e 7777 (fluig_RealTime):
sudo iptables -I INPUT -p tcp --dport 80 -j ACCEPT sudo iptables -I INPUT -p tcp --dport 7777 -j ACCEPT sudo service iptables save
-
- Ubuntu Server 16.04 a 24.04