리눅스 서비스로 자동실행 시 문제점입니다.
글쓴이: sootoo23 / 작성시간: 목, 2019/04/11 - 3:11오후
임베디드 리눅스 시스템에서 개발중에 있는데요...
어플리케이션을 데몬으로 실행을 하게되면
어플리케이션의 콘솔 기능을 사용하지 못하게 됩니다.
찾아보면, 데몬으로 실행할 경우 tty제어는 못한다고 나오는데..
그럼 tty를 제어하는 어플리케이션은 자동실행하려면 어떻게 해야하나요?
* 참고로 systemd OS로, /etc/init.d/ 폴더에 rcS 같은 script로 직접 실행하는 방식은
동작이 안됩니다. (inittab도 없음)
* rc3.d 폴더에 링크를 걸어 실행할 경우 데몬으로 실행되어 콘솔기능을 사용하지 못합니다.
Forums:
음....
음....
보통 데몬은 만들때는 fork()를 사용하여 부모프로세스는 종료하고,
자식 프로세스로 동작하게 만듭니다.
보통의 데몬....
음.. 데몬은 단순히 백그라운드에서 항상 실행되는 놈인데..
그럼..보통의 데몬은 fork를 사용하여 부모를 종료하고 자식으로 동작하는 이유가 뭘까요?
자식프로세스의 경우 Service로 실행되어도 tty 터미널 제어를 할 수 있나요?
일단 한번 해보겠습니다.
데몬이 백그라운드로 실행되고 tty 터미널 제어한다는
데몬이 백그라운드로 실행되고 tty 터미널 제어한다는 말이 무슨뜻인지 잘 모르겠습니다.
혹시 어떤 상황인지 설명 해 주실 수 있는지요?
상황 설명...
백그라운드로 항상실행되는 프로그램 = 데몬
터미널을 제어한다는 말은
제가 만든 Application에서 ttyS0 를 사용해 Console UI를 제공하고,
사용자가 특정 명령을 이용하여 설정, 감시, 제어 등을 할 수 있도록
Console 기능을 제공하고 있습니다.
아~ 이해했습니다.
아~ 이해했습니다.
저 같은 경우는 일반 계정을 만들고 /etc/passwd 에서 해당 계정의 shell을 제가 만든 Console UI 바꾸는 식으로 했었습니다.
그러면 굳이 ttyS0를 따로 제어한다거나 데몬을 실행 시킬 필요가 없습니다.
자세히 설명 부탁드립니다.
일단, fork()로 자식프로세스를 생성하여 테스트 해보았지만, 문제는 동일합니다.
죄송하지만,
/etc/passwd에서 해당 계정의 shell을 제가만든 console UI로 바꾸는 식이라는 말이
이해가 가지 않습니다.
자세히 설명부탁드립니다!!..
fork()는 무시하세요. 제가 잘 못 이해 했습니다
fork()는 무시하세요. 제가 잘 못 이해 했습니다.
예를 들면 이런 간단한 shell이 있다고 하면
이걸 testcli 라고 컴파일 후에 /bin 디렉토리에 복사 해놓았다고 가정 하겠습니다.
그러면 /etc/passwd 에다가
이렇게 변경 후 user1 ID로 로그인 하면 만든 프로그램이 실행이 될 꺼에요
오 신기하네요!
passwd에 제 Application을 넣으니까 전부다 잘되네요.
감사합니다.
죄송하지만, 한가지 더 여쭤볼게 있는데요.
/etc/passwd로 제 App을 실행하니까 제대로 root로 로그인 되지않아
FTP, Linux 명령을 사용할 수 없게 되는데
혹시 이것도 다른 방법이 있을까요?
이런 상황에서는 setuid 나 setgid를
이런 상황에서는 setuid 나 setgid를 활용해야 합니다
아하
좋은 답변 감사드립니다.!
음.. 일단 실행은되는데..
음.. 일단 알려주신대로 사용하고 있습니다.
모든 Application이 잘 실행 되고 있으나,
FTP의 경우 로그인 할 경우 로그인은 되나 아무폴더도 보이지 않게 됩니다.
그러나 반대로 /etc/passwd파일에 쉘은 원래되로 /bin/sh로 지정할 경우
로그인하게되면 모든폴더가 잘 보이고 R/W도 잘 됩니다.
----------------------------------------------------------------------
이와 관련하여 방금 테스트 한결과..
아직 정확한 원인은 모르겠으나..
/etc/passwd 파일의 root 계정의 home dir을 / 로 잡아주니
모든 폴더에 접근이 가능하게 됬습니다.
거기까지 생각은 안했네요...
거기까지 생각은 안했네요...
해당 계정으로 FTP로그인 용도로도 사용 하시려면, 다시 처음부터 다시 생각을 해봐야 할 것 같습니다.
FTP를 어떤 용도로 쓰는지 모르겠지만, FTP 전용 계정을 추가하던가, 아니면 다른 방법을 찾아 봐야 할 것 같습니다.
댓글 달기