Почему я не могу открыть gparted из командной строки?

Поскольку FUSE - это «Файловая система в пространстве пользователя», это могло произойти из-за нежелательных подключений или структур виртуальной файловой системы в вашей системе, о которых вы не знали Я вообще хочу быть там.

Смена владельца устройств подразумевает, что другие пользователи могут напрямую использовать эти устройства без прав администратора (root / sudo). Изменение владельца группы на root: fuse будет проблемой безопасности , если вы не можете контролировать, кто является членом группы fuse .

Но если группа предохранитель представляет собой ограниченную контролируемую группу пользователей, которой вы доверяете (и / или которые единственные, кому действительно нужно использовать устройство), тогда проблема безопасности переводится в безопасность пользователей (насколько легко можно украсть их личные данные).

Вообще говоря, чем больше вы чем-то делитесь, тем менее защищенным оно становится ... но также и более строгая защита, тем меньше юзабилити. Так что, в конце концов, все упирается в желаемый баланс.

0
18.02.2018, 21:17
2 ответа

Для доступа к X вам нужны переменные окружения DISPLAYи XAUTHORITY. В зависимости от настроек sudo может удалить их. Вы можете проверить это с помощью sudo env, чтобы увидеть переменные окружения.

Чтобы сохранить пользовательскую среду, вы можете использовать sudo -E. У этого есть ловушка HOMEдля дома ваших пользователей, и файлы конфигурации могут получить неправильные права доступа к файлам. Однако, чтобы избежать этого, sudo -Hустанавливает HOMEв /root.

Объедините это для gparted:

sudo -EH gparted

С помощью:

можно установить только нужные переменные.
sudo env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY gparted

Сообщения об ошибках:

cannot open display:означает, что DISPLAYпусто или не существует.

no protocol specifiedозначает, что DISPLAYустановлен и действителен, но XAUTHORITY, указывающий на куки-файл аутентификации, не установлен или куки-файл недействителен. В качестве альтернативы, xhost +SI:localuser:rootразрешает root временный доступ к X до выхода из системы.


То же самое относится и к доступу Wayland с WAYLAND_DISPLAYи XDG_RUNTIME_DIR. Проблемы с корневым доступом Wayland также можно решить с помощью sudo -EH. Подробности и ловушку с XDG_RUNTIME_DIRсм. в . Будет ли Wayland когда-либо поддерживать графический sudo?

2
28.01.2020, 02:32

Есть kdesudo, gsudoи некоторые другие sudo, которые решают эту проблему.

Вот один из них, который я взломал вместе (без аудита/проверки безопасности ).

#/bin/bash

inner() {
    su  - "$user" -c "xauth list" |
        grep "$(echo "$display" |
                cut -d ':' -f 2 |
                cut -d '.' -f 1 |
                sed -e s/^/:/ ) " |
        xargs -n 3 xauth add &&
        "$@"
}

if [ "$1" = "---innermode" ]
then
    shift
    user="$1"
    display="$2"
    shift 2
    inner "$@"
else
    self="$0"
    sudo "${self}" ---innermode "$USER" "$DISPLAY" "$@"
fi
1
28.01.2020, 02:32

Теги

Похожие вопросы