A solução abaixo assume que seu amigo não é um especialista, tentando invadir seu computador para encontrar uma maneira de analisar seus dados. No entanto, é um limite razoável, para evitar acesso não intencional (montagem) a uma partição ou unidade específica.
Uma opção, que também pode ser usada como uma solução mais temporária em qualquer conta de usuário, é a seguinte:
-
Adicione o seguinte ao arquivo sudoers
( /etc/sudoers
, executando sudo visudo
):
<your_friends_username> ALL = NOPASSWD: /bin/umount
Isso permitirá que ele desmonte uma unidade sem senha do sudo
- Na conta de seus amigos, copie o script abaixo em um arquivo vazio e salve-o em algum lugar como
nomount.py
(ou melhor, um nome menos revelador :))
-
Teste-execute (ainda na conta dos seus amigos) o script pelo comando:
python3 /path/to/nomount.py /mnt/data
e tente montar a unidade. Deve falhar.
-
Se funcionar como esperado, adicione-o à conta dos seus amigos. Aplicativos de inicialização: Dash > Aplicativos de inicialização > Adicione o comando:
ppython3 /path/to/nomount.py /mnt/data
O script
#!/usr/bin/env python3
import subprocess
import time
import sys
drive = sys.argv[1]
while True:
check = subprocess.check_output("lsblk").decode("utf-8")
if drive in check:
subprocess.Popen(["sudo", "umount", "-l", drive])
time.sleep(1)
O que o script faz
Em um loop (uma vez por segundo), o script verifica se a unidade "proibida" está montada. Em caso afirmativo, desmontará imediatamente (com força) a unidade, com o comando umount -f <drivename>
.
Editar
Uma versão bash do script:
#!/bin/bash
drive="$1"
while true
do
if [ -n "$(lsblk | grep $drive)" ]; then
sudo umount -l $drive
fi
sleep 1
done
Configure e use de maneira semelhante ao script python
, somente:
Editar 2
Sobre segurança:
Com as habilidades e informações certas, praticamente todas as soluções podem ser superadas. Um exemplo simples: com tempo suficiente, todas as soluções quebrariam simplesmente iniciando a partir de um usb de inicialização, a menos que você criptografasse a unidade.
Na solução acima, a maneira mais óbvia seria abrir uma janela de terminal, executar ps -u <username>
, procurar o processo para matar (o script) e eliminá-lo. Seu amigo precisaria ter as habilidades para fazer isso, a intenção para fazer isso e o conhecimento para suspeitar que isso é feito dessa maneira .
Você pode tornar o processo menos provável de ser reconhecido por algumas simples adições à configuração:
- Dê ao script um nome disfarçado como
unity-desk
(verifiquei se o nome não colidiu com um comando existente) sem extensão *
- Torne-o executável, para poder executá-lo sem o
sh
ou python3
precedente.
Dessa forma, você pode executar o script com o comando:
unity-desk /mnt/data
Em ps -u <username>
e ps -e
, o processo seria mencionado como unity-desk
. Não é realmente um processo (nome) que você gostaria de matar à primeira vista.
O comando para revelar o fato de que é um script seria executar ps -ef
, o que mostraria o caminho e a linguagem. No entanto, isso seria novamente um passo adiante.