A criação de uma nova pasta criptografada e a movimentação dos arquivos devem funcionar, mantendo-os em um estado criptografado em disco o tempo todo. Mas é a descriptografia automática no login que pode ser um problema.
Criar um módulo PAM personalizado que possa usar a senha de login e usá-la para descriptografar / montar qualquer outra coisa (eCryptFS, EncFS, LUKS, etc) seria uma solução de propósito geral ...
Normalmente, ecryptfs-setup-private
funcionaria, mas o eCryptFS não suporta pastas criptografadas aninhadas (um eCryptFS com uma chave, dentro de outro eCryptFS com uma chave diferente), portanto, ter uma casa criptografada pode causar problemas, mas você pode tentar alguns outros respostas e ver se funciona:
Script em sua casa que é executado no login
Como sua casa já está criptografada, ter um script não é tão ruim como de costume, você pode até manter a senha em texto simples no script também (normalmente uma idéia terrível, mas criptografada em casa).
- De Como faço para montar uma partição criptografada do eCryptFS no login?
- Informações adicionais / gerais Como executar um comando no login?
Primeiro, obtenha um script para ser executado no login:
-
Um arquivo .desktop em ~ / .config / autostart será executado no login, dizendo para executar um script bash que monta sua pasta criptografada deve funcionar. Como sua casa já está criptografada, você pode armazenar a outra senha de montagem no script bash, não uma segurança perfeita, mas ainda criptografada no disco, se você não quiser inseri-la a cada vez. Por exemplo,
~/.config/autostart/test.desktop
. Um muito básico como este deve funcionar:[Desktop Entry] Type=Application Exec=/home/user/.config/autostart/runme.sh
Ou para aguardar alguns segundos antes de começar (por exemplo, dê tempo à área de trabalho para inicializar antes de solicitar uma frase secreta) e execute como root, tente isto:
[Desktop Entry] Type=Application Exec=sudo bash -c "sleep 5; /home/user/.config/autostart/runme.sh"
-
Em seguida, encontre um script para descriptografar sua outra pasta. Se você está usando EncFS , então seria basicamente apenas uma linha, mas eCryptFS é diferente. O mais fácil pode ser criar (temporariamente) um novo usuário, fazer esse usuário executar
ecryptfs-migrate-home
ouecryptfs-setup-private
e depois copiar a pasta criptografada resultante para o novo local.
O script a seguir assume que é uma segunda casa criptografada que você deseja montar:
#!/bin/sh -e
#
# ecryptfs-mount-single
# Modified by Xen2050 from:
#
# ecryptfs-recover-private
# Copyright (C) 2010 Canonical Ltd.
#
# Authors: Dustin Kirkland <[email protected]>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, version 2 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
error() {
echo "ERROR: $@" 1>&2
echo "Usage: ecryptfs-mount-single [--rw] [encrypted private dir] [mountpoint]"
echo "\tWill attempt to mount [encrypted private dir (.Private)] to [mountpoint]"
echo "\twith standard options: ecryptfs_cipher=aes,ecryptfs_key_bytes=16"
echo "\n\t--rw\tmount with read-write access (optional)"
echo "\t[mountpoint] will attempt to be created if it does not exist"
exit 1
}
info() {
echo "INFO: $@"
}
# We need root access to do the mount
[ "$(id -u)" = "0" ] || error "This program must be run as root."
# Handle parameters
opts="ro"
if [ "$1" = "--rw" ]; then
opts="rw"
shift
fi
if [ -d "$1" ]; then
# Allow for target directories on the command line
d="$1"
# Only supplying one directory
else
error "No private directory found; it must be supplied."
fi
if [ ! -d "$2" ]; then
mkdir -p "$2" || error "mountpoint $2 does not exist, can not create"
fi
# mount directory on the command line
tmpdir=$2
# Determine if filename encryption is on
ls "$d/ECRYPTFS_FNEK_ENCRYPTED"* >/dev/null 2>&1 && fnek="--fnek" || fnek=
if [ -f "$d/../.ecryptfs/wrapped-passphrase" ]; then
info "Found your wrapped-passphrase"
echo -n "Do you know your LOGIN passphrase? [Y/n] "
lpw=$(head -n1)
case "$lpw" in
y|Y|"")
# Use the wrapped-passphrase, if available
info "Enter your LOGIN passphrase..."
ecryptfs-insert-wrapped-passphrase-into-keyring "$d/../.ecryptfs/wrapped-passphrase"
sigs=$(sed -e "s/[^0-9a-f]//g" "$d/../.ecryptfs/Private.sig")
use_mount_passphrase=0
;;
*)
use_mount_passphrase=1
;;
esac
else
# Fall back to mount passphrase
info "Could not find your wrapped passphrase file."
use_mount_passphrase=1
fi
if [ "$use_mount_passphrase" = "1" ]; then
info "To recover this directory, you MUST have your original MOUNT passphrase."
info "When you first setup your encrypted private directory, you were told to record"
info "your MOUNT passphrase."
info "It should be 32 characters long, consisting of [0-9] and [a-f]."
echo
echo -n "Enter your MOUNT passphrase: "
stty_orig=$(stty -g)
stty -echo
passphrase=$(head -n1)
stty $stty_orig
echo
sigs=$(printf "%smv ~/Private /path/to/new/folder
" "$passphrase" | ecryptfs-add-passphrase $fnek | grep "^Inserted" | sed -e "s/^.*\[//" -e "s/\].*$//" -e "s/[^0-9a-f]//g")
fi
case $(echo "$sigs" | wc -l) in
1)
mount_sig=$(echo "$sigs" | head -n1)
fnek_sig=
mount_opts="$opts,ecryptfs_sig=$mount_sig,ecryptfs_cipher=aes,ecryptfs_key_bytes=16"
;;
2)
mount_sig=$(echo "$sigs" | head -n1)
fnek_sig=$(echo "$sigs" | tail -n1)
mount_opts="$opts,ecryptfs_sig=$mount_sig,ecryptfs_fnek_sig=$fnek_sig,ecryptfs_cipher=aes,ecryptfs_key_bytes=16"
;;
*)
continue
;;
esac
(keyctl list @u | grep -qs "$mount_sig") || error "The key required to access this private data is not available."
(keyctl list @u | grep -qs "$fnek_sig") || error "The key required to access this private data is not available."
if mount -i -t ecryptfs -o "$mount_opts" "$d" "$tmpdir"; then
info "Success! Private data mounted at [$tmpdir]."
else
error "Failed to mount private data at [$tmpdir]."
fi
Desmontando antes / quando desconectando, e talvez removendo as chaves do chaveiro do kernel (com keyctl
clear ou purge, sudo keyctl clear @u
limpa tudo) provavelmente são boas idéias. Eu tinha uma segunda pasta montada dentro de uma casa criptografada e desconectada, ela aparentemente desmontava a segunda pasta (não em / proc / mounts), mas ainda aparecia em mount
.
ecryptfs-setup-private
modificado
Pode ter mais problemas por causa da home criptografada do eCryptFS ...
Use um diretório ~/.Private
subjacente contendo dados criptografados ( OU um link de ~/.Private
para uma pasta diferente em outro lugar), mas altere a pasta mountpoint para outra diferente:
- Executar
ecryptfs-setup-private
então -
Mover / criar uma nova pasta de ponto de montagem
echo /path/to/new/folder > ~/.ecryptfs/Private.mnt
-
Altere o conteúdo de
~/.ecryptfs/Private.mnt
(arquivo que contém o caminho do diretório privado mountpoint) para a nova pasta mountpoint[Desktop Entry] Type=Application Exec=/home/user/.config/autostart/runme.sh
Se os arquivos ~/.ecryptfs/auto-mount
e ~/.ecryptfs/auto-umount
existirem, a pasta será montada / desmontada automaticamente no login / logout.
Para montagem / descriptografia manual (a senha será necessária), execute ecryptfs-mount-private
Para desmontagem manual, execute ecryptfs-umount-private