로그인 셸 없이 사용자에게 어떻게 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를 통한 로그인은 불가능하며 (더 많은 문제는) 모니터와 키보드를 통한 로그인도 불가능합니다.

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

이것이 내가 달성하고 싶은 전부입니다. 사용자가 수행할 수 있는 작업과 허용되지 않는 작업에 대한 좀 더 세부적인 세부 정보가 있습니다. 하지만 최대한 간단하게 설명하기 위해 "sudo"를 사용하여 간단히 설명하겠습니다.

답변1

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

하지만:

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

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

답변2

나는 이것을에게서 찾았다이반 레온츠서버 오류 및 ID:

su의 -s 스위치를 사용하여 특정 쉘을 실행할 수 있습니다

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

관련 정보