이 사용자는 현재 사용할 수 없지만 이 사용자가 스크립트를 실행하도록 허용합니다.

이 사용자는 현재 사용할 수 없지만 이 사용자가 스크립트를 실행하도록 허용합니다.

다음을 사용하여 /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이 경우 su를 실행 하려면 내부에 /etc/passwd 있어야 합니다 -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'.

관련 정보