Есть ли в Linux способ, при котором один пользователь без полномочий root может проверить, использует ли другой пользователь без полномочий root OpenSSL или нет, без разрешения sudo?

Рассмотрим этот сценарий, где Пользователь-A и Пользователь-B - оба пользователя без полномочий root, которые работают на сервере.

Пользователь-A выполняет другую Программу P1 (pid-2814), P2 (pid-2815), тогда как Пользователь-B выполняет другую Программу M1 (pid-3810), M2 (pid -3811).

Процесс P1 пользователя A и процесс M1 пользователя B используют OpenSSL.

Когда пользователь A выполняет эту команду,

lsof | grep '/usr/lib/libcrypto.so.1.0.0.1'

вывод показывает, что процесс P1 использует OpenSSL.

P1       2814  User-A  mem       REG        8,6  1633692    3812058 /usr/lib/libcrypto.so.1.0.0.1

Приведенная выше команда не отображает Процесс M1 пользователя B также использует OpenSSL.

Когда пользователь-A выполняет команду

sudo lsof |grep '/usr/lib/libcrypto.so.1.0.0.1'   // This is valid ONLY when User-A has sudo permission

, приведенную ниже, отображается, что процесс P1 пользователя-A и процесс M1 пользователя-B используют OpenSSL.

P1       2814  User-A  mem       REG        8,6  1633692    3812058 /usr/lib/libcrypto.so.1.0.0.1
M1       3810  User-B  mem       REG        8,6  1633692    3812058 /usr/lib/libcrypto.so.1.0.0.1

Есть ли способ узнать, что процесс M1 пользователя B (пользователь без полномочий root) использует OpenSSL от пользователя A (другого пользователя без полномочий root) без разрешения sudo?

Примечание: С командой fuser я получаю аналогичные результаты.

без разрешения sudo ТОЛЬКО процесс P1 использует OpenSSL.

fuser -v '/usr/lib/libcrypto.so.1.0.0.1'

и с разрешением sudo выходные данные показывают, что и процесс P1, и процесс M1 используют OpenSSL.

sudo fuser -v '/usr/lib/libcrypto.so.1.0.0.1'

Я использую Debian / Ubuntu. Мы будем очень благодарны за любую ссылку, указывающую на указанное выше. Заранее благодарим.

0
задан 2 June 2016 в 10:39
2 ответа

Если у вас есть доступ к исполняемым файлам, вы можете использовать ldd /usr/bin/progname , чтобы посмотреть, с какими библиотеками связаны, не требуя повышенных прав.

0
ответ дан 5 December 2019 в 10:22

Это был бы простой сценарий для перечисления программ, которые выполняет конкретный пользователь, а затем проверки всех программ на предмет того, используют ли они определенную библиотеку:

USER="www-data"
LIB="libcrypto"

while read line; do
    arr=( $line )
    com="${arr[0]}"

    # only programs with absolute paths (?)
    if [ "${com:0:1}" != "/" ]; then
        continue
    fi

    echo -n "${com} "

    ldd "${com}" | grep "${LIB}" > /dev/null

    if [ $? = 1 ]; then
        echo "NO"
    else
        echo "YES"
    fi
done < <(ps -o command -u "${USER}" | cut -d " " -f 1 | sort -u)
0
ответ дан 5 December 2019 в 10:22

Теги

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