2016-10-08 17:36:35 +02:00
|
|
|
Mounting gocryptfs on login using pam_mount
|
|
|
|
===========================================
|
|
|
|
|
|
|
|
This works on Fedora 24 with active SELinux. Feedback on other platforms
|
|
|
|
is welcome.
|
|
|
|
|
|
|
|
gocryptfs
|
|
|
|
---------
|
|
|
|
|
|
|
|
Copy the `gocryptfs` binary and `gocryptfs_pam_mount.bash` into
|
|
|
|
`/usr/local/bin` .
|
|
|
|
|
|
|
|
The bash wrapper is neccessary because of the different calling
|
|
|
|
conventions between pam_mount and gocryptfs.
|
|
|
|
|
|
|
|
Create a gocryptfs filesystem:
|
|
|
|
```
|
|
|
|
$ mkdir /home/testuser/cipher /home/testuser/plain
|
|
|
|
$ gocryptfs -init /home/testuser/cipher
|
|
|
|
```
|
|
|
|
|
|
|
|
pam_mount config
|
|
|
|
----------------
|
|
|
|
|
|
|
|
Put the following into `/etc/security/pam_mount.conf.xml`, just before
|
|
|
|
the closing `</pam_mount>` tag at the bottom:
|
|
|
|
|
|
|
|
```
|
|
|
|
<volume user="testuser" fstype="fuse" options="defaults"
|
|
|
|
path="/usr/local/bin/gocryptfs_pam_mount.bash#/home/%(USER)/cipher"
|
|
|
|
mountpoint="/home/%(USER)/plain" />
|
|
|
|
```
|
|
|
|
|
2016-10-08 18:12:09 +02:00
|
|
|
Replace `testuser` with your user name.
|
|
|
|
|
2016-10-08 17:36:35 +02:00
|
|
|
If you want to disable the display of the masterkey on mount, replace
|
|
|
|
`options="defaults"` with `options="quiet"`.
|
|
|
|
|
|
|
|
PAM config
|
|
|
|
----------
|
|
|
|
|
|
|
|
An example `/etc/pam.d/login` on Fedora 24 is shown below. pam_mount
|
|
|
|
MUST be called AFTER `pam_selinux.so open` because that puts us in the
|
2016-10-08 18:12:09 +02:00
|
|
|
right SELinux context. If are logging in via gcm, also add the line in
|
|
|
|
`/etc/pam.d/gdm-password`.
|
2016-10-08 17:36:35 +02:00
|
|
|
|
|
|
|
```
|
|
|
|
#%PAM-1.0
|
|
|
|
auth substack system-auth
|
|
|
|
auth include postlogin
|
|
|
|
account required pam_nologin.so
|
|
|
|
account include system-auth
|
|
|
|
password include system-auth
|
|
|
|
session required pam_selinux.so close
|
|
|
|
session required pam_loginuid.so
|
|
|
|
session optional pam_console.so
|
|
|
|
session required pam_selinux.so open
|
|
|
|
session required pam_namespace.so
|
|
|
|
# vvv insert pam_mount here
|
|
|
|
session optional pam_mount.so
|
|
|
|
# ^^^ insert pam_mount here
|
|
|
|
session optional pam_keyinit.so force revoke
|
|
|
|
session include system-auth
|
|
|
|
session include postlogin
|
|
|
|
-session optional pam_ck_connector.so
|
|
|
|
```
|
2016-10-08 18:12:09 +02:00
|
|
|
|
|
|
|
Encrypting the whole home directory
|
|
|
|
-----------------------------------
|
|
|
|
|
|
|
|
Use this volume definition in `/etc/security/pam_mount.conf.xml`:
|
|
|
|
|
|
|
|
```
|
|
|
|
<volume user="testuser-whole-home" fstype="fuse" options="nonempty,allow_other"
|
|
|
|
path="/usr/local/bin/gocryptfs_pam_mount.bash#/home/%(USER).cipher"
|
|
|
|
mountpoint="/home/%(USER)" />
|
|
|
|
```
|
|
|
|
|
|
|
|
Replace `testuser-whole-home` with your user name.
|