이 사용자는 현재 사용할 수 없지만 이 사용자는 스크립트를 실행할 수 있습니다.

이 사용자는 현재 사용할 수 없지만 이 사용자는 스크립트를 실행할 수 있습니다.

/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/passwdsu -csu/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'.

관련 정보