• Stars
    star
    195
  • Rank 199,374 (Top 4 %)
  • Language
    Objective-C
  • License
    MIT License
  • Created over 13 years ago
  • Updated over 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Unlock multiple Core Storage encrypted volumes at boot.

Unlock

https://github.com/jridgewell/unlock

APFS Volumes

If your computer has APFS volumes, Unlock will not work on your computer. Try https://github.com/openwall-com-au/BootUnlock instead.

Description

Unlock allows the system to unlock and mount Core Storage encrypted volumes during boot. In other words, this allows you to log in as a user whose home directory is on an encrypted secondary disk without any problems.

Why?

Like a many power users, I have two disks in my Macbook Pro. My startup volume is on a SSD and all of my home folder is on a second disk drive. Mac OS X Lion's FileVault 2 supports unlocking and mounting the startup volume, but doesn't support unlocking any other volume until a user has logged in. After encrypting my home drive and restarting, I was locked out of my user account and had to log in to and out of another user just to log in in as myself. This program solves that problem by unlocking Core Storage volumes (e.g., my home disk) without the need for another user account. Simply put, it allows me to log in like normal.

Install

Run this in the terminal.

curl -L https://raw.github.com/jridgewell/Unlock/master/install.sh | bash
  • You will be asked for your login password.
  • Follow the prompts
    • The install script will find all Core Storage encrypted volumes connected to your computer (it will ignore the startup volume).
    • It will then loop through the volumes it finds and ask you if you want to unlock the volume during boot.
      • If you do, it will then ask for the passphrase used to unlock that volume.
  • Everything should be set up! Restart your computer and log in to test.

Uninstall

Run this in the terminal (you'll be asked for your login password) to remove all traces from the system.

curl -L https://raw.github.com/jridgewell/Unlock/master/uninstall.sh | bash

Q&A

Does this encrypt my drive?

No, this program only unlocks volumes during boot. You must encrypt the volumes yourself before using this program.

Where is the passphrase stored?

The passphrase is stored in the encrypted System Keychain. Only users with administrative access to the computer will be able to retrieve the passphrase, but all user's will be able to unlock the volume (see next question).

I'm user A. What if user B logs in? Will my home drive be mounted?

Yes it will. The program is not aware of who is logging in and I don't know of a way to make it aware other than making it a User LaunchDaemon, which won't work. A pull request implementing this would be greatly appreciated.

Is my data really secure?

Yes. Because the System Keychain is tied to its system, your drive can't be pulled out of the computer and unlocked using another computer. Only users of your own system will be able to unlock the volume, and even then, inbuilt security measures will prevent nonadministrative users from getting any data.

Will this work after updates?

Yes, this program will continue to work even after updates. Because Apple doesn't delete LaunchDaemons during updates, the program will always be there to run on startup. And because the program uses Apple's supported APIs, the program will continue to work.

What if Apple fixes the bug?

If Apple does fix the bug, the program will not harm nor interfere in anyway. Because of the way the program works, the worst case scenario is a warning appearing in the console logs. Run the uninstall script and everything will go back to normal.

Problems?

If you have a problem, file a bug report or fix it and submit a pull request.

More Repositories

1

babel-plugin-transform-incremental-dom

Turn JSX into IncrementalDOM
JavaScript
146
star
2

trace-mapping

Trace the original position through a source map
TypeScript
76
star
3

jsx2

Just your normal (JSX) syntax, with faster performance and less memory
TypeScript
25
star
4

minionette

A mini Marionette for Backbone.js
JavaScript
23
star
5

PJs

A Promises A/+ implementation
JavaScript
18
star
6

ns2

C++
16
star
7

turbo-tailwind

An example repo that demonstrates a basic turbo-engine enabled program.
Rust
14
star
8

babel-plugin-transform-for-of-as-array

Transform all for-of loops into the equivalent array for loop
JavaScript
14
star
9

source-map

JavaScript
13
star
10

string-dedent

De-indents (dedents) passed in strings
TypeScript
8
star
11

async-context-native

A dead simple native implementation of AsyncContext
JavaScript
7
star
12

gen-mapping

JavaScript
7
star
13

proposal-regexp-atomic-and-possessive

A proposal to add Atomic Groups and Possessive Quantifiers to RegExps
HTML
6
star
14

safe-decode-uri-component

Safely decode URI components, leaving invalid sequences as they are
JavaScript
6
star
15

resolve-uri

Resolve a URI relative to an optional base URI
JavaScript
6
star
16

rw

Like sponge, but without the moreutils kitchen sink
Rust
4
star
17

path-sorter

Sort paths, giving precedence to sibling, descendant, then parent directories
TypeScript
3
star
18

set-array

JavaScript
3
star
19

minx

A completely static site generator powered by JS+JSX
JavaScript
3
star
20

typescript-import-type-without-execution

Demonstrates that TypeScript supports importing a type from an impure file without executing it
TypeScript
2
star
21

dotfiles

My homesick dotfiles
Shell
2
star
22

InstapaperActivity

Instapaper UIActivity in the share menu!
Objective-C
2
star
23

ActivityLoader

A MobileSubstrate library for adding custom UIActions (iOS 6+ share actions) to all apps.
Objective-C
2
star
24

babel-plugin-bundler

A concatenated module bundler, without redundant UMD boilerplate.
JavaScript
1
star
25

jquery-remove-backbone

Have jQuery remove your Backbone Views for you
JavaScript
1
star
26

dotvim

My precious .vim files
Vim Script
1
star
27

trimmest

Trims leading and trailing whitespace
JavaScript
1
star
28

build-mapping

Build source and source maps
TypeScript
1
star