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

  • Я создал новую группу и нового пользователя. Затем я добавил пользователя в группу. Как я могу перейти к этому пользователю?
  • Почему я могу использовать apt-get, когда я использую «su»?
  • Разница между sudo-s и sudo su -
  • Как запустить программу GUI как другого пользователя (Debian)?
  • Что делает команда su - `whoami`?
  • пользователи не могут выполнить su для другого пользователя LDAP
  • Аутентификация ключа ssh не работает из сети / if-up.d / scripts
  • Как переключить пользователя с предварительно настроенными учетными данными в SSH-терминал после входа в систему как стандартный пользователь
  • One Solution collect form web for “Почему я не могу запустить команду как пользователь, имеющий / bin / false в качестве оболочки входа?”

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

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

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