Позвольте user1 “su - user2” без пароля

Вы пытались удалить это со значением inode? Это объяснено в следующем учебном руководстве: Как удалить файл в Linux с пробелами

По существу Вы получаете inode файла с ls -il (inode является первым числом в списке, затем можно использовать:

find . -inum 123456 -exec rm -i {} \;

(Замените 123456 inode числом, с которым Вы нашли ls -il.)

53
13.02.2014, 06:26
5 ответов

Добавьте следующие строки под pam_rootok.so строка в Вашем /etc/pam.d/su:

auth  [success=ignore default=1] pam_succeed_if.so user = martin-test
auth  sufficient                 pam_succeed_if.so use_uid user = martin

Эти строки выполняют проверки с помощью pam_succeed_if.so модуль. См. также синтаксис конфигурационного файла Linux-PAM для получения дополнительной информации auth строки.

  • Первая строка проверяет, является ли целевой пользователь martin-test. Если это - ничто, происходит (success=ignore) и мы можем продолжить следующую строку для проверки текущего пользователя. Если это не будет, то следующая строка будет пропущена (default=1) и мы можем продолжить последующие строки с обычными шагами аутентификации.
  • Вторая строка проверяет, является ли текущий пользователь martin или нет, если это - затем система, рассматривает процесс аутентификации как успешный и возвраты (sufficient), если это не, ничего не происходит, и мы продолжаем последующие строки с обычными шагами аутентификации.

Можно также ограничить su группе, здесь группе allowedpeople может su без пароля:

auth sufficient pam_succeed_if.so use_uid user ingroup allowedpeople
64
27.01.2020, 19:33
  • 1
    Если Вы хотите авторизовать, если они находятся в определенной группе: подлинная достаточная pam_succeed_if.so пользовательская группа –  shrimpwagon 26.08.2015, 00:08
  • 2
    @gnp Супер Спасибо!! При работе над iCinga с nrpe, должны выполнить некоторую команду как другого пользователя!! Партия, которой помогают!!!!!!Спасибо!!!!! –  saravanakumar 26.05.2016, 18:57
  • 3
  • 4
    Было бы хорошо включить информацию, как применить изменения также. –  Kyslik 14.11.2017, 15:33
  • 5
    @Kyslik, что Вы имеете в виду? Инструкции относительно того, как отредактировать необходимые файлы, находятся в ответе... –  GnP 14.11.2017, 19:10

Если Вы не хотите изменять группы или использование sudo, используйте pam названный модуль pam_exec выполнить внешние сценарии на этапе pam.

Включите строку Ваш /etc/pam.d/su после pam_rootok.so строка:

auth       sufficient pam_exec.so quiet /path/to/script

/path/to/script имеет полномочия 755 (rwxr-xr-x) и следующее содержание:

#!/bin/bash
if [ "$PAM_TYPE" == "auth" ] && \
[ "$PAM_USER" == "martin-test" ] && \
[ "$PAM_RUSER" == "martin" ]; then
  exit 0
else
  exit 1
fi

Таким образом, этот сценарий выходит с успехом если su:

  • назван в контексте аутентификации,
  • вызывающий абонент martin и
  • пользователь для аутентификации martin-test.

См.:

martin@host:~$ su - martin-test
martin-test@host:~$ exit
martin@host:~$ su - otheruser
Password: ****
otheruser@host:~$ 
13
27.01.2020, 19:33
  • 1
    pam_access может использоваться для обеспечения схожей функциональности, не полагаясь на сценарий. (это - то, что pam_access был сделан сделать) –  jsbillings 06.02.2014, 03:37
  • 2
    @jsbillings Вы сделали бы это (с некоторыми деталями) другим ответом? –  Hauke Laging 06.02.2014, 08:06
  • 3
    , как я должен был бы изменить мой /etc/pam.d/su использовать pam_access для моей ситуации? –  Martin Vegter 06.02.2014, 11:18
  • 4
    @jsbillings На самом деле pam_access не может сделать этого. Когда su проходит стопку pam, она делает поэтому как пользователь, которого Вы изменяете на, не пользователь, от которого Вы изменяетесь. Таким образом, если Вы добавляете правило такой как + : martin : ALL, это позволит любому изменяющемуся на martin. Даже если Вы изменяетесь martin кому: martin-test, это все еще позволит любому сделать это. Необходимо проанализировать и пользователя, Вы происходите из, и пользователь, на которого Вы изменяетесь. Действительно, это точно что sudo для... –  Patrick 13.02.2014, 00:28

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

  • Это спросит вас пароль Toto: SU - Toto -C WHOAMI
  • Это не будет: ssh toto @ localhost Whoami

Просто установите свой открытый ключ в averalized_keys of toto

0
27.01.2020, 19:33

Мое простое решение:

sudo login -f martin-test

Если вы хотите избежать использования sudo любой ценой, я думаю, можно будет поместить это в сценарий:

  1. , принадлежащий пользователю root и с правами root (с использованием setuid flag)
  2. исполняемый всеми, в том числе без sudo.

Однако я не могу определить биты chown root и chmod + s ToTest.sh , чтобы это действительно работало:

#!/usr/bin/env bash
echo howdy, I am $(whoami)
sudo login -f martin-test

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

-1
27.01.2020, 19:33

Возможно, это лучший способ.

suне предназначен для того, чтобы делать --sudo.

Откройте/etc/sudoers.d/customи напишите следующее:

user-a ALL=(user-b:user-b) NOPASSWD:ALL

Это означает,:всякий раз, когда пользователь -a выполняет sudo -u user-b, отпустить его, не спрашивая пароль.

Другой способ

youruserid ALL = (username) NOPASSWD: ALL

с visudo, а затем sudo -u username bashпохоже наsu - username

6
27.01.2020, 19:33

Теги

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