Ваше обоснование является звуковым, но Вы запустили с неправильной предпосылки. Linux действительно не имеет "буферов обмена", то понятие просто не является частью операционной системы. Вместо этого система управления окнами, почти всегда X11, реализует буферы обмена. Сервер X11, который управляет и выполняет дисплей, делает буферы обмена. Тем путем буфер обмена является свойством программы уровня пользователя, не операционной системой, и кроме того, существует один набор буферов обмена для каждого дисплея (который является более или менее каждым монитором или экраном, но не всегда).
Тем не менее буфер обмена X11 является немного странным.
До наблюдения содержания я всегда любил xcb, но это, по-видимому, считало довольно неясным в эти дни. Вы могли бы любить parcellite, но озираться, кажется, что существуют много менеджеров буфера обмена X11 и программ взаимодействия.
Если Вы хотите попросить пароль root, в противоположность паролю пользователя, существуют опции, которые можно вставить /etc/sudoers
. rootpw
в особенности заставит его попросить пароль root. Существует runaspw
и targetpw
также; посмотрите sudoers (5) страница справочника для деталей.
Кроме этого, sudo делает свою аутентификацию (как все остальное) через PAM. PAM поддерживает на конфигурацию приложения. Конфигурация Sudo находится в (по крайней мере, в моей системе Debian) /etc/pam.d/sudo
, и похож на это:
$ cat sudo
#%PAM-1.0
@include common-auth
@include common-account
@include common-session-noninteractive
Другими словами, по умолчанию, это проходит проверку подлинности как все остальное в системе. Можно изменить это @include common-auth
строка, и имеет PAM (и таким образом sudo) используют альтернативный источник пароля. Незакомментированные строки в общем подлинном взгляде что-то как (по умолчанию, это будет отличаться, если Вы будете использовать, например, LDAP):
auth [success=1 default=ignore] pam_unix.so nullok_secure
auth requisite pam_deny.so
auth required pam_permit.so
Вы могли использовать, например, pam_userdb.so
вместо pam_unix.so
, и сохраните свои альтернативные пароли в базе данных Berkeley DB.
Я создал каталог /var/local/sudopass
, владелец/группа root:shadow
, режим 2750
. В нем я шел вперед и создал использование файла базы данных пароля db5.1_load
(который является версией Беркли DB, используемый на Хрипящем Debian):
# umask 0027 # db5.1_load -h /var/local/sudopass -t hash -T passwd.db anthony WMaEFvCFEFplI ^D
Тот хеш был сгенерирован с mkpasswd -m des
, использование пароля "пароль". Очень очень безопасный! (К сожалению, pam_userdb, кажется, не поддерживает что-либо лучше, чем древнее crypt(3)
хеширование).
Теперь, редактирование /etc/pam.d/sudo
и удалите @include common-auth
строка, и вместо этого помещенный это на месте:
auth [success=1 default=ignore] pam_userdb.so crypt=crypt db=/var/local/sudopass/passwd
auth requisite pam_deny.so
auth required pam_permit.so
Обратите внимание, что pam_userdb добавляет a .db
расширение переданной базы данных, таким образом, необходимо уехать .db
прочь.
Согласно dannysauer в комментарии, Вы, возможно, должны сделать то же редактирование к /etc/pam.d/sudo-i
также.
Теперь, к sudo, я должен использовать password
вместо моего реального пароля входа в систему:
anthony@sudotest:~$ sudo -K anthony@sudotest:~$ sudo echo -e '\nit worked' [sudo] password for anthony: passwordRETURN it worked
Для Redhat/Centos требование может быть достигнуто со следующими шагами:
Создайте пользовательского пользователя и передачу:
# db_load -t hash -T /usr/local/etc/passwd.db
user
pass
^d
Отредактируйте sudo pam.d файл так, чтобы он был похож:
$ cat /etc/pam.d/sudo
auth required pam_userdb.so db=/usr/local/etc/passwd
account required pam_userdb.so db=/usr/local/etc/passwd
password include system-auth
session optional pam_keyinit.so revoke
session required pam_limits.so
Я все еще ищу способ сконфигурироваться, так, чтобы только определенный пользователь/группа был authen этим пользовательским методом, другие все еще могут быть authen подлинным нормальной системой методом. Кто-либо может дать мне, некоторые советуют?
[user_unknown=ignore,success=ok,default=bad]
... но необходимо будет играть с тем (и прочитать документы PAM) получить его правильный
– derobert
19.10.2013, 00:06
pam_succeed_if
пропускать один модуль, если пользователь находится в одном из списка групп, или пропускать два модуля если нет.
– dannysauer
17.06.2015, 22:15
Я не думаю, что sudo поддерживает такую установку. Цель sudo подсказки пароля состоит в том, чтобы гарантировать, что человек, дающий sudo команду, является тем же человеком, который зарегистрирован, и самый легкий способ сделать, который должен попросить, в настоящее время входил в систему пользователь, чтобы повторно аутентифицировать себя.
Другими словами, цель sudo подсказки пароля не состоит в том, чтобы установить полномочия, это должно установить идентификационные данные. На основе установленных идентификационных данных и sudo конфигурации, может быть принято решение, есть ли у рассматриваемого пользователя необходимые полномочия или права доступа.
Ваше беспокойство - то, что Ваш пароль учетной записи может быть раскрыт. Решение не состоит в том, чтобы использовать пароль входа в систему способом, что это может быть раскрыто. С ssh пароль шифруется на проводе, таким образом, он прекрасен. Люди выключают автора пароля с ssh, чтобы предотвратить нападения подбора пароля, не защитить конфиденциальность пароля. При использовании того же пароля учетной записи для чего-либо еще удостоверьтесь, что Вы используете безопасный, зашифрованный канал для обеспечения пароля. Если Вы волнуетесь по поводу клавиатурного перехватчика или что бы то ни было, прекратите использовать недоверяемые машины для входа в систему.
Если кто-то может получить Ваш ssh пароль, они могут, вероятно, также получить альтернативу sudo пароль, таким образом, Вы - более обеспеченное время инвестирования в устанавливание Ваших связей, более безопасных, чем проведение времени, просто делающего вещи, более сложные только для иллюзии большей безопасности.
У меня нет немедленного доступа к системе, где я могу протестировать это и разработать детали, но у меня есть идея:
shau
.)shau2
. (Я не уверен, хотите ли Вы, чтобы это имело тот же UID как shau
.)shau2
иметь sudo полномочия с NOPASSWD.su shau2 -c sudo "$@"
. Это должно попросить shau2
пароль. Если это будет вводиться правильно, то это будет работать sudo
как shau2
(который не должен просить пароль).shau
полномочия sudo.К сожалению, необходимо было бы повторить это для каждого пользователя, у которого есть sudo полномочия.
Спасибо @ Shâu Shắc за ответ ! Это решение также работает для LinuxMint 17.1 Cinnamon 32bit (я установил только пакет db-util
для запуска db_load
).
Но меня очень смущает получившийся файл passwd.db
. Я сделал то же самое, что и в вашем ответе (но использовал david и jones , они выглядят более привлекательно):
# db_load -t hash -T /usr/local/etc/passwd.db
david
jones
^d
Но введенные учетные данные хранятся внутри хеш-файла как обычные текст:
# grep 'jones.*david' /usr/local/etc/passwd.db
Binary file /usr/local/etc/passwd.db matches
Вы также можете увидеть Дэвида и Джонса через mcedit :
Да, можно ограничить разрешения для / usr / локальный / etc / passwd.db
. Но в любом случае имя пользователя и пароль, хранящиеся в виде простого текста, - это плохо.
Даже с отдельным паролем sudo есть некоторые потенциальные дыры в безопасности (по умолчанию установка дистрибутива). Таким образом, отдельный пароль не применяется для su (поэтому можно запустить корневой сеанс, используя su
и пароль для входа). Также отдельный пароль не соблюдается Policy Kit (можно запустить Synaptic , используя synaptic-pkexec
и пароль для входа. Затем удалите пакеты ...). Эти проблемы могут быть устранены дополнительной настройкой файлов конфигурации.
В целом кажется, что безопасный отдельный пароль sudo может быть достигнут только с помощью специального модуля PAM (возможно, такой модуль будет сравнивать пароль и хэш SHA-512, прочитанный из файла) или функциональность SELinux.
PS: извините, это должен быть комментарий.Но это идет как ответ из-за текстового формата. Спасибо за понимание.
crypt(3)
хеширование" на современных версиях glibc имеет поддержку sha-512, например.mkpasswd -m sha-512
. pam_userdb.so может обработать их очень хорошо. огромное спасибо – Andrew Domaszek 19.07.2017, 20:37