Re: a zfs thank you :)
- Reply: Steffen Nurpmeso : "Re: a zfs thank you :)"
- In reply to: Steffen Nurpmeso : "Re: a zfs thank you :)"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Tue, 20 Aug 2024 06:08:33 UTC
On Tue, Aug 20, 2024 at 12:18 AM Steffen Nurpmeso <steffen@sdaoden.eu> wrote:
>
> Jan Bramkamp wrote in
> <d8c5a0b1-6162-4b7a-8bbe-4fea2dd4ee4c@rlwinm.de>:
> |On 31.07.24 17:02, void wrote:
> |> I was pleasantly surprised when I installed a new [1] zfs-on-root
> |> -current
> |> to rpi4 that when adduser was invoked, I was given the option to
> |> encrypt the homedir. This is a great feature for my context [2].
> |>
> |> It doesn't automount on boot but I think this is more of a feature
> |> rather than a bug. One can have a different password to the GELI one used
> |> to boot up the whole system.
> |>
> |> I have not tested yet whether one can have the user, once logged in,
> |> mount
> |> their homedir with doas(1). Right now, I mount the homedir like so:
> |>
> |> zfs load-key -a (prompts for password)
> |> zfs mount -a
> |>
> |> as root.
> |>
> |> I could I guess make a doas line for the user for zfs load-key -r
> |> zfsfile/system.
> |> Can anyone suggest any better ideas please?
>
> |There is the pam_zfs_key.so PAM session module that should do exactly
> |what you're looking for if your users login with a password. It should
> |similar to the pam_ssh.so module if you're already familiar with that
> |one. Unless users provide the password there isn't much file system or
> |disk encryption can do for you against hardware theft since the
> |Raspberry Pi doesn't have any secure key storage nor would the kernel be
> |able to know when it has been stolen and stop auto-loading the keys.
>
> To suggest a screen locker for "warm" security.
> Ie here this is (on Linux, in /root/bin/zzz.sh upon lid close etc)
>
> if command -v X >/dev/null 2>&1 && command -v slock >/dev/null 2>&1; then
> had_z=
> for p in $(pgrep X); do
> uid=$(awk '/^Uid:/{print $2}' < /proc/$p/status)
> disp=$(sed -Ee 's/^.*DISPLAY=:([[:digit:]]+).*$/\1/' < /proc/$p/environ)
> [ -z "$disp" ] && disp=$(xargs -0 printf '%s\n' < /proc/$p/cmdline |
> awk '/^:[[:digit:]]+/{sub(":", ""); print}')
> if [ -z "$disp" ]; then
> [ -n "$had_z" ] && continue
> had_z=y
> disp=0
> elif [ $disp = 0 ]; then
> [ -n "$had_z" ] && continue
> had_z=y
> fi
> act "DISPLAY=:$disp $SUPER -u $uid slock </dev/null >/dev/null 2>&1 &"
> done
> fi
>
> Unfortunately there is no other easy way i know to lock all
> X sessions otherwise.
>
> This is the problem i have with "encrypted home directories" per
> se, i do not use that, but have several encfs directories, like,
> say, ~/.sec.arena, which i mount via fuse as a normal user, and
> $HOME is nothing but a symlink farm like
> .xinitrc -> sec.arena/configs.git/home/.xinitrc
> so before i mount this that is all hollow.
> The zzz.sh script also does (simplified)
>
> if command -v encfs >/dev/null 2>&1; then
> grep encfs /proc/mounts | cut -d ' ' -f 2 | {
> while read line; do
> act "{ sync $line/.; umount $line; } </dev/null >/dev/null 2>&1 &"
> done
> }
> fi
>
> so that all these are unmounted upon LID close etc. (Unless some
> process uses any directory within as CWD/pwd(1), then not. Force
> unmounting does not work.)
>
> Ie that is all pretty uncomfortable (it is even more complicated
> in practice), but like this data i care of a bit more is not
> mounted when the LID is opened. (And data i really need to take
> care off is never mounted all the time. And "of course" the hard
> disk partition as such is also "cold" encrypted.)
>
> Ie, i just feel better that way. If you steal the laptop you can
> switch to another console, and, i mean, here is no automounter for
> USB sticks or what, no code runs then (i hope), but i do not know,
> but anyway, if all that time an encrypted home directory of myself
> would be unencrypted, that feels a bit odd.
>
> Anyhow. To remark that PAM sessions can easily be bypassed by any
> shell script (script </dev/null >/dev/null 2>&1 &), and, i looked
> at the ZFS PAM module in particular a few years ago, it did not
> do anything REAPER-alike by then. That is "script" may be running
> when the ZFS user logs out, and the PAM module will then likely
> unmount the ZFS home directory.
> One should at least hear about this situation once.
>
> It would be cool if the PAM implementations i know (Open and
> Linux) would consider adding a dedicated session reaper, with all
> session related modules stopping doing lots of dances, but instead
> relying on some generic PAM library support mechanism.
> Sounds a bit like a sophisticated and relevant Google Summer of
> Code or something project.
It feels like you're reimplementing ConsoleKit. I'm not sure if it can
react to lid closing out of the box, but it manages sessions and
locks/unlocks them depending on circumstances.