Пароль какого пользователя запрашивает `sudo`?

Вам совсем не нужен сценарий-обертка bash для этого, expect может справиться со всем этим:

#!/usr/bin/expect
set timeout 3

set rootdir /home/user
set sites [file join $rootdir sites.cfg]
set fh [open $sites r]

while {[gets $fh site] != -1} {
    set dir [file join $rootdir $site]
    if { ! [file isdirectory $dir]} {
        puts "*** error: $dir does not exist"
        continue
    } 

    cd $dir
    puts [pwd]
    puts $site

    log_file services

    spawn ssh -oStrictHostKeyChecking=no -oCheckHostIP=no -oUserKnownHostsFile=/dev/null user@$site
    expect "password" 
    send "mypassword\r 
    expect "#"
    send "environment no more\r"
    expect "#"
    send "show service service-using\r"
    expect "#"
    send "logout\r"
    expect eof

    log_file
}
10
04.05.2018, 02:07
3 ответа
  1. В наиболее распространенной конфигурации sudoзапрашивает пароль пользователя , выполняющего sudo(, как вы говорите, пользователя, соответствующего реальному идентификатору пользователя процесса ). Смысл sudoсостоит в том, чтобы предоставить дополнительные привилегии определенным пользователям (, как определено конфигурацией в sudoers), при этом этим пользователям не нужно предоставлять какую-либо иную аутентификацию, кроме их собственной. Однакоsudoдействительно проверяет, что пользователь, запускающий sudo, действительно является тем, за кого он себя выдает, и делает это, запрашивая его пароль (или любой другой механизм аутентификации, настроенный для sudo, обычно с использованием PAM — так что это может включать отпечаток пальца или двухфакторную -аутентификацию и т. д. ).

    sudoне обязательно дает права root, он может предоставлять различные привилегии. Любой пользователь, которому разрешено стать root с помощью sudoers, может сделать это, используя только собственную аутентификацию; но пользователь, которому не разрешено, не может (, по крайней мере, не используяsudo). Это обеспечивается не самим Linux, аsudo(и его настройкой аутентификации ).

  2. sudoдействительно запрашивает пароль после запуска; он не может иначе(т.е. он ничего не может сделать до он не начнет работать ). Смысл запроса sudoпароля, даже если это root, заключается в проверке личности работающего пользователя (в его типичной конфигурации ).

22
27.01.2020, 19:59

Из первой строки (с )изman sudo:

DESCRIPTION
sudo allows a permitted user to execute a command as the superuser or another user, as specified by the security policy. The invoking user's real (not effective) user ID is used to determine the user name with which to query the security policy.

Так:

  1. Используется реальный (неэффективный )ID пользователя вызывающего пользователя...
  2. Да, любой(разрешенный)пользователь может получить права суперпользователя (или другие )дополнительные привилегии (с ), запустив sudo и затем предоставив(настроенную)аутентификацию. требуется. И разрешенные, и настроенные задаются в файле sudoers (s ).

  3. Может ли Linux ограничить это для некоторых пользователей?
    Да, может, но это не так. Linux позволяет двоичному файлу sudo принимать решения на основе набора правил (политики безопасности )внутри программы sudo и внутри файла /etc/sudoers. Обычно могут использоваться другие файлы (также/вместо ).

Изman setresuid:

DESCRIPTION
setresuid() sets the real user ID, the effective user ID, and the saved set-user-ID of the calling process.

  1. Единственный способ получить права суперпользователя, предоставленные ядром, — это запустить программу suid. Иначе и быть не может. Это способ, которым Linux выбрал для предоставления прав суперпользователя.

  2. После того, как ядро ​​загрузило исполняемый файл, который не может быть изменен никаким другим пользователем (файл и каталог, принадлежащий root и доступный для записи только root )сам исполняемый файл (sudo )аутентифицирует пользователь, запрашивая свой пароль (или что-то еще, как настроено ), и решает, предоставлять ли и какие разрешения.

8
27.01.2020, 19:59

Дополнение к другим хорошим ответам оsudo:

suпозволяет вам эффективно стать другим пользователем. На своем собственном компьютере я не работаю от имени администратора для повседневного использования --, что означает, среди прочего, что я не могу (напрямую )использовать sudo. Если я хочу использовать sudo, я могу использовать su, чтобы «стать» администратором, а затем в этой роли использовать sudo. В этой ситуации я дважды ввожу пароль учетной записи администратора --, один раз при запуске suи один раз при запуске sudo.

0
27.01.2020, 19:59

Теги

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