В качестве альтернативы sux
для безопасного запуска графической команды(firefox-esr
в примере ниже )как$AUTHUSER
(guest
в примере ниже):
AUTHUSER=guest
AUTHSTRING=SI:localuser:${AUTHUSER}
xhost +${AUTHSTRING} > /dev/null
SUDO_ASKPASS=/usr/bin/ssh-askpass
export SUDO_ASKPASS
sudo -k --askpass -u ${AUTHUSER} /usr/bin/firefox-esr
xhost -${AUTHSTRING} > /dev/null
sudo -K
код делает:
guest
доступ к вашему текущему пользователю $DISPLAY
черезxhost +SI:localuser:guest
ssh-askpass
для графического запроса пароля (, конечно, вы можете использовать sudoers(5)
NOPASSWD:
, чтобы избежать этого, если ваша политика безопасности считает, что это нормально. Или вы можете использовать другие askpass
программы или указать их в конфигурационных файлах (см. sudo(8)
для получения подробной информации о--askpass
)sudoers(5)
)он запускает команду /usr/bin/firefox-esr
как другой пользователь(guest
)guest
)на доступ к вашему $DISPLAY
отменяются черезxhost -SI:localuser:guest
наконец, sudo -K
удаляет кешированный пароль, поэтому при следующем вызове ssh-askpass
вам снова будет предложено ввести пароль (вместо использования кешированного пароля)
хотя это немного больше работы, чем то, что сделали gksu(8)
или sux(8)
, это можно написать в сценарии, и это гораздо более безопасно, чем:
xhost +
(Любой пользователь будет иметь доступ к вашему графическому дисплею, пока он действует)gksu
/ sux
сделали (временная копия ~/.Xauthority
,что позволило указанному пользователю скопировать ваш MIT-MAGIC-COOKIE-1
и продолжать использовать ваш дисплей даже после завершения работы gksu/sux (до тех пор, пока вы не выключили машину или не вышли из дисплея -заставки, режим гибернации и т. д. не изменили волшебный файл cookie ). поскольку это позволит только одному локальному пользователю получить доступ к вашему дисплею, а затем только до тех пор, пока выполняется команда (после завершения команды, $AUTHUSER
больше не сможет получить доступ к вашему дисплею каким-либо образом ).
Другая безопасная альтернатива —ssh -X
(без -Y
, что на самом деле делает вас менее безопасным! см. ForwardX11Trusted
в ssh_config(5)
для подробностей ), так как его проще использовать, если вы не пишете его в сценарии, но это вызывает дополнительные накладные расходы (, например. он медленнее )и некоторые программы могут работать некорректно без unsafe-Y
.
Язык определяет:
Это вряд ли повлияет на ваши графические приложения.
Приведенный вами пример представляет собой кодировку UTF -16, минимальная единица данных которой составляет 16 бит/2 байта.Это кодировка по умолчанию для многих приложений Windows, но она не поддерживается в Linux, за исключением некоторых утилит, например. iconv
.
Крайне не рекомендую переходить на C/ISO -8859 -1, потому что
Наконец, UTF -8 является многобайтовой кодировкой только для символов, не охватываемых ASCII. Текст ASCII можно рассматривать как UTF -8.
Также проверьте этот ответ:В чем разница между UTF -8 и ISO -8859 -1?