다음을 사용하여 /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
이 경우 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'
.