Documentation
¶
Overview ¶
Package sudo узнаёт, от чьего имени qwdtt-cli запущен через sudo.
На Linux режиму tun нужны права root, и qwdtt-cli запускают через sudo. Но настройки и секреты лежат у того, кто его вызвал, а не у root, и браузер для капчи тоже должен открыться у него. Пакет отвечает на один вопрос — кто этот человек — и нужен config (каталог настроек, владелец записанных файлов) и captcha (браузер от его имени). См. plan-e4.md, P1.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func SessionEnv ¶ added in v1.0.0
SessionEnv — окружение сеанса пользователя u из окружения sudo: для программ, которые qwdtt-cli запускает от его имени (браузер для капчи, связка ключей).
sudo оставляет DISPLAY и XAUTHORITY, но HOME, USER и LOGNAME — уже root'а, а XDG_RUNTIME_DIR и DBUS_SESSION_BUS_ADDRESS не доживают вовсе. Без них xdg-open не найдёт ни настроек пользователя, ни его шины D-Bus, через которую браузер открывает вкладку в уже запущенном окне, а связки ключей без шины нет. Каталог сеанса — /run/user/<uid> (systemd-logind); если его нет, остаётся что было. Переменные SUDO_* там ни к чему — убираются.
Types ¶
type User ¶
type User struct {
Name string
Uid uint32
Gid uint32
Groups []uint32 // дополнительные группы; без них — только Gid
HomeDir string
}
User — пользователь, вызвавший sudo.
func Invoker ¶
Invoker возвращает пользователя, вызвавшего sudo, или nil, если qwdtt-cli запущен не через sudo: без прав root, root'ом напрямую или на Windows, где sudo нет и Geteuid возвращает -1. Ошибка — sudo есть, но пользователя найти не удалось; молча подставлять вместо него root нельзя: настройки окажутся не те, а браузер откроется от имени root.
Ответ не меняется за время жизни процесса и считается один раз.