나는 / 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.
.
답변
의 일반적인 사용 사례입니다 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
답변
이 문제 /usr/sbin/nologin
에서 /etc/passwd
su를 실행하려면 -s /bin/bash
내부에 있어야합니다 . 예를 들면 다음과 같습니다.su -s /bin/bash -c '/home/someuser/secure.script' secure
답변
su
에 지정된 쉘을 사용하고 /etc/passwd
있습니다.
su
와 함께 사용할 필요는 없습니다 sudo
.
따라서 혼합하지 마십시오 su
과 함께 sudo
사용 : sudo -u secure '/home/someuser/secure.script'
.