Este é o objetivo pretendido de libutempter
, mas também requer um nível de suporte de aplicativo, que tmux
tem somente recentemente (fevereiro de 2014) obtido na ramificação master (que você está usando), mas pode não estar pronto para uso.
Do FAQ na atual distribuição de fonte 1.9a:
* How is tmux different from GNU screen?
[...]
- screen has support for updating utmp. Nobody has really come up with a clean,
portable way to do this without making tmux setuid or setgid yet.
A ramificação principal FAQ on-line omite exatamente esse ponto, embora a% O arquivoCHANGES
ainda não está atualizado.
Verifique a definição HAVE_UTEMPTER
em Makefile
(não o esperado config.h
!) depois de executar configure
, se não estiver definido, você precisará ler config.log
para determinar o que está errado com o ambiente de criação.
Meus melhores palpites são:
- você não tem um
libutempter.a
, apenaslibutempter.so
, então o uso de-static
faz com que o libutempter falhe na detecção, já que ele não pode ser vinculado - ele é detectado e compilado, mas o
utempter
helper (ao qual a tarefa privilegiada de atualizaçãoutmp
é delegada) não é setgid (geralmente setgid utmp) - alguns sistemas são conhecidos por limitar o acesso a esse ajudante para prevent still , portanto, o binário de chamada (ou seja,
tmux
) deve também ser setgid (normalmente setgid utempter)
Se você criar libutempter
você mesmo deve fazer ambas versões estáticas e dinâmicas, mas eu suspeito que os pacotes de distribuição conterão apenas a versão dinâmica.
Se você não tem acesso root, você não pode instalar seu próprio libutempter corretamente: ele não pode manter os arquivos utmp
/ wtmp
do sistema. Se houver uma instalação do sistema do libutempter que não tenha apenas libutempter.a
, você deverá ser capaz de compilar seu próprio libutempter.a
na configuração / link tmux
estaticamente, e usar o sistema já instalado setgid helper (geralmente /usr/lib/utempter/utempter
ou /usr/libexec/utempter/utempter
). Você não pode solucionar o problema se o acesso a esse binário também for restrito, ou seja, tmux
precisa ser setgid para executá-lo.
O tratamento de erros para os novos recursos do libutempter está incompleto em tmux
neste momento, se você puder reconstruir o libutempter com -DUTEMPTER_DEBUG
, poderá ajudar se nenhum dos itens acima ocorrer:
make CFLAGS=-DUTEMPTER_DEBUG