systemd サービスの起動時にパスワードの入力を求めるメッセージを表示

systemd サービスの起動時にパスワードの入力を求めるメッセージを表示

これはArch Linux(および使用される他のディストリビューション)に関連していますsystemd。起動時にTrueCryptパーティションをインストールしたいと思います。以前のバージョンでは、sysvinitviaというスクリプトは非常に簡単ですrc.local

現在のものを拉致したアーチフォーラムトピック。またありますワイヤーどここのシステム開発スレッド「解決策がある」と述べたが、それが実際に何であるかは私には不明であり、OPは最後の投稿で自分の目標を達成できないと指摘した。

その姿からこの人これに取り組んでいますが、パスワードを入力したときに続く開始メッセージをオフにする方法を探しています。私はまた、彼の実際の.service文書を公開するように求める記事を投稿しました。

多くの検索では、人々は成功したか可能であると述べていますが、解決策が何であるかを明示していません。

サービスを介してコマンドラインからパーティションのロックを解除しようとしましたがsystemd(終了/再起動時に自動的にパーティションをマウント解除できます)、ログインした後に手動でこれを行う必要がありました。起動プロセスが中断され、パスワードを求めてほしい。

これは私の現在のスクリプトです。

[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]ある瞬間そこに入れなければならないという提案があってコメント内容を残しておいたのに問題が生じました。上記は、開始/ログイン後に正しく機能するようです。しかし、中には動作しません。

答え1

  • ラッパースクリプトを作成して挿入します。ExecStart=
  • ラッパースクリプトでを使用してsystemd-ask-password <PROMPT>標準出力からパスワードを読み取り、必要な方法でtruecryptに入力します。
  • exec追加のbashプロセスを残さないように、スクリプトの最後でtruecryptを実行することを忘れないでください。

これにより、すぐにパスワードのシステムクエリを実行するか(systemctlを使用してApacheを起動した場合)、いわゆるプロキシの1つを使用します(デフォルトのプロキシはシステムの起動中に壁を使用するか、コンソールから直接パスワードを要求します)。これが規制を遵守するためにできる最善の方法です。

答え2

Unix StackExchangeで次の記事を見つけました。 rc.local 読み取りはキーストロークをエコーし​​ません。
私はあなたが以下を使って解決策を試してみることができると思います。

関連情報