242 lines
8.3 KiB
Markdown
242 lines
8.3 KiB
Markdown
|
|
---
|
|||
|
|
title: Configurar ambiente Linux para não utilizar o usuário root
|
|||
|
|
source: https://tdn.totvs.com/pages/viewpage.action?pageId=454453183
|
|||
|
|
path: \Plataforma Documentação técnica\Configuração\Configuração de Ambiente\Configurar ambiente Linux para não utilizar o usuário root.md
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
- [Objetivo](#ConfigurarambienteLinuxparanãoutilizarousuárioroot-Objetivo)
|
|||
|
|
- [Instalação/atualização da plataforma](#ConfigurarambienteLinuxparanãoutilizarousuárioroot-Instalação/atualizaçãodaplataforma)
|
|||
|
|
- [Usuário](#ConfigurarambienteLinuxparanãoutilizarousuárioroot-Usuário)
|
|||
|
|
- [Limites do usuário](#ConfigurarambienteLinuxparanãoutilizarousuárioroot-Limitesdousuário)
|
|||
|
|
- [Scripts](#ConfigurarambienteLinuxparanãoutilizarousuárioroot-Scripts)
|
|||
|
|
- [Inicialização da plataforma](#ConfigurarambienteLinuxparanãoutilizarousuárioroot-Inicializaçãodaplataforma)
|
|||
|
|
- [Inicialização do serviço de indexação](#ConfigurarambienteLinuxparanãoutilizarousuárioroot-Inicializaçãodoserviçodeindexação)
|
|||
|
|
- [Inicialização do serviço de Notificação em tempo Real](#ConfigurarambienteLinuxparanãoutilizarousuárioroot-InicializaçãodoserviçodeNotificaçãoemtempoReal)
|
|||
|
|
- [Permissões](#ConfigurarambienteLinuxparanãoutilizarousuárioroot-Permissões)
|
|||
|
|
- [Executando serviços em portas protegidas](#ConfigurarambienteLinuxparanãoutilizarousuárioroot-Executandoserviçosemportasprotegidas)
|
|||
|
|
|
|||
|
|
# 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
|
|||
|
|
```
|