시스템 서비스로 부팅하는 동안 암호를 묻는 메시지가 표시됨


16

이것은 아치 리눅스 (그리고 아마도 다른 배포판을 사용하는 배포판 systemd) 와 관련이 있습니다. 부팅시 TrueCrypt 파티션을 마운트하고 싶습니다. 이전 버전 sysvinit에서는 다음과 같은 스크립트를 사용하여 매우 간단했습니다.rc.local .

나는 아치 포럼 스레드를 납치하여 현재에 도착했다 . 이 systemd-devel 스레드가 있는 또 다른 스레드 가 있습니다. 가 "솔루션을 "고 말하는 있지만, 그것이 실제로 무엇인지는 분명하지 않으며 OP는 자신의 목표를 달성 할 수 없다는 마지막 게시물을 가지고 있습니다.

그 사람의 모습 에서이 사람 은하고 있지만 암호를 입력하는 동안 연속 부팅 메시지를 끄는 방법을 찾고있었습니다. 나는 거기에 게시하고 그의 실제 게시를 요청.service 파일 .

꽤 많은 검색에서 사람들은 자신이 성공했거나 가능하다고 언급하지만 솔루션이 무엇인지 정확하게 설명하지는 않습니다.

systemd서비스 를 통해 명령 줄에서 파티션을 잠금 해제 할 수있는 한 (종료 후 다시 부팅 할 때 자동으로 분리 할 수있는 기능을 제공합니다) 로그인 한 후에 수동으로 수행해야합니다. d 부팅 프로세스가 일시 중지되어 암호를 묻는 것을 정말로 좋아합니다.

내 현재 스크립트는 다음과 같습니다.

[Unit]
Description=Truecrypt Setup for vault
#DefaultDependencies=no
#Conflicts=umount.target
#Before=umount.target
#After=systemd-readahead-collect.service systemd-readahead-replay.service
#After=cryptsetup.target

[Service]
Type=oneshot
RemainAfterExit=yes
#StandardInput=tty-force
ExecStart=/bin/sh -c '/usr/bin/truecrypt -t --protect-hidden=no -k "" --filesystem=none --slot=1 -p `systemd-ask-password "Enter password for truecrypt volume: "` /dev/sda4'
ExecStop=/usr/bin/truecrypt --filesystem=none -d /dev/sda4

[Install]
WantedBy=multi-user.target

주석이 달린 항목을에 남겨 두었습니다. 언제나 [Unit]거기에 있어야한다는 제안이 있었지만 문제가있었습니다. 위의 내용은 부팅 / 로그인 후에는 정상적으로 작동하는 것 같습니다.


내가 이해하는 한, 메시지를 로깅하여 중단하지 않으려면 단위 파일에 장벽을 만들어야합니다. 즉, 모든 서비스를 완료하기 전에 시작해야합니다 (초기화). 그 이후에 실행되는 모든 서비스. 그게 당신이 달성하려는 것입니까?
peterph

@ peterph 프롬프트가 표시 될 때 TrueCrypt에 필요한 것이 무엇이든 실행되는 한 중요하지 않다고 생각합니다. 다른 것들은 파일 저장을위한 볼륨이기 때문에 이것에 의존하지 않습니다. 따라서 암호를 입력하는 동안 다른 것들이 백그라운드에서로드 될 수 있습니다. 현재 로그인을 기다린 다음 수동으로 시작하여 비밀번호를 입력하고 TC 볼륨 비밀번호를 입력 한 다음을 sudo systemctl start truecrypt-vault입력 su합니다 startx. 로그인 후 추가 단계를 피하기 위해 부팅 중에 비밀번호 프롬프트를 표시 할 수 있습니까?
Hendy

부팅하는 동안 암호 프롬프트를 얻는 것이 저의 요점이며 실제로 귀하의 것이기도합니다. 와 같은 그래픽 부팅을 사용하지 않으면 plymouth콘솔에서 암호 프롬프트가 동시에 시작되는 서비스에서 손실 될 수 있습니다.
peterph 2016 년

오. 서비스를 중지해야하는지 또는 이전의 모든 서비스가 시작되었는지 확인해야한다고 생각했습니다 ... 확실하지 않으며 최대한 답변을 드리려고 노력했습니다. 텍스트 로그인과 startx수동으로 런레벨 3으로 만 부팅합니다 . 로그인 관리자가 없습니다. 하지만 그래, 내가 그렇지 않으면 그냥 화면 밖으로 사라지는거야, 내가 텍스트를 입력하는 동안 부팅 메시지를 중지해야합니다.
Hendy

8
음, 암호를 요청할 수 systemd있는 에이전트 가 있으므로 해당 방향을 살펴볼 수 있습니다.
peterph

답변:


2
  • 랩퍼 스크립트를 작성하여 넣습니다. ExecStart=
  • 랩퍼 스크립트에서를 사용 systemd-ask-password <PROMPT>하고 stdout에서 비밀번호를 읽고 필요한 방식으로 truecrypt에 공급하십시오.
  • exec여분의 bash 프로세스를 남기지 않기 위해 스크립트 끝에서 truecrypt를 잊지 마십시오.

이것은 systemdl을 즉시 (systemctl을 사용하여 아파치를 시작하는 경우) 또는 소위 에이전트 (시스템 부팅 중에 벽을 사용하거나 콘솔에서 직접 암호를 요구하는 기본 에이전트가 있음)를 사용하여 조회합니다. 준수를 유지하기 위해 할 수있는 최선의 방법입니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.