Почему я не могу запустить команду как пользователь, имеющий / bin / false в качестве оболочки входа?

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

RUN useradd -r -u 200 -m -c "nexus role account" -d /nexus-data -s /bin/false nexus 

Я хотел запустить команду как этот пользователь, но ничего не произошло. Пытаясь решить эту проблему, я обнаружил, что не могу ничего запускать с использованием пользователя / bin / false в качестве логина:

 # useradd xxx # su xxx -c 'ls >>/t/t1' # ls /t t1 # useradd -s /bin/false # su xxx1 -c 'ls >>/t/t2' # ls /t t1 

Я ожидал, что это не будет иметь смысла при вызове su без. Я googled, и я узнал, что могу запустить команду, если я добавлю -s /bin/bash , но почему это так? Параметр - это su означает «использовать оболочку для входа», почему это не так?

  • «PermitRootLogin no» в конфигурации sshd не предотвращает `su``
  • Разница между sudo -i и sudo su
  • Как создать исполняемый скрипт bash для этих команд?
  • Создайте файл в качестве другого пользователя и группы
  • Любое специальное разрешение ssh удаленная команда, работающая над файлом fifo (так называемый канал)?
  • Не удается запустить команду в виде www-данных, используя su
  • Есть ли способ переключиться на «su -» после переключения пользователей через «su»?
  • хотите su без пароля внутри сценария оболочки
  • One Solution collect form web for “Почему я не могу запустить команду как пользователь, имеющий / bin / false в качестве оболочки входа?”

    Если вы не укажете -s или --preserve-environment тогда используется оболочка целевого пользователя. В вашем примере это запустит /bin/false -c 'ls >> /t/t2' который, конечно, не запускает ничего полезного.

    «Платформа входа» имеет определенное значение и приведет к тому, что обычные оболочки, такие как sh или bash будут запускать сценарии входа, такие как .profile .

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