Desativar uma unidade para um usuário específico

1

Acabei de criar uma nova conta de usuário para um amigo meu. Mas eu não quero que ele tenha acesso à minha unidade de dados (não é a unidade onde o Ubuntu é instalado, mas apenas uma unidade de dados).

Como posso desativar essa unidade para ele?

Estou usando o Ubuntu 14.04.

EDITAR:

blkid:

/dev/sda1: UUID="eee523f2-0eb4-4ee8-b758-f8ea89273233" TYPE="ext4" 
/dev/sda5: UUID="69b06774-64ed-4c11-b157-5a794c20c98c" TYPE="swap" 
/dev/sdb2: UUID="5E521E0E521DEC11" TYPE="ntfs" 

lsblk:

EDITAR:

basement21@basement21:~$ groups basement21
basement21 : basement21 adm cdrom sudo dip plugdev lpadmin sambashare secretdrive
basement21@basement21:~$ groups planner
planner : planner
basement21@basement21:~$ 
    
por user1007522 21.03.2015 / 13:38

4 respostas

0

Após uma longa pesquisa, descobri qual era o problema. Quando eu instalei o meu sistema eu adicionei esta linha no meu fstab:

/dev/disk/by-uuid/5E521E0E521DEC11 /mnt/data auto nosuid,nodev,nofail,x-gvfs-show 0 0

Eu mudei para:

/dev/disk/by-uuid/5E521E0E521DEC11 /mnt/data auto nosuid,nodev,gid=1000,umask=007,nofail,x-gvfs-show 0 0

Meu groupid é 1000 e o umask define que eu tenho a permissão de leitura / gravação e todos no meu grupo também. O resto não tem permissão.

    
por user1007522 29.03.2015 / 11:24
2

Altere /mnt/data proprietário e grupo para você mesmo assim:

sudo chown basement21.basement21 /mnt/data

E permita que apenas você leia e escreva e seu grupo pessoal leia apenas :

sudo chmod 750 /mnt/data
    
por madneon 25.03.2015 / 19:59
1

Para alcançar o resultado desejado, como você indicou:

Ligue para o seu sistema para reconhecer / dev / sdb pertencer a você:

sudo adduser secretdrive
sudo chown secretdrive:secretdrive /dev/sdb
sudo adduser [your-username] secretdrive
sudo chmod 770 /dev/sdb

Explicação:

  1. atribua um novo nome de sistema à sua unidade: /dev/sdb
  2. chownize sua unidade para o nome de usuário do sistema secretdrive (ou qualquer nome que você quiser)
  3. adicione seu nome de usuário ao grupo que pertence a secretdrive para que sistema de maneira conceder-lhe-á o acesso à unidade
  4. finalmente, você chmodize sua unidade para 770 (leitura / gravação pelo proprietário | ler / escrever por grupo | não ler / não escrever para o resto de todos os outros)
por Faron 21.03.2015 / 14:20
1

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:

  1. 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

  2. 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 :))
  3. 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.

  4. 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:

  • salve-o como nomount.sh
  • execute-o pelo comando:

    sh /path/to/nomount.sh /mnt/data
    

    (como a versão do python; use a unidade para tornar indisponível como argumento)

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:

  1. Dê ao script um nome disfarçado como unity-desk (verifiquei se o nome não colidiu com um comando existente) sem extensão *
  2. 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.

    
por Jacob Vlijm 21.03.2015 / 15:04