Meus amigos continuam excluindo meus arquivos usando o terminal. Então, por favor me ajude explicando como criar uma senha para rm
comando.
command-line
permissions
password
rm
aswin
fonte
fonte
unlink
comando. Também sobre omv
comando, porque você pode efetivamente sobrescrever arquivos com ele. Também ... #Respostas:
Não há uma maneira fácil de configurar essa senha no
rm
próprio comando, não sem muita invasão de código que provavelmente quebrará coisas comoapt-get
instalar pacotes e remover arquivos e fazer com que você precise digitar a senha mil vezes ou potencialmente interromper acesso ao comando para as pessoas que iria precisar dele (como você, para apagar seus próprios arquivos). Você pode fazer isso com várias contas de usuário e vários conjuntos de permissões de acesso e restringindo o acesso a diferentes seções de dados, como o diretório inicial, para que eles não possam acessá-lo.(A outra opção são contas de usuário individuais para cada usuário e, em seguida, Listas de controle de acesso, conforme detalhado na outra resposta publicada pela Videonauth )
Aqui está o problema principal - você está deixando seus amigos usarem seu sistema. Isso tem inúmeras implicações de segurança - o conceito de "qualquer pessoa com acesso físico à caixa poderá controlar o sistema e executar tarefas" é um mantra de segurança de TI, e é por isso que você não 'compartilha' o acesso a sistemas físicos exceto com pessoal autorizado confiável.
A única maneira realmente sensata de fazer isso é não permitir que seus amigos acessem seu computador e dar a eles um 'sistema "convidado" dedicado "que eles possam usar, que você não se importa muito com os arquivos. Essa é a maneira mais 'segura' de manter seus arquivos seguros.
Obviamente, se essa não é uma opção, sua única opção realmente segura é configurar várias contas de usuário, uma para cada usuário, com pastas pessoais diferentes e não permitir que eles acessem seu próprio diretório pessoal ou acessem a página inicial de qualquer outro usuário. diretórios. E, em seguida, mantenha tudo o que você não deseja que eles tocem no seu diretório pessoal e não lhes dê
sudo
acesso,root
senha ou compartilhe sua senha com eles.É assim que você faria isso:
Digamos que meu nome seja "Foo" e quero que o usuário "Bar", um amigo, use meu sistema, mas não acesse meus arquivos. O primeiro passo é negar o acesso a qualquer pessoa, menos eu, ao meu diretório pessoal. Isso permite que outros usuários não excluam seus arquivos, mas também impede que outros usuários vasculhem o diretório inicial e vejam que tipos de coisas você possui no diretório inicial:
O segundo passo é criar uma conta de usuário para "Bar" (NÃO digite o que está entre parênteses abaixo, é apenas para fins informativos). Dessa forma, podemos garantir que ele tenha seu próprio conjunto separado de direitos de acesso:
O terceiro passo é restringir o diretório inicial também para que ninguém possa acessar seus arquivos também. Isso está apenas tornando as coisas iguais.
Lave as mãos, lave-as bem e repita essas etapas para o número de usuários que tiver no sistema. Eles não poderão acessar seus arquivos e, como você não concederá privilégios de administrador, eles não poderão excluir seus arquivos sem tentar
sudo
fazê-lo - já que você não permite isso, eles não podem toque suas coisas. E eles também não poderão ver seus arquivos, sem se tornarem superusuário, o que não acontecerá aqui.SEMPRE LEMBRE ESTE: Ao dar a alguém acesso físico à máquina ou acesso em geral, você coloca seus arquivos e dados em risco. Esse é um fato amplamente aceito no mundo da segurança de TI e que continua verdadeiro. Dar aos seus amigos acesso ao seu computador sempre colocará seus dados em risco; portanto, dê a eles seu próprio sistema para mexer ou simplesmente não lhes dê acesso à sua máquina.
Apenas uma nota sobre criptografia de disco
Embora a criptografia de disco funcione bem para proteger seus dados de terceiros, há limitações.
Embora a Criptografia de Disco não resolva esses problemas, ela coloca camadas extras de dor de cabeça para um ator de ameaça. Alguém que é um cara mau pode desistir se estiver criptografado ou pode torturá-lo (fila obrigatória na banda desenhada do XKCD Security ).
Portanto, se seu sistema estiver criptografado, mas você permitir que outros usuários o usem, eles têm uma senha para descriptografar ou você está deixando seu laptop descriptografado para que eles possam fazer o SSH ou ter acesso físico. Nos dois casos, é ruim.
Dito isto, se o seu sistema não estiver criptografado, esta seção não será relevante para você.
fonte
apt-get
é executadodpkg
, que executa scripts que costumam ser usadosrm
. Na minha caixa Xenial,cd /var/lib/dpkg/info; grep -P '\brm\b' *inst
produz 344 linhas , das quais 333 parecem reais usos dorm
comando - apenas nos scripts de instalação .grep -P '\brm\b' *rm
mostra ainda mais em scripts de remoção (para excluir arquivos de configuração, não arquivos de pacote).Isso pode não ser realmente sobre o
rm
comando, pois existem maneiras fáceis de excluir arquivos sem usá-lo . Se o problema é que seus amigos estãorm
usando incorretamente o comando acidentalmente , soluções que restringem o uso desse comando especificamente ou o fazem funcionar de maneira diferente podem ser de alguma ajuda. Por outro lado, se o problema é que seus amigos estão deliberadamente tratando seus dados de uma maneira que você não deseja, é necessário implementar medidas de segurança reais e nenhuma solução que se concentre norm
próprio comando (ou em qualquer conjunto de comandos discreto) irá mantê-lo seguro.Você precisa controlar o acesso ou apenas evitar erros honestos?
Supondo que seus amigos saibam que você não deseja que eles excluam seus arquivos, há duas possibilidades:
Eles poderiam estar fazendo isso de propósito. Nesse cenário, seus amigos estão excluindo deliberadamente seus arquivos e você nem pode confiar neles para tentar cumprir seus desejos sobre como eles tratam seus dados quando usam seu computador. A única solução para esse problema é usar uma medida de segurança efetiva real , como Thomas Ward explicou em detalhes . Geralmente, a melhor medida é impedir que eles usem o computador. Mas fazê-los usar suas próprias contas de usuário pode fornecer alguma proteção.
Eles poderiam estar fazendo isso por engano. Nesse cenário, seus amigos são extremamente propensos a acidentes e continuam executando
rm
comandos que gostariam que não tivessem. Eles querem tratar você e seus dados com respeito, mas são muito ruins na prática porque continuam executando o comando errado, excluindo o arquivo errado ... ou algo assim. Embora seja bom acreditar que isso é o que está acontecendo, aconselho você a não supor que as pessoas que continuam excluindo seus dados depois que você pediu para parar de operar estão operando sem má vontade.Além disso, mesmo que suas intenções sejam boas, fornecer contas de usuário separadas ainda é a maneira mais infalível de impedi-los de excluir seus arquivos, além de não permitir que eles usem seu computador.
Se a situação realmente for # 2 - seus amigos não estão tentando excluir seus arquivos, mas precisam de ajuda para não excluí-los acidentalmente , e a única maneira de excluí-los acidentalmente é através do uso indevido inadvertido de um pequeno número de comandos (como
rm
) que eles têm problemas específicos para usar corretamente - então as técnicas na resposta da Videonauth podem ser úteis. Mas você deve entender que elas não são medidas de segurança, porque orm
comando é apenas uma das muitas maneiras fáceis de excluir arquivos . Veja abaixo os detalhes.Eu recomendo que você se pergunte: "Minha situação é basicamente a mesma que se eu, e não as outras pessoas que usam meu computador, estivessem usando
rm
incorretamente?"Se a resposta for negativa , é uma questão de segurança das informações e você precisa impedir que seus amigos usem sua conta de usuário. Se a resposta for sim , então você pode usar as mesmas abordagens que você usaria se você fosse a pessoa abusar
rm
:rm file
file
A resposta da Videonauth oferece uma abordagem para isso. Nesta resposta, apresento outra.Mas mesmo que seus amigos não estejam tentando fazer algo errado, você ainda deve considerar tê-los usar suas próprias contas de usuário separadas . Isso ainda resolverá o problema - as mesmas medidas de segurança que protegem os dados da destruição deliberada também os protegerão da destruição não intencional. Mesmo sem intenção maliciosa, se alguém continuar fazendo algo que você não deseja, então você não pode confiar que ele se abstenha de fazer isso.
Fazer
rm
solicitação antes da exclusão pode ajudar a evitar alguns erros.Para ajudar as pessoas a evitar a exclusão acidental de arquivos
rm
, você pode criarrm
um alias de shell que realmente é executadorm -i
. Passar o-i
sinalizador para fazerrm
com que ele solicite ao usuário antes de excluir cada arquivo (consulteman rm
).Você pode fazer isso (para sua conta de usuário) adicionando
alias rm='rm -i'
ao seu arquivo.bash_aliases
ou.bashrc
. Veja esta pergunta e essa para detalhes. Isso entrará em vigor para suas conchas do bash recém-abertas.Isso não fornece segurança real e também não é infalível para evitar erros, porque:
/bin/rm
ou dessalinizando-o (unalias rm
).rm
, não será executada-i
.rm
(como é o caso da abordagem da Videonauth - veja abaixo).Mas se você não precisa de segurança real (veja acima), esse pode ser o caminho a seguir. Em comparação com a abordagem de impedir que seus amigos usem o
rm
comando fornecido pelo sistema :Alias
rm
pararm -i
é menos eficaz na prevenção de erros - até que eles usem alguma outra técnica para remover arquivos. Nesse ponto, impedi-los de usarrm
será totalmente ineficaz, mesmo se eles não estiverem tentando fazer algo errado, pois presumivelmente eles usarãounlink
(ou qualquer um dos inúmeros outros comandos que removem um arquivo) com a mesma falta de consideração.Por outro lado, como a expansão do alias ocorre apenas em algumas situações - grosso modo, o uso interativo comum do shell - seus amigos podem pensar que serão solicitados quando não forem realmente solicitados (porque o comando está em um script, por exemplo, ou emitido a partir de um shell diferente). A maneira da Videonauth não apresenta esse problema, que é uma vantagem objetiva desse método
alias rm='rm -i'
.Quando um script é executado, a menos que seja escrito deliberadamente para usar aliases, seus aliases não são expandidos nele. Isto significa que aliasing
rm
pararm -i
é muito improvável que quebrar nada. Esta é uma vantagem objetiva dealias rm='rm -i'
.rm
não pode fazer nada que nenhum outro programa perfeitamente comum não possa fazer.Não há realmente nada de especial
rm
. É uma maneira conveniente e auto-documentada de remover arquivos; portanto, restringir o acesso a ele arrisca a quebra de vários scripts que dependem dele. Mas está longe de ser a única maneira de excluir arquivos - é apenas um programa comum.Alguns comandos executam alguma tarefa que um usuário limitado (não raiz ) não pode executar sem executá-los. Por exemplo,
sudo
permite executar programas como outro usuário, após verificar se você tem permissão para fazê-lo.passwd
edita o banco de dados em que as senhas dos usuários estão armazenadas, mas permite alterar sua própria senha (a menos que você seja root e, nesse caso, pode alterar a senha de qualquer pessoa)./usr/bin/sudo
e/usr/bin/passwd
pode fazer isso porque eles têm o bit setuid definido, como mostra os
que aparece na coluna mais à esquerda quando você executals -l
:Observe que
/bin/rm
não tems
: suas permissões são-rwxr-xr-x
, enquanto/usr/bin/passwd
e/usr/bin/so
têm-rwsr-xr-x
. Isso faz com que, independentemente de quem executepasswd
ousudo
, na verdade, ele seja executado como usuário root, pois o root é o proprietário do executável. (Também há um bit setgid, que, quando definido, faz com que os executáveis sejam executados com a identidade do grupo do proprietário do grupo, em vez da do chamador.)Exceto por quaisquer vulnerabilidades de segurança que ainda não foram descobertas (ou que foram descobertas, mas ainda não foram corrigidas)
sudo
epasswd
são seguras porque esses utilitários são escritos com muito cuidado para que eles possam fazer apenas as coisas que o autor da chamada deve receber. façam./bin/rm
não funciona dessa maneira. Não está definido porque não precisa estar. Permissões de diretório (e ocasionalmente permissões de arquivo ) controlam quais arquivos um usuário pode excluir e não precisam se tornar raiz para fazê-lo. Apenas para ficar perfeitamente claro, nunca ative o bit setuidrm
. As implicações de segurança seriam desastrosas, desde então, não importa quem executerm
, é como se a raiz o executasse! (Os utilitários gostamsudo
epasswd
verificam quem realmente os está executando e verificam se algo é permitido antes de fazê-lo;rm
não faz isso.)A verificação se o bit setuid (ou setgid) está definido em um executável informará se restringir quem pode executá-lo tem uma chance de melhorar a segurança. Os executáveis que não são setuid (ou setgid) não têm nenhum status especial e qualquer um pode simplesmente copiá-los e executá-los, trazer sua própria cópia de outra máquina, escrever um script ou programa que faça a mesma coisa ou usar outro programa para fazer isso.
Excluindo arquivos sem
rm
A maneira óbvia de excluir um arquivo sem
rm
no Ubuntu é navegar para sua localização no navegador de arquivos gráfico (Nautilus, se você estiver usando o Unity ou o GNOME Shell) e excluir o arquivo. Também existem inúmeros comandos que podem ser usados para excluir um arquivo de um terminal, sem nunca serem utilizadosrm
.Por exemplo, para remover um arquivo chamado
foo.txt
no diretório atual, os seguintes comandos, que funcionam imediatamente no Ubuntu e não requerem acessorm
, o conseguirão. (Só para ter certeza, eu os testei em um sistema mínimo 16.04 instalado com apenas os utilitários de sistema padrão, após a exclusão/bin/rm
.)unlink foo.txt
busybox rm foo.txt
perl -e 'unlink("foo.txt")'
python3 -c 'import os; os.remove("foo.txt")'
(empython
vez depython3
em versões mais antigas)Naturalmente, essa lista está longe de estar completa. Nenhuma lista completa de tais comandos é possível. Impedir a exclusão de arquivo é uma das coisas que as contas de usuário separadas e as permissões de arquivo e diretório existem para alcançar. Eles funcionam muito bem para evitá-lo. Por outro lado, alterar o
rm
comando (para exigir uma senha ou de qualquer outra forma) ou restringir o acesso pararm
não impedi-lo.fonte
rm
da-I
opção do GNU . Ele solicita apenas a exclusão de 4 ou mais arquivos ou a exclusão recursiva. Portanto, você não costuma usar sempre-f
,\rm
para evitar a expansão de alias, ou digitary
sem ler. Mas ele ainda o salvará de erros de digitação, nos quais você pressiona return antes de pretender, ou seu glob corresponde a muitos arquivos.mv foo.txt /tmp/.gone
seguida, reinicie, descartando os tmpfs que estavam fazendo o backup/tmp
. Ou use apenasmv
para renomear vários arquivos com o mesmo nome, para que apenas o último seja deixado. Ou apenas oculte os arquivos renomeando-os com nomes obscuros. Como aponta a primeira parte desta resposta, se você está tentando se defender contra a malícia, e não a incompetência, basta bloquear as pessoas da sua conta.Você pode alterar as permissões no
/bin/rm
comando através da seguinte linha, o que impedirá sua execução sem acesso ao sudo:Isso evita especificamente que eles usem o
rm
comando fornecido pelo sistema. Você deve estar ciente de que isso não os impede de excluir arquivos de outras maneiras.Para também impedir que eles usem o
rmdir
comando, que é uma maneira comum de excluir diretórios, você pode definir as permissões da mesma maneira em seu caminho executável:Lembre que você também pode usar esses comandos apenas com direitos sudo.
Para alterá-lo novamente, se você não gostar, ou se ocorrerem outros problemas, use
755
parachmod
Como o @muru apontou, a solução acima é muito grosseira e pode até interromper os serviços do sistema que não estão sendo executados na conta raiz . Portanto, adiciono aqui outra opção usando a ACL (listas de controle de acesso) para fazer o mesmo e provavelmente muito mais seguro ( bom para ler também e você pode pular a parte de habilitação porque a ACL geralmente está instalada nos sistemas Ubuntu atualmente):
Portanto, fazer o mesmo acima apenas para os usuários que você deseja bloquear seria
Apenas substitua
<user-name>
pelos nomes de usuário reais que você deseja impedir o uso dos arquivos.Assim como em
chmod
, usarsetfacl -m
para impedir a execução de usuários específicosrm
ermdir
se aplica apenas aos comandos fornecidos pelo sistema. Isso não os impede de excluir seus arquivos e pastas no Nautilus ou usando outros comandos do terminal.Explicação:
-m
sinalizador significa modificar os arquivos ACL.u
significa usuário. Pode ter os seguintes valoresu
para usuário,g
grupo eo
todos os outros<user-name>
pode colocar o nome do usuário ou o nome do grupo real de acordo com o que você deseja alterar. Para definir alterações gerais, deixe em branco.-
, também podemos conter as seguintes letrasr
para permissões de leitura, permissõesw
de gravação ex
execução.fonte
sudo setfacl -m u:<username>:- /bin/rm /bin/rmdir
, IIRC. Você pode testar a ACL comgetfacl /bin/rm /bin/rmdir
rm
. A solução que a Videonauth deu aqui é uma maneira possível de ajudar os usuários propensos a acidentes a parar de excluir coisas, mas não fornece nenhuma segurança real (o que pode ser bom, se os amigos do OP não estiverem tentando deliberadamente subverter os desejos do OP) . Videonauth: sugiro editar esta postagem para esclarecer com destaque que na verdade não impede as pessoas de excluir arquivos, pois não precisam dorm
comando para fazê-lo. (Estou abstendo-se de editá-lo eu mesmo, no caso de você não quer dizer isso.)rm
comando.Esta é uma resposta muito simples e interromperá alguém casualmente usando o comando rm sem fornecer uma senha. Não é uma solução segura e você deve implementar algumas das sugestões alternativas nas outras respostas.
No entanto, você pode usar o alias para alterar a maneira como o comando rm se comporta. Experimentar:
alias rm="sudo -l >/dev/null && rm"
O que isso faz é quando alguém digita o comando rm, ele executa o comando sudo -l. Este comando força o usuário a inserir sua senha. Se eles acertarem, listarão seus privilégios (descartamos essa saída) e sairemos com o status 0; se eles errarem, existe um erro.
Em seguida, seguimos o comando sudo com um "&&", que sai do seguinte comando - neste caso, "rm" somente se o comando anterior sair com o status 0 - ou seja, eles obtiveram a senha correta.
Para tornar isso permanente, inclua o comando alias no
~/.bashrc
.Observe que isso é muito facilmente derrotado (por exemplo, eles podem simplesmente digitar
/bin/rm
.fonte
Às vezes não são nossos amigos, somos nossos piores inimigos
Escrevi um script para proteger com senha
rm
como o OP solicitado, mas também fiz edições para impedir que você exclua acidentalmente:Edit: 5 Mar 2017 - Altere o método de verificação se estiver executando no terminal.
Crie o script
Use
gksu gedit /usr/local/bin/rm
e copie nestas linhas:Mude a senha "WE2U" para o que quiser e salve o arquivo.
Marcar novo
rm
script como executávelSinalize o novo
rm
script como executável usando:Como funciona
A menos que a senha seja WE2U , na primeira vez em que você executar o script, você receberá "senha inválida" e a chave de criptografia da senha inserida será exibida. Copie e cole essa chave de criptografia do terminal no script. Em seguida, comente a linha com o eco que exibia a chave de criptografia no terminal.
Como o caminho
/usr/local/bin
é mais alto na lista do que/bin
nosso comandorm
é chamado. Depois de obter uma senha válida, ele solicita/bin/rm
a remoção real.Como Thomas Ward apontou em outra resposta, se você fizer uma,
sudo apt-get install ...
poderá ser solicitada uma senha mil vezes. O script verifica sesudo
é usado e não pede uma senha. Além disso, serm
for chamado de dentro do aplicativo GUI, nenhuma senha será necessária.O script chama
logger
para gravar sempre querm
foi chamado manualmente usando o terminal. O uso do comando é registrado em/var/log/syslog
.fonte
Outra alternativa seria criar cópias de backup de todos os arquivos importantes em um diretório ao qual os usuários não raiz não têm acesso. Você pode usar
rsync
ouunison
sincronizá-los automaticamente, apenas certifique-se de que pelo menos um diretório no caminho para o destino de backup seja de propriedade do modo 700 e raiz. Isso resultaria em duas cópias de todos os arquivos. Seria mais seguro criar um usuário convidado para ele usar, exceto que você sempre deve se lembrar de sempre bloquear ou sair antes de fornecer o computador ou deixá-lo sem supervisão.fonte
Não é a resposta direta à pergunta que você está procurando, mas:
Se seus amigos estão excluindo seus arquivos usando o
rm
comando, eles são incompetentes, idiotas ou são aspirantes a BOFH que estão tentando ensiná-lo a não deixar suas sessões logadas e sem supervisão. Em todos os casos, a solução é a mesma: não deixe sua sessão conectada e sem supervisão .Isso tem a vantagem de não precisar se lembrar de fazer alterações especiais no sistema sempre que você atualiza ou adquire um novo sistema e também evita que scripts e outras coisas que você usa, que dependem de comandos que se comportam conforme o esperado, falhem de maneiras imprevisíveis.
Ele também tem a vantagem de impedir que "amigos" passem para o próximo passo. Você também deseja "proteger com senha" o
mv
comando se eles decidirem mover seus arquivos para / dev / null quando descobrirem que uma simples remoção não faz o que eles querem? Quando você está em um jogo como esse, o único movimento vencedor é não jogar.fonte
Eu tenho uma possibilidade semelhante que planejei. No servidor de arquivos, se o armazenamento principal de fotos for gravável para que alguém da família (menos técnico ou acidental) possa excluir algo, arraste acidentalmente a interface gráfica que move o diretório ou substitua um original por uma versão editada em vez de renomear .
Percebi que posso me proteger contra isso sem tornar as permissões graváveis para todos os outros. O ZFS faz instantâneos periódicos para que qualquer exclusão ou substituição acidental possa ser revertida. (Ao contrário de um backup, um instantâneo é leve e copia na gravação, para não multiplicar o uso do armazenamento.)
O ZFS é nativo do FreeBSD. O Linux possui btrfs, que também possui instantâneos.
fonte
Uma solução muito boba para um problema muito bobo.
Se você não quiser
chmod
rm
,rmdir
oumv
(paramv filename /dev/null
) ou uso de ACLs, você pode criar um usuário fictício com uma senha ninguém, mas você sabe e apelido de cada comando parasudo [user]
, em seguida, fazer aliases para cada comando que seus amigos não sabem . Dessa forma, quando seus amigos digitarem,rm
o sistema solicitará uma senha (mas supor que a senha esteja errada registrará a tentativa com falha), e você ainda poderá digitarrmalias
ou o que escolher para realmente excluir os arquivos.Ou você pode simplesmente criar uma conta de convidado que não tenha acesso ao seu diretório pessoal.
fonte
sudo [user]
edummy user
Se você deseja proteger a rm com senha, uma solução seria criar um invólucro para a rm que exigiria privilégios de root e solicitar uma senha caso contrário. (NOTA: Esse wrapper pode desaparecer quando o pacote coreutils é atualizado ou reinstalado.) Além disso, observe que isso apenas protege a rm, ainda existem muitas outras maneiras de excluir um arquivo.
Abra um terminal e torne-se root. Em seguida, corra
sudo mv /bin/rm /bin/rmold
para mover a antiga empresa para outro local.Agora, execute
sudo nano /bin/rm
para criar um wrapper.No Nano, digite o seguinte:
Segure
CTRL
e pressioneX
para sair. PressioneY
quando for solicitado e pressioneENTER
para salvar o arquivo.Por fim, precisamos conceder a isso as permissões apropriadas:
E lá vai você.
fonte
$@
=>"$@"
. Aqui, o que você está propondo é uma versão muito perigosa do original e segurorm
: e se houver um arquivo nomeadofoo -i -r *
(-i
adicionado para proteger os usuários inocentes)?"
citar$@
como @xhienne diz, aconselho você a avisar claramente aos leitores que isso não oferece segurança, pois existem várias maneiras de excluir um arquivo. Uma é ligarrmold
, mas há várias outras maneiras, conforme discutido em outras respostas e comentários sobre elas. (Mesmo assim, este terá o problema querm
vai se sentir como se apaga arquivos como o usuário atual - é chamado de semsudo
, e normalrm
funciona como o chamador - mas fá-lo como root Se eles já recentementesudo
ed, eles ganharam' t perceber que pode ser a exclusão de arquivos do sistema, mesmo se eles sabem sobre a mudança).