Nhắc mật khẩu trong khi khởi động với dịch vụ systemd


16

Điều này có liên quan đến Arch Linux (và có lẽ các bản phân phối khác đang sử dụng systemd). Tôi muốn gắn kết một phân vùng TrueCrypt khi khởi động. Với cái cũ sysvinit, điều này khá dễ dàng với một kịch bản được gọi bởi rc.local.

Tôi đã nhận được hiện tại của tôi bằng cách chiếm lĩnh một chủ đề diễn đàn Arch . Có một chủ đề khác trong đó chủ đề phát triển hệ thống này được nói đến là "có giải pháp", tuy nhiên tôi không rõ nó thực sự là gì và OP có bài đăng cuối cùng nói rằng anh ta không thể hoàn thành mục tiêu của mình.

Từ vẻ ngoài của nó , người này đang làm điều đó, nhưng đang tìm cách tắt các tin nhắn khởi động liên tục trong khi anh ta gõ mật khẩu. Tôi đã đăng ở đó cũng như yêu cầu anh ta đăng .servicehồ sơ thực tế của mình .

Khi tìm kiếm khá nhiều, mọi người đề cập rằng họ đã thành công hoặc điều đó là có thể, nhưng đừng đánh vần chính xác giải pháp là gì.

Tôi có thể mở khóa phân vùng từ dòng lệnh thông qua một systemddịch vụ (điều này cho tôi khả năng tự động tháo gỡ nó khi tắt máy / khởi động lại), nhưng tôi phải thực hiện thủ công sau khi đăng nhập. Tôi Tôi thực sự thích quá trình khởi động để tạm dừng và hỏi tôi mật khẩu.

Đây là kịch bản hiện tại của tôi:

[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

Tôi đã để lại những thứ được bình luận [Unit], vì một lúc nào đó tôi gặp phải những gợi ý rằng nó nên ở đó, nhưng tôi có vấn đề với nó. Ở trên dường như chỉ hoạt động tốt sau khi khởi động / đăng nhập ... chỉ không trong thời gian.


Theo tôi hiểu, nếu bạn không muốn bị gián đoạn bởi việc ghi nhật ký tin nhắn, bạn cần tạo một rào cản trong tệp đơn vị - nghĩa là nó sẽ yêu cầu tất cả các dịch vụ bắt đầu trước khi kết thúc (khởi tạo) và nó sẽ chặn bất kỳ dịch vụ chạy sau nó. Đó có phải là những gì bạn đang cố gắng để đạt được?
peterph

@peterph Tôi không nghĩ nó quan trọng miễn là bất cứ thứ gì được TrueCrypt yêu cầu đều chạy theo thời gian tôi nhận được lời nhắc. Những thứ khác không phụ thuộc vào điều này vì nó chỉ là một khối để lưu trữ tệp; do đó, những thứ khác có thể tải trên nền trong khi tôi nhập mật khẩu. Hiện tại, tôi chờ đăng nhập, sau đó bắt đầu bằng tay sudo systemctl start truecrypt-vault, nhập sumật khẩu, nhập mật khẩu TC Volume, sau đó startx. Chắc chắn tôi có thể có dấu nhắc mật khẩu được trình bày cho tôi trong khi khởi động để tránh các bước bổ sung sau khi đăng nhập?
Hendy

Đó là quan điểm của tôi và thực ra cũng là của bạn (ngay cả trong chủ đề câu hỏi) - để nhận được lời nhắc mật khẩu trong khi khởi động. Nếu bạn không sử dụng đồ họa khởi động như thế plymouth, bất kỳ dấu nhắc mật khẩu nào trên bảng điều khiển có khả năng bị mất trong các dịch vụ bắt đầu song song.
peterph

Oh. Tôi nghĩ rằng bạn đang hỏi liệu tôi có cần dừng dịch vụ sau hay để đảm bảo tất cả các dịch vụ trước đó đã bắt đầu ... Tôi không chắc chắn và cố gắng trả lời tốt nhất có thể. Tôi chỉ khởi động để runlevel 3 với một văn bản đăng nhập và startxthủ công. Không có người quản lý đăng nhập. Nhưng vâng, tôi làm cần thiết để ngăn chặn các thông điệp khởi động trong khi tôi nhập văn bản, nếu không nó sẽ chỉ biến mất khỏi màn hình.
Hendy

8
Vâng, systemdcó một đại lý có thể yêu cầu mật khẩu, vì vậy bạn hãy nhìn theo hướng đó.
peterph

Câu trả lời:


2
  • Viết một kịch bản lệnh bao bọc và đặt nó vào ExecStart=
  • Từ tập lệnh bao bọc, sử dụng systemd-ask-password <PROMPT>, đọc mật khẩu từ thiết bị xuất chuẩn của nó và đưa nó vào truecrypt theo bất kỳ cách nào được yêu cầu
  • Đừng quên exectruecrypt từ cuối tập lệnh của bạn để không để lại quá trình bash thêm xung quanh

Điều này sẽ khiến systemd truy vấn mật khẩu ngay lập tức (nếu bạn bắt đầu apache bằng systemctl) hoặc sử dụng một trong những tác nhân được gọi là (có những mật khẩu mặc định hỏi mật khẩu bằng tường hoặc trực tiếp trên bàn điều khiển trong quá trình khởi động hệ thống). Đây là điều tốt nhất bạn có thể làm để tuân thủ.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.