Eu posso analisar o / etc / passwd com augtool:
myuser=bob
usershome=`augtool -L -A --transform "Passwd incl /etc/passwd" print "/files/etc/passwd/$myuser/home" | sed -En 's/\/.* = (.*)/\1/p'`
... mas parece um pouco complicado.
Existe alguma ferramenta simples e dedicada para exibir o domicílio dos usuários (como usermod
pode ser usado para alterá- lo)?
bash
command-line
scripting
hosts
Adam Ryczkowski
fonte
fonte
Respostas:
Você nunca deve analisar
/etc/passwd
diretamente. Você pode estar em um sistema com usuários remotos; nesse caso, eles não estarão/etc/passwd
. O/etc/passwd
arquivo pode estar em outro lugar. Etc.Se você precisar de acesso direto ao banco de dados do usuário, use
getent
.No entanto, há também outra maneira que não envolve a análise:
O
~
operador no shell se expande para o diretório inicial do usuário especificado. No entanto, temos que usar oeval
porque a expansão da variável$user
ocorre após a expansão de~
. Portanto, usando aseval
aspas e duplas, você estará expandindo efetivamente$user
primeiro e depois chamandoeval echo "~phemmer"
.Depois de ter o diretório inicial, siga
/.ssh
para o final.fonte
awk
magia (que eu nunca realmente entendeu)~/.ssh
? Isso pode ser alterado por uma configuração em qualquer lugar ou é codificado no ssh?/etc/ssh/ssh_config
esshd_config
; pelo menos no Ubuntu 14.04você está procurando pelo diretório doméstico de $ myuser?
você pode usar
obter .ssh dir.
fonte