/etc/passwd에 특수 사용자를 만들었습니다.
secure:x:2000:2000:secure:/bin:/usr/sbin/nologin
나는 이 사용자가 (콘솔, SSH, FTP 등을 통해) 로그인하는 것을 허용하고 싶지 않습니다.
그는 다음을 통해 스크립트를 실행합니다.
sudo su secure -c '/home/someuser/secure.script'
그러나 그것은 나에게 그것을 주었다 This user is currently not available.
. 이런 방식으로 스크립트를 실행할 수 있지만 해당 사용자가 시스템에 로그인(콘솔, ssh, ftp...)하지 못하도록 하려면 어떻게 설정해야 합니까?
/usr/sbin/nologin
명령줄에 입력 하면 컴퓨터가 응답하는 것을 확인했습니다 This account is currently not available.
.
답변1
이는 일반적인 사용 사례입니다 sudo
.
sudo
다른 사용자로 명령을 실행할 수 있도록 허용하고 고도로 구성 가능하며(어떤 사용자가 어떤 사용자로 어떤 명령을 실행할 수 있는지 선택적으로 지정할 수 있음) 비밀번호를 아는 경우(또는 루트인 경우) 다른 사용자로 전환하는 기능을 su
혼합하고 있습니다. 사용 하더라도 su
항상 로 작성된 쉘을 실행하십시오 . 와 관련이 있기 때문입니다 ./etc/passwd
su -c
su
/usr/sbin/nologin
당신은 사용해야합니다
sudo -u secure /home/someuser/secure.script
구성 가능 하므로 sudo
이 명령을 사용할 수 있는 사람과 명령을 실행하기 위해 암호를 입력해야 하는지 여부를 제어할 수 있습니다. 이 작업을 수행하려면 /etc/sudoers
편집을 사용해야 합니다 . visudo
(/etc/sudoers를 편집할 때는 주의하고 항상 visudo를 사용하십시오. 구문은 간단하지 않으며 실수로 인해 루트 계정에 액세스할 수 없게 될 수 있습니다.)
sudoers의 다음 줄을 사용하면 그룹의 누구나 somegroup
다음 명령을 실행할 수 있습니다 secure
.
%somegroup ALL=(secure) /home/someuser/secure.script
이렇게 하면 그룹의 모든 사람 somegroup
이 비밀번호를 입력하지 않고도 명령을 실행할 수 있습니다.secure
%somegroup ALL=(secure) NOPASSWD: /home/someuser/secure.script
이를 통해 비밀번호를 입력하지 않고도 user1
명령을 실행할 수 있습니다.secure
user1 ALL=(secure) /home/someuser/secure.script
답변2
주요 문제는 " /usr/sbin/nologin
"라는 것을 알았습니다. /etc/passwd
이 경우 su를 실행하려면 -s /bin/bash
내부에 있어야 합니다. 예를 들면 다음과 같습니다.su -s /bin/bash -c '/home/someuser/secure.script' secure
답변3
su
에 지정된 쉘이 사용 중입니다 /etc/passwd
.
su
와 함께 사용할 필요는 없습니다 sudo
.
su
그러므로 다음과 혼합 하지 마십시오 sudo
:를 사용하십시오 sudo -u secure '/home/someuser/secure.script'
.