
문제
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
.)
하지만:
로그인 셸이 없는 사용자의 요점은 해당 사용자가 세션 시작 시 직접 로그인하거나 다른 사용자 계정을 통해 어떤 방식으로든 로그인할 수 없다는 것입니다. 이상하게도 그것이 바로 당신이 달성하려는 것입니다.
해당 사용자에 액세스하려면(로그인 셸이 있는 경우 위에 표시된 대로 해당 프로필로 전환하여 일반적으로
sudo
권한이 필요하거나 최소한su
cmd를 사용할 수 있어야 합니다.)
답변2
나는 이것을에게서 찾았다이반레온츠Server Fault에서 ID가 저에게 효과적이었습니다.
특정 쉘을 실행하기 위해 -s 스위치를 su에 사용할 수 있습니다.
su -s /bin/bash -c '/path/to/your/script' testuser