sudo

package
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 17, 2026 License: GPL-3.0 Imports: 8 Imported by: 0

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

func SessionEnv(environ []string, u *User) []string

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

func Invoker() (*User, error)

Invoker возвращает пользователя, вызвавшего sudo, или nil, если qwdtt-cli запущен не через sudo: без прав root, root'ом напрямую или на Windows, где sudo нет и Geteuid возвращает -1. Ошибка — sudo есть, но пользователя найти не удалось; молча подставлять вместо него root нельзя: настройки окажутся не те, а браузер откроется от имени root.

Ответ не меняется за время жизни процесса и считается один раз.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL