Набор sudo пароль по-другому по сравнению с входом в систему один

Ваше обоснование является звуковым, но Вы запустили с неправильной предпосылки. Linux действительно не имеет "буферов обмена", то понятие просто не является частью операционной системы. Вместо этого система управления окнами, почти всегда X11, реализует буферы обмена. Сервер X11, который управляет и выполняет дисплей, делает буферы обмена. Тем путем буфер обмена является свойством программы уровня пользователя, не операционной системой, и кроме того, существует один набор буферов обмена для каждого дисплея (который является более или менее каждым монитором или экраном, но не всегда).

Тем не менее буфер обмена X11 является немного странным.

До наблюдения содержания я всегда любил xcb, но это, по-видимому, считало довольно неясным в эти дни. Вы могли бы любить parcellite, но озираться, кажется, что существуют много менеджеров буфера обмена X11 и программ взаимодействия.

30
03.11.2014, 16:53
6 ответов

Если Вы хотите попросить пароль 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
31
27.01.2020, 19:38
  • 1
    Удостоверьтесь, что также настроили "sudo-i", который более новые версии sudo часто используют для "sudo-i" (если поставщик не изменил что-то). –  dannysauer 12.10.2013, 00:20
  • 2
    Можно ли уточнить конфигурацию PAM? –  Shâu Shắc 14.10.2013, 11:58
  • 3
    @ShâuShắc я добавил пример, включая изменения конфигурации PAM. –  derobert 14.10.2013, 20:35
  • 4
    Спасибо. Но я не нахожу db51-utils нигде в Redhat/centos или источниках, действительно ли это только доступно в вариантах Debian? –  Shâu Shắc 15.10.2013, 08:01
  • 5
    "Древнее crypt(3) хеширование" на современных версиях glibc имеет поддержку sha-512, например. mkpasswd -m sha-512. pam_userdb.so может обработать их очень хорошо. огромное спасибо –  Andrew Domaszek 19.07.2017, 20:37

Для 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 подлинным нормальной системой методом. Кто-либо может дать мне, некоторые советуют?

6
27.01.2020, 19:38
  • 1
    Необходимо смочь сделать это с полным синтаксисом действия в PAM. например, [user_unknown=ignore,success=ok,default=bad]... но необходимо будет играть с тем (и прочитать документы PAM) получить его правильный –  derobert 19.10.2013, 00:06
  • 2
    Это могло также быть выполнено с помощью pam_succeed_if пропускать один модуль, если пользователь находится в одном из списка групп, или пропускать два модуля если нет. –  dannysauer 17.06.2015, 22:15
  • 3
    Так, что-то обычно как это: автор///[success=ignore default=1] pam_succeed_if.so пользователь в danny:frank///подлинный достаточный danny_frank_module.so///подлинный достаточный not_danny_frank.so –  dannysauer 17.06.2015, 22:15

Я не думаю, что sudo поддерживает такую установку. Цель sudo подсказки пароля состоит в том, чтобы гарантировать, что человек, дающий sudo команду, является тем же человеком, который зарегистрирован, и самый легкий способ сделать, который должен попросить, в настоящее время входил в систему пользователь, чтобы повторно аутентифицировать себя.

Другими словами, цель sudo подсказки пароля не состоит в том, чтобы установить полномочия, это должно установить идентификационные данные. На основе установленных идентификационных данных и sudo конфигурации, может быть принято решение, есть ли у рассматриваемого пользователя необходимые полномочия или права доступа.

3
27.01.2020, 19:38
  • 1
    Sudo аплодисментов не делает (кроме случая, что Вы хотите спросить пароль root, или конкретного пользователя или пароль целевого пользователя), но PAM делает. И sudo использует PAM. –  derobert 11.10.2013, 18:56

Ваше беспокойство - то, что Ваш пароль учетной записи может быть раскрыт. Решение не состоит в том, чтобы использовать пароль входа в систему способом, что это может быть раскрыто. С ssh пароль шифруется на проводе, таким образом, он прекрасен. Люди выключают автора пароля с ssh, чтобы предотвратить нападения подбора пароля, не защитить конфиденциальность пароля. При использовании того же пароля учетной записи для чего-либо еще удостоверьтесь, что Вы используете безопасный, зашифрованный канал для обеспечения пароля. Если Вы волнуетесь по поводу клавиатурного перехватчика или что бы то ни было, прекратите использовать недоверяемые машины для входа в систему.

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

1
27.01.2020, 19:38

У меня нет немедленного доступа к системе, где я могу протестировать это и разработать детали, но у меня есть идея:

  • (Предположите, что Ваша нормальная учетная запись shau.)
  • Создайте вторую учетную запись: shau2. (Я не уверен, хотите ли Вы, чтобы это имело тот же UID как shau.)
  • Настроить shau2 иметь sudo полномочия с NOPASSWD.
  • Настройте псевдоним или сценарий оболочки, чтобы сделать su shau2 -c sudo "$@". Это должно попросить shau2пароль. Если это будет вводиться правильно, то это будет работать sudo как shau2 (который не должен просить пароль).
  • Удалить shauполномочия sudo.

К сожалению, необходимо было бы повторить это для каждого пользователя, у которого есть sudo полномочия.

0
27.01.2020, 19:38

Спасибо @ 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 :

enter image description here

Да, можно ограничить разрешения для / usr / локальный / etc / passwd.db . Но в любом случае имя пользователя и пароль, хранящиеся в виде простого текста, - это плохо.


Даже с отдельным паролем sudo есть некоторые потенциальные дыры в безопасности (по умолчанию установка дистрибутива). Таким образом, отдельный пароль не применяется для su (поэтому можно запустить корневой сеанс, используя su и пароль для входа). Также отдельный пароль не соблюдается Policy Kit (можно запустить Synaptic , используя synaptic-pkexec и пароль для входа. Затем удалите пакеты ...). Эти проблемы могут быть устранены дополнительной настройкой файлов конфигурации.

В целом кажется, что безопасный отдельный пароль sudo может быть достигнут только с помощью специального модуля PAM (возможно, такой модуль будет сравнивать пароль и хэш SHA-512, прочитанный из файла) или функциональность SELinux.

PS: извините, это должен быть комментарий.Но это идет как ответ из-за текстового формата. Спасибо за понимание.

0
27.01.2020, 19:38

Теги

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