コマンドラインからLUKSをマウントする


11

ときにnautilusまたはcajaI暗号化されたディスクのアイコンをクリックすると、パスワードを入力し、基礎となるブロックデバイスはにマッピングされます/dev/mapper/luks-$UUIDし、それがに搭載されます/media/$USER/$DISK、何のrootのパスワードは必要ありません。GUIなしでコマンドラインからこのプロセスを呼び出す方法はありますか(sudoを回避し、マウントポイントをGUIから再度アンマウントできるようにするなど)。


確実ではないので(答えではなくコメントなので)、GUIはこれをudisks(またはudisks2)を通じて行うと思います。CLIユーティリティのオプションを調査すると、さらに回答が得られる場合があります。
2015年

また、最初にパスワードを入力し、それをログインキーリングに保存することを選択した可能性もあります。したがって、技術的にパスワードを使用しますが、自動的に行われるため、パスワードは表示されません。
2015年

回答:


12

これを行う単一コマンドの方法を知りません。GUIプログラムは、「正しい」アプローチを取るためにディスクをかなり調査しているので、その一部を自分で行う必要があります。ただし、sudoは必要ありません。その結果、一連のイベントは比較的簡単です。

短い答え

パッケージudisksctlから使用udisks2

udisksctl unlock -b /path/to/disk/partition
udisksctl mount -b /path/to/unlocked/device

上記が機能するためには、ユーザーアカウントが適切に承認されている必要があります。DebianとUbuntuでは、アカウントをplugdevグループに追加することを意味します。

ディスクを使い終わったら:

udisksctl unmount -b /path/to/unlocked/device
udisksctl lock -b /path/to/disk/partition
udisksctl power-off -b /path/to/disk/or/partition

セットアップ方法

ここでは、(コマンドラインを使用して)設定を行い、ディスクを使用するプロセスをできるだけ簡単にする方法を説明します。USBドライブ全体を単一のファイルシステムとして使用したいとします。他の構成では、手順を変更する必要があります。バリエーションに関する警告:権限のないアカウントがすべてを切断できるようにする暗号化されたコンテナーでLVMを使用する方法を見つけていません。(ボリュームグループをで非アクティブ化する方法がわかりませんudisksctl。)

説明のために、ディスクをと呼ぶことにします/dev/sda。後で簡単に参照できるように、ファイルシステムの名前が必要になります。「example」を使用します。

ディスクをパーティション分割する

実行しsudo parted /dev/sdaて、次のコマンドを実行します。

mklabel gpt
mkpart example-part 1MiB -1s
quit

mkpartコマンドは、おそらく少しパラメータを調整するように求められます。推奨値を受け入れても問題ありません。

これで、パーティションはを介して使用できるようになります/dev/disk/by-partlabel/example-part

LUKSパーティションを作成してマウントする

sudo cryptsetup luksFormat /dev/disk/by-partlabel/example-part

プロンプトに従ってください。

sudo cryptsetup luksOpen /dev/disk/by-partlabel/example-part example-unlocked

暗号化されたデバイスは、で入手できます/dev/mapper/example-unlocked。これは永続的なものではありません。それはセットアッププロセスのためだけです。

ファイルシステムを作成する

使用しているファイルシステムがXFSだとしましょう。他のほとんどの従来のファイルシステムは同じように機能します。重要なことは、後で参照できるラベルを追加することです。

sudo mkfs -t xfs -L example /dev/mapper/example-unlocked

これで、ファイルシステムのブロックデバイスにからアクセスできます/dev/disk/by-label/example

ファイルシステムのアクセス許可を設定する

デフォルトでは、ファイルシステムにアクセスできるのはrootだけです。ほとんどの場合、ユーザーアカウントでファイルにアクセスできるようにする必要があります。アカウント名が " user"であると仮定します:

udisksctl mount -b /dev/disk/by-label/example
sudo chown user:user /media/user/example

すべてを閉じる

udisksctl unmount -b /dev/disks/by-label/example
sudo cryptsetup luksClose example-unlocked

ファイルシステムを使用する

これは定期的に行うことです。USBドライブを差し込んだ後、

udisksctl unlock -b /dev/disks/by-partlabel/example-part
udisksctl mount -b /dev/disks/by-label/example

ユーザーアカウントが " user"の場合、ファイルシステムはにマウントされ/media/user/exampleます。

ファイルシステムをアンマウントするには:

udisksctl unmount -b /dev/disks/by-label/example
udisksctl lock -b /dev/disks/by-partlabel/example-part
udisksctl power-off -b /dev/disks/by-partlabel/example-part

これで、USBドライブを取り外すことができます。


私は、「Use Your Filesystem」セクションを自動化および簡素化するオープンソースのbashスクリプトを作成しました:github.com/JerichoJyant/usbkey。USBフラッシュドライブ用に設計されています。ここで説明する設定をスクリプトにも組み込む予定です。
ジョシュパットン

3

その答えによってasciiphilは正しいように私には思える、とそのようにマークされなければなりません。

「これを行うための単一コマンドの方法がわかりません。」私も、対応する機能リクエストを開きません。回避策として、ラッパースクリプトを作成して、パーティションのロックを解除してマウントする単一コマンドの方法を提供できます。

Bashを使用すると仮定して、以下のスクリプトをとして保存unlock-and-mountしますPATH。たとえば、実行可能にして、のディレクトリに置きます。その後、を使用すると、1つの手順でデバイスのロックを解除してマウントできunlock-and-mount /dev/disk/by-id/my-device-part-Xます。

警告:これは、udisksctlstdoutに送信されるメッセージの解析と、udisksctlコマンドラインインターフェイスの安定性に依存しています。udisksctl マニュアルページによれば、これは壊れやすいという。

[この]プログラムは、スクリプトや他のプログラムで使用することを意図したものではありません。オプション/コマンドは、メンテナンスリリースでも将来互換性のない方法で変更される可能性があります。

それまでの間、次のスクリプトは今のところ機能します。

#!/usr/bin/env bash
# A convenience wrapper around `udisksctl`.

# Trace execution 
set -x

# Abort on errors. (I find this helpful, despite the cautions given in
# http://mywiki.wooledge.org/BashFAQ/105 and
# http://mywiki.wooledge.org/BashFAQ/112 .)
set -e
set -u

# Define functions
die () {
    echo >&2 "$@"
    exit 1
}

# Validate input argument(s) 
[[ "$#" -eq 1 ]] || die "Exactly 1 argument required: path to partition ID. $# given"
[[ -b "$1" ]]    || die "$1 is not a block device"
[[ "$1" == /dev/disk/by-id/* ]] || die "$1 does not begin '/dev/disk/by-id/'"

# Unlock partition
unlockedpart="$(udisksctl unlock -b "$1" |\
 tail -n1 |\
 sed -e 's/^Unlocked \/dev\/[[:print:]]\+ as \([[:print:]]\+\).$/\1/' \
)"

# Mount unlocked partition
udisksctl mount -b "$unlockedpart"

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.