O que é $ OPTIONS em um arquivo de serviço do systemd?

4

Estou vendo a seguinte linha no arquivo /usr/lib/systemd/system/sshd.service em uma caixa do Fedora 25:

ExecStart=/usr/sbin/sshd -D $OPTIONS

Não sei de onde vem $OPTIONS . Parece uma variável de ambiente, embora quando eu defino uma variável de shell dessa maneira ela seja ignorada, por exemplo,

# OPTIONS='-p 9999'
# systemctl start sshd

Eu li a parte das linhas de comando da página do manual systemd.service, que indica que as variáveis de ambiente podem ser configuradas por meio de uma linha Environment :

Environment="ONE=one" 'TWO=two two'

No entanto, nenhuma variável OPTIONS está definida lá.

Existe adicionalmente uma linha EnvironmentFile , por exemplo:

EnvironmentFile=-/etc/sysconfig/sshd

Nenhuma variável $OPTIONS está definida. Para o que $OPTIONS se refere e como é definido?

    
por cherdt 11.03.2017 / 00:28

1 resposta

6

O arquivo de unidade no Debian é semelhante, contendo:

[Service]
EnvironmentFile=-/etc/default/ssh
ExecStart=/usr/sbin/sshd -D $SSHD_OPTS
ExecReload=/bin/kill -HUP $MAINPID

Aqui, o EnvironmentFile atribui SSHD_OPTS :

# Options to pass to sshd
SSHD_OPTS=

É provável que o Fedora use um sistema similar, mas por alguma razão eles simplesmente não definiram explicitamente a variável. Isso não importa, deve se expandir para uma string vazia.

Há uma menção aqui que eg httpd.service usa OPTIONS da mesma forma e define em /etc/sysconfig/httpd . Então, é provável que não seja definido por algum motivo.

Você pode verificar a linha de comando de sshd com ps para ver para o que a variável é expandida, e também defini-la como algo no arquivo sysconfig para verificar se ela funciona se estiver lá.

Quanto à configuração da variável de ambiente na linha de comando do shell, o systemd AFAIU não executa os serviços no ambiente do shell chamando systemctl , mas os separa do processo main systemd. Dessa forma, eles não herdam as configurações do ambiente do shell, mesmo acidentalmente. As variáveis de ambiente podem ter uma ampla gama de efeitos e seria chato ter seus serviços agindo de forma diferente, dependendo se eles foram iniciados na inicialização do sistema ou reiniciados a partir da linha de comando.

Esse $MAINPID , no entanto, é especial .

    
por 11.03.2017 / 11:39

Tags