Есть ли способ определить хосты для конкретных пользователей - например, в / etc / hosts? Может что-то вроде ~ / .hosts?
Для всего, что основано на ssh (включая rsync поверх ssh), вы можете добавлять записи в свой файл ~ / .ssh / config.
например
Host myhost
Hostname myhost.example.com
Затем ssh myhost подключит вас к myhost.example.com
В конкретных приложениях может быть что-то, что вы можете использовать, как предложил Ник, но не существует пользовательского домашнего эквивалента файла / etc / hosts.
Когда приложения пытаются разрешить имена хостов, это обрабатывается NSS. Вы можете проверить, как NSS обрабатывает имена хостов в вашей системе, просмотрев /etc/nsswitch.conf
$ grep host /etc/nsswitch.conf
hosts: files dns
Это означает, что имена хостов будут сначала сопоставлены с файловой базой данных (/ etc / hosts), а в противном случае - с данными DNS, указанными в /etc/resolv.conf
Мне было интересно то же самое, и коллега нашел это решение: http://blog.tremily.us/posts/HOSTALIASES/
В основном это включает установку переменной среды (HOSTALIASES), которая указывает на файл, который будет использоваться для псевдонимов хоста (например, вы можете использовать ~ / .hosts).
Другим решением могут быть разные среды "chroot" для разных пользователей. Даже разные корневые тюрьмы для одного и того же пользователя в зависимости от определенных критериев.