Я могу разобрать / etc / passwd с помощью augtool:
myuser=bob
usershome=`augtool -L -A --transform "Passwd incl /etc/passwd" print "/files/etc/passwd/$myuser/home" | sed -En 's/\/.* = (.*)/\1/p'`
... но это кажется слишком запутанным.
Есть ли какой-нибудь простой, специализированный инструмент для отображения пользовательского дома (например, usermod
его можно использовать для его изменения )?
bash
command-line
scripting
hosts
Адам Рычковски
источник
источник
Ответы:
Вы никогда не должны анализировать
/etc/passwd
напрямую. Возможно, вы находитесь в системе с удаленными пользователями, и в этом случае они не будут/etc/passwd
./etc/passwd
Файл может быть где - то в другом месте. И т.п.Если вам нужен прямой доступ к базе данных пользователей, используйте
getent
.Однако есть и другой способ, который не включает анализ:
~
Оператор в оболочке расширяется в домашний каталог указанного пользователя. Однако мы должны использоватьeval
потому, что расширение переменной$user
происходит после расширения~
. Таким образом, используяeval
двойные кавычки и, вы эффективно расширяете$user
сначала, а затем звонитеeval echo "~phemmer"
.Когда у вас есть домашний каталог, просто прикрепите его
/.ssh
к концу.источник
awk
магию (которую я никогда по-настоящему не понимал)~/.ssh
? Может ли это быть изменено параметром конфигурации где-либо или это жестко закодировано в ssh?/etc/ssh/ssh_config
иsshd_config
; по крайней мере, в Ubuntu 14.04Вы ищете домашний каталог $ myuser?
ты можешь использовать
чтобы получить .ssh dir.
источник