Выполнять команды как другого пользователя без пароля – sudo не удается?

Я вхожу на свой сервер как userA , у этого пользователя есть оболочка bash , все работает отлично.

Затем, для целей программы, мне пришлось сделать sudo adduser --system --home=/home/userB --group userB ; этот пользователь, по-видимому, без пароля, судя по содержимому /etc/passwd и /etc/shadow :

 $ grep userB /etc/passwd userB:x:Z08:WW9::/home/userB:/bin/false $ sudo grep userB /etc/shadow userB:*:16XXX:0:YYYYY:7::: 

Кроме того, в домашнем каталоге /home/userB/.profile отсутствует /home/userB/.profile , а также любые файлы userB .

Теперь, когда я зарегистрирован как userA , я хотел бы запускать команды как userB , в частности, проверять $PATH который видит пользователь. Поэтому я попытался отредактировать через EDITOR=/usr/bin/nano sudo visudo и добавить одну из строк userA :

 ... # User privilege specification root ALL=(ALL:ALL) ALL #userA ALL=(userB) NOPASSWD: /bin/bash userA ALL = (userB) NOPASSWD: ALL ... 

… затем сохраните файл, выйдите из удаленной оболочки, снова войдите в систему как userA . Затем я пытаюсь запустить:

 $ sudo -iu userB; echo $? 1 $ sudo -S -u userB -i /bin/bash -l -c 'echo $HOME'; echo $? 1 $ sudo -i -u userB echo \$HOME; echo $? 1 

… и, очевидно, ничего не работает – и ошибок нет. Тогда я подумал, что strace одну из этих команд, и я действительно получил ошибку:

 $ strace sudo -iu userB ... write(2, "sudo: effective uid is not 0, is"..., 140sudo: effective uid is not 0, is /usr/bin/sudo on a file system with the 'nosuid' option set or an NFS file system without root privileges? ) = 140 exit_group(1) = ? +++ exited with 1 +++ 

Однако nosuid не является проблемой для этого корневого раздела, я думаю:

 $ mount | grep '/ ' /dev/sdaX on / type ext4 (rw,errors=remount-ro) 

Так что теперь я действительно не знаю, что делать. Возможно ли вообще, чтобы userA в этом случае выполнял команды (например, печатал переменную среды $HOME ) как userB – и если да, то как я могу заставить ее работать?

2 Solutions collect form web for “Выполнять команды как другого пользователя без пароля – sudo не удается?”

С sudo manpage:

 -i, --login Run the shell specified by the target user's password data- base entry as a login shell. 

У вашего пользователяB есть /bin/false в качестве оболочки, так что это команда, которая запускается.

 % /bin/false ; echo $? 1 

Поэтому, чтобы исправить это, вам нужно изменить оболочку userB на /bin/bash (или /bin/sh или что вы предпочитаете) или не использовать флаг -i для sudo. Вам нужна оболочка для входа?

Параметр -i в sudo пытается создать оболочку входа, которая, в свою очередь, запускает выбранную оболочку пользователя. Вы установили это в /bin/false в /etc/passwd :

 $ grep userB /etc/passwd userB:x:Z08:WW9::/home/userB:/bin/false 

Попробуйте запустить:

 sudo -u userB ls 

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

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

 sudo chsh -s /bin/bash userB 
  • Sudo в качестве другого пользователя, чтобы сохранить свой домашний каталог в txt-файле
  • Как обычный пользователь может запускать задачу root cron немедленно, без задержки?
  • отчет о разрешении судопроизводства
  • Как я могу сохранить * all * environment vars для определенной команды в sudo?
  • LD_LIBRARY_PATH всегда пустой после sudo
  • Bash, выполнить команду после вызова новой оболочки
  • Как я могу запустить growisofs через sudo?
  • Sudo - поиск DNS (tcpdump)
  • разрешить пользователю chroot?
  • Отключить запрос на аутентификацию при автозаполнении команды, которая требует привилегий root
  • Как заставить sudo запомнить мой пароль дольше?
  • Interesting Posts

    Разница между включением / в конце пути к каталогу и отсутствием

    Как определить, какой пользователь был использован для запуска Apache Tomcat в последний раз (или последние несколько раз)

    Отдельные динамики и выход для наушников

    awk и новые строки во входных данных

    Просмотр удаленного рабочего стола Ubuntu с Windows 7

    Как перебирать файлы и удалять те, кто старше x дней, но НЕ используется

    Хранение сценариев оболочки

    Измените аргументы bash, если задан только один аргумент

    Создайте новую ссылку для доступа ко всем файлам и папкам

    Почему bash появляется быстрее в VM Ubuntu, чем на главном MacOS?

    разделение текстовых файлов в соответствии с регулярным выражением

    Solaris: PKG – скрипт для проверки всех пакетов, за исключением нескольких

    Gnome 3 keybindings в источнике? Где ctrl-c … (вырезать, копировать и вставлять)?

    В чем разница между дистрибутивами «jessie» и «jessie-updates» в /etc/apt/sources.list?

    Как вызывать привилегии root из запроса пароля в окне «Обновление программного обеспечения»?

    Linux и Unix - лучшая ОС в мире.