AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / user-3214

Bevor's questions

Martin Hope
Bevor
Asked: 2019-01-28 00:45:20 +0800 CST

Reiniciando o serviço systemd apenas como um usuário específico?

  • 17

Eu criei alguns serviços do systemd que basicamente funcionam:

localização:

/etc/systemd/system/multi-user.target.wants/publicapi.service

contente:

[Unit]
Description=public api startup script

[Service]
Type=oneshot
RemainAfterExit=yes
EnvironmentFile=-/etc/environment
WorkingDirectory=/home/techops
ExecStart=/home/techops/publicapi start
ExecStop=/home/techops/publicapi stop

[Install]
WantedBy=multi-user.target

Quando tento reiniciar o serviço como usuário techops na linha de comando, recebo a seguinte saída:

==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to start 'publicapi.service'.
Multiple identities can be used for authentication:
 1.  Myself,,, (defaultuser)
 2.  ,,, (techops)
Choose identity to authenticate as (1-2):

Eu quero que apenas techops possam reiniciar os serviços e quero que esse prompt não apareça ao fazer login como techops. Como eu posso fazer isso?

Eu li que existem abordagens diferentes com polkit-1 ou sudoers, mas não tenho certeza.

[ATUALIZAÇÃO] 27/01/2019 16:40
Obrigado por esta resposta abrangente para Thomas e Perlduck. Isso me ajudou a melhorar meu conhecimento do systemd.

De acordo com a abordagem para iniciar o serviço sem um prompt de senha, e quero pedir desculpas por não ter enfatizado o problema real o suficiente:

Na verdade, o mais importante para mim é que nenhum outro usuário além de techops deve parar ou iniciar o serviço. Mas pelo menos com as duas primeiras abordagens ainda posso executar service publicapi stope recebo o prompt ==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===novamente. Quando escolho o usuário padrão e sei a senha, posso interromper todos os serviços. Quero impedir que esse usuário faça isso, mesmo que ele tenha a senha . Informações importantes para entender melhor por que essa é a parte mais importante para mim:
O usuário default é o único usuário que está exposto ao ssh, mas esse usuário não pode fazer mais nada (exceto alterar para outros usuários se você tiver a senha desses outros usuários) . Mas no momento, ele pode iniciar ou parar os serviços, mas esse usuário não deve fazer isso.
Se alguém obtiver a senha de defaultuser e fizer login via ssh, ele poderá interromper todos os serviços no momento. Isso é o que eu quis dizer com "eu quero que apenas técnicos possam reiniciar os serviços". Desculpe, não fui tão exato na minha pergunta inicial. Eu pensei que sudo o usuário techops talvez contornaria esse problema, mas não. O problema em si é não executar o comando sem prompt de senha. (Eu poderia facilmente fazer isso como usuário techops quando apenas executo /home/techops/publicapi start). O problema em si é impedir que o usuário padrão inicie esses serviços.

E eu esperava que qualquer uma das soluções pudesse fazer isso.

Comecei com as abordagens de Thomas. A abordagem com sudo funciona quando eu não quero pedir a senha para o usuário techops quando executo os comandos conforme explicado, por exemplo

sudo systemctl start publicapi.service
sudo systemctl stop publicapi.service

A segunda abordagem ainda não funciona para mim. Não consigo iniciar o serviço sem prompt de senha ==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===e paro consigo logar como usuário default quando tenho a senha deste usuário.

Com a terceira abordagem, o serviço nem inicia mais no processo de inicialização, então não tenho certeza se essa abordagem é a correta para mim. Não consigo nem com o systemctl enable publicapi.serviceque me leva ao seguinte erro:

Failed to enable unit: Unit file mycuisine-publicapi.service does not exist.

O erro não ocorre quando eu movo todos os serviços de volta para /etc/systemd/system/ e executo systemctl enable publicapi.service. Em seguida, o serviço é iniciado novamente na inicialização.

Todas essas abordagens ajudarão mais ou menos a ignorar o prompt de senha para o usuário techops, mas quando eu executo service publicapi stopou systemctl stop publicapi com defaultuser, posso interromper os serviços se tiver a senha. Mas meu objetivo é bloquear o usuário padrão de iniciar ou interromper serviços.

sudo systemd
  • 2 respostas
  • 28088 Views

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve