Почему я не могу запустить команду как пользователь, имеющий / 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 означает «использовать оболочку для входа», почему это не так?

  • su-to-root терпит неудачу, когда пользователь root заблокирован?
  • Избегайте спрашивать пароль, если `` пользовательская команда su -m` используется под `user`?
  • Как исправить файл / etc / sudoers, чтобы узнать меня?
  • При запуске 'su - username', pam_group не добавляет дополнительные группы из /etc/security/group.conf, но sshd login делает?
  • не может ssh на удаленный хост с корнем, неверный пароль
  • Как войти в систему как root из Bash и делать что-то
  • хотите su без пароля внутри сценария оболочки
  • Как отключить su для группы с помощью pam_succeed_if?
  • One Solution collect form web for “Почему я не могу запустить команду как пользователь, имеющий / bin / false в качестве оболочки входа?”

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

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

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