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