Em outras palavras, é suportado no Precise (12.04) e mais recente.
Edward Anderson
8
Em outras palavras, não é suportado no centos 6
socketpair 26/13
5
Para o registro, initctl --versionencontre sua versão atual do upstart.
Mahn
4
Irritantemente, a distribuição do Amazon Linux na AWS usa a versão inicial do RHEL 6 (0.6.5 !!!!), portanto, qualquer pessoa que use isso precisará usar a solução 'su'.
Asfand Qazi
86
Perguntando no canal #upstart no freenode, a opinião oficial sobre o assunto é:
Uma versão futura do Upstart terá suporte nativo para isso, mas, por enquanto, você pode usar algo como:
Esta é a única resposta que funcionou no Amazon Linue EC2 (tentei todas as variações de sudo e su, incluindo --session-command, -c, ad nauseum); nenhum deles permitiu que o processo fosse interrompido uma vez iniciado; muito obrigado por isso.
Kato
Isso é um pouco de mágica de casca, +1.
Steve Kehlet
6
Isso não funcionou para mim no CentOS 6 (Upstart 0.6.5). Há uma série de garfos (4 profundos, eu acho) iniciados por suisso significa que expect forknem sequer expect daemoncapturam o PID final.
precisa saber é o seguinte
2
Usei isso no Amazon Linux (Upstart 0.6.5) para inicializar um processo Jenkins (que não se daemonize, felizmente) e funcionou! Eu tive que mudar um pouco para redirecionar a saída padrão para um arquivo de log e definir algumas variáveis de ambiente, mas funcionou! Minha versão se parece com:exec su -s /bin/sh -c 'HOME=/foo/bar exec "$0" "$@" &>/var/log/foobar.log' username -- /path/to/command [parameters...]
O método recomendado para sistemas Debian e Ubuntu é usar o utilitário auxiliar start-stop-daemon. […] start-stop-daemonNão impõe limites de PAM ("Módulo de autenticação conectável") ao processo que ele inicia.
Você também pode usar o grupo, se precisar. Com --chuid daemonuser: daemongroup
Evgeny
13
Existem várias maneiras de fazer isso, todas com semânticas ligeiramente diferentes, principalmente relacionadas à participação no grupo:
setuidgid colocará você no grupo que você especificar.
Os daemontools originais colocarão setuidgidvocê apenas nesse grupo, para que você não possa acessar arquivos pertencentes a outros grupos dos quais você é membro.
O uso newgrpassim que você se tornar o usuário menos privilegiado adicionará um único grupo ao seu conjunto de grupos, mas também cria um novo subshell, tornando difícil o uso de scripts internos.
start-stop-daemon preserva sua participação no grupo e faz muito mais do que apenas setuid / setgid.
chpst -u username:group1:group2:group3... commandnamepermitirá que você especifique exatamente quais membros do grupo adotar, mas (no Ubuntu ) ele só vem com o runitpacote, que é uma alternativa ao upstart.
su -c commandname usernameseleciona todas as participações em grupos de nomes de usuário sudo -u username commandname, assim como provavelmente é o caminho para menos espanto.
daemontools não é um pré-requisito de arrivista, de modo que este não parece ser a resposta 'canônico'
Adam Nelson
2
Além disso, o daemontools está no universo (ubuntu 10.04) e o upstart está no principal.
precisa
4
Em uma instância do Ubuntu 10.10 no Amazon EC2, tive mais sorte com o start-stop-daemoncomando.
Também lutei com algumas das outras estrofes novas . Estou chamando um aplicativo python com virtualenvparâmetros específicos e alguns para o meu programa executado.
O PYTHONPATHobjetivo é obter alguns pacotes instalados da origem no caminho do módulo PYTHON quando esse trabalho inicial for executado. Eu tive que fazer tudo em caminhos absolutos, porque a chdirestrofe não parecia funcionar.
Eu também tive problemas com variáveis env usadas com exec start-stop-daemon .
Thomas Bratt
3
Eu estava usando o CentOS 6 e não consegui que o hack recomendado (para o Upstart 0.6.5) funcionasse para mim, nem o truque 'su' porque o número de garfos envolvidos (4 acho) não foi rastreado pelo 'expect fork 'ou' expect daemon '.
Acabei de fazer
chown user:group executable
chmod +s executable
(ou seja, defina o bit setuid e altere a propriedade).
Pode não ser o método mais seguro, mas para um projeto interno de P&D, não importava no nosso caso.
Se você fizesse um chmod 1700ou pelo menos um chmod u+sx,go-xlá em vez de apenas +s, seria qualificado como "suficientemente seguro". :)
dannysauer
0
Há uma terceira possibilidade, dependendo do que você está tentando realizar. Você poderá soltar os controles de acesso nos arquivos / dispositivos em questão . Isso pode permitir que um usuário não privilegiado monte ou acesse itens aos quais normalmente não teria permissão. Apenas tenha certeza de que não está dando as chaves do reino no processo.
Você também pode alterar o tempo limite do cache da senha sudo . Mas eu não o recomendo, a menos que sua máquina esteja fisicamente segura (ou seja, você acredita que é improvável que um transeunte tente obter acesso ao sudo).
Há uma boa razão de que há muito poucas maneiras de realizar ações privilegiadas e que realizam escusado será necessário o registo. Restrições frouxas seriam um risco à segurança do seu sistema, e a falta de registro significaria que não há como saber o que aconteceu quando você foi comprometido.
Se o tamanho dos seus arquivos de log for preocupante, provavelmente algo está errado. Sudo gera apenas uma linha por uso em condições normais.
initctl --version
encontre sua versão atual do upstart.Perguntando no canal #upstart no freenode, a opinião oficial sobre o assunto é:
fonte
su
isso significa queexpect fork
nem sequerexpect daemon
capturam o PID final.exec su -s /bin/sh -c 'HOME=/foo/bar exec "$0" "$@" &>/var/log/foobar.log' username -- /path/to/command [parameters...]
Que tal usar o start-stop-daemon?
Do livro de receitas Upstart :
Nota:
start-stop-daemon
não suportado no RHEL.fonte
Existem várias maneiras de fazer isso, todas com semânticas ligeiramente diferentes, principalmente relacionadas à participação no grupo:
setuidgid
colocará você no grupo que você especificar.setuidgid
você apenas nesse grupo, para que você não possa acessar arquivos pertencentes a outros grupos dos quais você é membro.setuidgid
partir daemontools-bis easetuidgid
partir do conjunto de ferramentas nosh ambos têm um-s
(aka--supplementary
opção), que vai colocá-lo nesse grupo, e também colocá-lo em todos os grupos suplementares para o usuário que você especificar.O uso
newgrp
assim que você se tornar o usuário menos privilegiado adicionará um único grupo ao seu conjunto de grupos, mas também cria um novo subshell, tornando difícil o uso de scripts internos.start-stop-daemon
preserva sua participação no grupo e faz muito mais do que apenas setuid / setgid.chpst -u username:group1:group2:group3... commandname
permitirá que você especifique exatamente quais membros do grupo adotar, mas (no Ubuntu ) ele só vem com orunit
pacote, que é uma alternativa aoupstart
.su -c commandname username
seleciona todas as participações em grupos de nomes de usuáriosudo -u username commandname
, assim como provavelmente é o caminho para menos espanto.fonte
Use
setuidgid
na embalagemdaemontools
.Documentação aqui: http://cr.yp.to/daemontools/setuidgid.html
fonte
Em uma instância do Ubuntu 10.10 no Amazon EC2, tive mais sorte com o
start-stop-daemon
comando.Também lutei com algumas das outras estrofes novas . Estou chamando um aplicativo python com
virtualenv
parâmetros específicos e alguns para o meu programa executado.A seguir, o que funcionou para mim.
O
PYTHONPATH
objetivo é obter alguns pacotes instalados da origem no caminho do módulo PYTHON quando esse trabalho inicial for executado. Eu tive que fazer tudo em caminhos absolutos, porque achdir
estrofe não parecia funcionar.fonte
Eu estava usando o CentOS 6 e não consegui que o hack recomendado (para o Upstart 0.6.5) funcionasse para mim, nem o truque 'su' porque o número de garfos envolvidos (4 acho) não foi rastreado pelo 'expect fork 'ou' expect daemon '.
Acabei de fazer
(ou seja, defina o bit setuid e altere a propriedade).
Pode não ser o método mais seguro, mas para um projeto interno de P&D, não importava no nosso caso.
fonte
chmod 1700
ou pelo menos umchmod u+sx,go-x
lá em vez de apenas+s
, seria qualificado como "suficientemente seguro". :)Há uma terceira possibilidade, dependendo do que você está tentando realizar. Você poderá soltar os controles de acesso nos arquivos / dispositivos em questão . Isso pode permitir que um usuário não privilegiado monte ou acesse itens aos quais normalmente não teria permissão. Apenas tenha certeza de que não está dando as chaves do reino no processo.
Você também pode alterar o tempo limite do cache da senha sudo . Mas eu não o recomendo, a menos que sua máquina esteja fisicamente segura (ou seja, você acredita que é improvável que um transeunte tente obter acesso ao sudo).
Há uma boa razão de que há muito poucas maneiras de realizar ações privilegiadas e que realizam
escusado seránecessário o registo. Restrições frouxas seriam um risco à segurança do seu sistema, e a falta de registro significaria que não há como saber o que aconteceu quando você foi comprometido.Se o tamanho dos seus arquivos de log for preocupante, provavelmente algo está errado. Sudo gera apenas uma linha por uso em condições normais.
fonte
No CentOS 6, versão 0.6.5, o seguinte funcionou para mim.
ou:
Quando usar
o processo do trabalho não pode ser parado
initclt stop
. Eu acho que o motivo é:fonte