Todos os meus programas possuem direitos de proprietário para todos os meus arquivos?

1

Estou preocupado que todos os meus programas tenham acesso total a todos os meus arquivos.

Por exemplo: meu usuário é 'john'. Eu instalo algum programa, digamos Dropbox. O Dropbox é executado como 'john'. Portanto, ele não só tem direitos completos sobre seus arquivos em ~ / .dropbox, mas para todos os arquivos, incluindo ~.

1) Estou certo? Se sim,

2) Devo me preocupar com isso?

3) Existe alguma maneira de corrigir isso? Alguém me disse que eu poderia usar chroot ou setuid, mas não sei como usá-los.

Estou usando o Ubuntu 12, caso isso seja importante.

    
por HappyDeveloper 15.06.2012 / 18:57

3 respostas

2

Isso é uma coisa razoável a considerar: outras plataformas, como MacOS-X, e aplicativos, como o Chrome, estão usando sandboxing para executar aplicativos ou partes de aplicativos inteiros de forma que eles parem de ter controle total equivalente ao que você tem .

Portanto, em resposta a 1, sim, se você iniciar um aplicativo em execução como você, ele terá acesso equivalente ao que você faz: qualquer arquivo que possa editar, editar e assim por diante. A única exceção é se o próprio aplicativo fizer coisas para restringir privilégios.

Em resposta a 2, você provavelmente deveria estar vagamente preocupado com isso muito mais do que você se preocupa ativamente sobre isso. Afinal, cada aplicativo que você executa tem o mesmo acesso - a única coisa que distingue o DropBox é que ele veio de outra pessoa que não a distribuição upstream.

Então, 3: você pode consertar isso? A resposta é provavelmente não". Não é que seja impossível, é provável que seja difícil fazer de uma maneira que satisfaça seus desejos de usar os aplicativos ou serviços.

Usar o chroot permite que você finja que há outro "diretório raiz" do que o real. Isso isola os aplicativos (como o dropbox) da sua raiz real - e pode permitir que você escape do risco de ler o resto do seu diretório pessoal. (Adicione um link simbólico de ~/.dropbox a ~/chroot/whatever/home/you/.dropbox e nem isso é inconveniente.

No entanto, você precisa ser root ou usar uma ferramenta como schroot para gerenciar o acesso à execução do aplicativo e o chroot isola apenas algumas partes do sistema - arquivos. Aplicativos com raiz dentro que ainda podem ver fora, ou escapar. Vários outros recursos (portas IP, pids, etc) ainda são compartilhados.

Além disso, eu aposto que o DropBox tem um componente de interface do usuário, e isso não funciona bem chrooted. Mesmo que isso aconteça, essa limitação prejudica outras aplicações.

A alternativa, um aplicativo setuid , é uma maneira que você pode dizer "não importa quem executa isso, inicie-o como este outro usuário, não o usuário que o iniciou ".

Isso é mais usado para permitir que aplicativos que você, um usuário normal, comece a executar como root - por exemplo, sudo. No entanto, pode definir o usuário ou grupo do processo para um usuário sem privilégios também.

O problema é que ele é executado como um usuário diferente - assim como você o executou com sudo -u another-user dropbox ou o que quer que seja. O que significa que ele não tem acesso ao seu diretório pessoal e, sem trabalhar muito, você não tem acesso ao diretório inicial dos outros usuários.

Você pode contornar isso, mas não é trivial nem conveniente no caso comum. Normalmente, você deseja compartilhar um grupo e tentar organizar os arquivos que ele pode ler pertencentes a esse grupo, em vez de seu grupo padrão. Isso não é trivial, mesmo com diretórios setuid (que alteram o grupo ou o proprietário dos arquivos criados sob eles), em parte porque você precisa gerenciar seu umask, e isso é um problema no Linux.

Finalmente, você pode usar o AppArmor ou SELinux para proteger o aplicativo. Eu acredito que o AppArmor é o que o Ubuntu escolheu como sua opção preferida. Embora seja convincentemente argumentado que é menos seguro que o SELinux, também é conceitualmente mais simples basear-se em nomes e caminhos visíveis mais do que em rótulos seguros.

Você pode achar uma maneira eficaz de melhorar sua segurança sem ter que percorrer caminhos mais complexos. Ele deve, em teoria, permitir que você restrinja o DropBox exatamente à pasta ~/.dropbox e ao nada mais, sem precisar executar como um usuário diferente.

Então, se você realmente quer melhorar sua segurança, olhe para o caminho do chroot. É a maneira menos dolorosa de melhorar a segurança do DropBox no Ubuntu - muito menos do que uma aplicação setuid, pelo menos.

Dito isso, as probabilidades são de que o maior risco de exposição seja de um funcionário do DropBox. Sabemos que ele desduplica até mesmo entre usuários, para que seus sistemas possam ver o conteúdo não criptografado, o que significa que alguém trabalhando para eles pode fazer o mesmo.

Você pode considerar usando o encfs para criptografar arquivos antes que eles sejam enviados ao DropBox ...

    
por 15.06.2012 / 19:11
1

1) sim. 2) Em geral não. Você tem que confiar em pelo menos parte do software que você executa para não estragar as coisas. 3) A maneira mais fácil provavelmente seria executar o software como um usuário diferente. Se não precisar de acesso a nada, você pode executá-lo como o usuário "nobody" que basicamente não possui direitos. Caso contrário, você pode alterar o proprietário de todos os arquivos que o aplicativo tem para acessar o usuário que ele executa. Note que isso dificultaria o acesso aos arquivos para você e outros programas.

Em geral, eu não me preocuparia muito com isso. Você tem backups dos seus dados dos quais você pode restaurar arquivos de qualquer maneira, não é?

    
por 15.06.2012 / 19:08
0

1) Estou certo?

Basicamente sim, mas não são "programas" que têm direitos de acesso, mas o "usuário" que possui o "processo" que executa o "programa". Então, se você executar o Dropbox, o Dropbox terá seus direitos de acesso. Se outra pessoa executar o Dropbox, ela terá seus direitos de acesso.

2) Devo me preocupar com isso?

Não realmente.

    
por 15.06.2012 / 19:11