로그인 쉘이 없는 사용자에게 어떻게 su를 할 수 있나요?

로그인 쉘이 없는 사용자에게 어떻게 su를 할 수 있나요?

문제

Debian 10에서 직접 로그인할 수 없는 사용자를 만들고 싶습니다. 바이너리를 사용해서만 사용자에 액세스할 수 있어야 합니다 su. Ubuntu 18.04 설정에서는 정확히 이 작업을 수행했고 매력적으로 작동했지만 Debian 10에서는 그렇게 할 수 없습니다.

힌트

로그인이 가능한 사용자는 사용 권한이 없습니다 sudo.

내가 한 것

기본 쉘을 사용하여 사용자를 설정했습니다 /usr/sbin/nologin. 하지만 이 사용자에게 액세스하려고 하면 su --shell=/bin/bash user그렇게 할 수 없습니다.

최소한의 예

# useradd --shell /usr/sbin/nologin locked

# passwd locked
Enter new UNIX password: *secret*
Retype new UNIX password: *secret*
passwd: password updated successfully

$ su --shell /bin/bash locked
Password: *secret*
This account is currently not available.

왜 이것이 데비안에서 더 이상 작동하지 않습니까?

편집 1:

출력 /etc/shells:

$ cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/dash
/bin/bash
/bin/rbash
/bin/zsh
/usr/bin/zsh

편집 2:

내가 달성하고 싶은 것에 대한 좀 더 자세한 답변은 다음과 같습니다.

사용자를 생성하려고 합니다(사용자1) SSH 또는 모니터와 키보드를 사용하여 컴퓨터에 로그인할 수 있습니다. 이것사용자1사용자는 제한된 권한을 가져야 합니다. 이 제한 사항 중 하나는 애플리케이션을 사용할 수 없다는 것입니다 sudo. 단순히 그렇게 하는 것이 허용되지 않습니다.

그런 다음 두 번째 사용자(사용자 2) sudo 애플리케이션을 사용하여 네트워크 설정 변경이나 기타 작업과 같은 일부 구성 작업을 수행할 수 있습니다. 이것사용자 2기본적으로 로그인하려면 잠겨 있어야 합니다. 따라서 SSH로 로그인할 수 없으며 (내 문제에 더 많이 속함) 모니터와 키보드로 로그인할 수 없습니다.

--> 누군가 어떤 작업을 수행하려면 제한된 계정으로 로그인해야 합니다.사용자1, 사용자를 다음으로 변경합니다.사용자 2그런 다음 그는 일부 구성이나 이와 유사한 것을 변경할 수 있습니다.

이것이 내가 달성하고 싶은 모든 상황의 전부입니다. 사용자에게 허용되거나 허용되지 않는 작업에 대한 좀 더 세부적인 세부 정보가 있습니다. 하지만 최대한 간단하게 설명하기 위해 `sudo'로 간단히 설명했습니다.

답변1

사용자에게 로그인 셸이 있는 경우, cmd에 다음과 같이 입력해야 합니다: su --shell=/bin/bash locked또는 sudo -u locked /bin/bash,대상 사용자에 대해 지정된 기본 쉘이 다음에 나열되어 있는 경우/etc/shell.
(긴 옵션 뒤에는 등호가 있습니다 --shell.)

하지만:

  1. 로그인 셸이 없는 사용자의 요점은 해당 사용자가 세션 시작 시 직접 로그인하거나 다른 사용자 계정을 통해 어떤 방식으로든 로그인할 수 없다는 것입니다. 이상하게도 그것이 바로 당신이 달성하려는 것입니다.

  2. 해당 사용자에 액세스하려면(로그인 셸이 있는 경우 위에 표시된 대로 해당 프로필로 전환하여 일반적으로 sudo권한이 필요하거나 최소한 sucmd를 사용할 수 있어야 합니다.)

답변2

나는 이것을에게서 찾았다이반레온츠Server Fault에서 ID가 저에게 효과적이었습니다.

특정 쉘을 실행하기 위해 -s 스위치를 su에 사용할 수 있습니다.

su -s /bin/bash -c '/path/to/your/script' testuser

관련 정보