Como funciona a segurança de usuário / grupo no Linux?

6

Por exemplo, como mount decide se o usuário atual tem permissões para montar um sistema de arquivos? Pelo que eu sei, ele verifica o arquivo fstab e o grupo ao qual o usuário pertence (acho plugdev, pelo menos no Ubuntu).

Essas configurações estão codificadas no programa ou onde elas são obtidas? Por exemplo, digamos que eu quisesse dar aos usuários em outro grupo a capacidade de montar um sistema de arquivos, como fazer isso?

EDIT : Estou procurando uma descrição geral de como funciona a segurança. mount é apenas um exemplo. Eu sei mais ou menos como as permissões do sistema de arquivos funcionam, mas claramente há algo mais acontecendo. Estou especialmente interessado em saber se existe uma maneira padrão na qual os programas implementam a segurança ou se cada um faz isso de maneira diferente.

    
por Ivan 16.05.2009 / 01:50

2 respostas

2

O mecanismo de segurança é completamente reduzido a permissões em arquivos e programas como o nfsd que são executados como root (sobrescrevendo permissões de arquivos) e mantêm seus próprios mecanismos de segurança. As permissões nos arquivos de dispositivo de bloco determinam se um usuário pode montar esse dispositivo. Cada arquivo tem três conjuntos de permissões (leitura, escrita, execução) para três classes de usuários (proprietário, grupo, mundo), além de um punhado de bits especiais discutidos abaixo.

Na tradição unix 'tudo é um arquivo', os dispositivos brutos e os volumes exportados aparecem como arquivos especiais com permissões do sistema de arquivos. A montagem remota de volumes remotos é um pouco mais complexa e é discutida abaixo.

Se o usuário tiver efetuado login como o mesmo uid do proprietário do arquivo, as permissões owner poderão ser usadas. Cada usuário tem um grupo padrão e pode ser adicionado a entradas de grupo no arquivo /etc/group . Quando um usuário tem acesso a um grupo, as permissões de arquivo para o grupo são usadas. Caso contrário, o usuário tem permissões de 'mundo'. As Listas de Controle de Acesso (ACL, Access Control Lists) podem ser usadas para conceder permissões a usuários específicos onde elas estão disponíveis.

Os programas podem substituir a segurança no nível do usuário com o setuid bit definido em sua entrada de inode. Isso executa o programa com os privilégios do proprietário do binário em vez dos privilégios do usuário conectado. Exemplos de tais programas são nfsd , mount e sudo . Esses programas possuem seus próprios mecanismos de segurança; por exemplo sudo tem /etc/sudoers que é usado para governar as permissões.

mount e nfsd funcionam com base em uid e gid, que devem estar sincronizados em ambas as máquinas (geralmente feito tradicionalmente via NIS). O nfsd tem um arquivo chamado /etc/exports , que possui os sistemas de arquivos exportados e alguns dados de permissões. mount e seus drivers nfs apresentam credenciais que o nfsd usa para autenticar o direito do usuário de montar o volume. Em uma montagem de volume local usa as permissões de arquivo do dispositivo de bloco.

    
por 17.05.2009 / 18:31
2

De acordo com a página de manual , existem algumas opções que você pode colocar em fstab para controlar quem recebe para montar sistemas de arquivos: " owner " para deixar apenas o proprietário do dispositivo de bloco montá-lo, " group " para permitir que qualquer pessoa no grupo do dispositivo o monte, ou " user " ou " users " qualquer usuário comum faz isso. O padrão, se nenhum deles for especificado, é que somente root pode montar o sistema de arquivos. Obviamente, qualquer que seja o usuário que execute a montagem, precisará ter permissão de execução para o programa mount em si.

No seu caso, suponho que você poderia alterar o grupo do dispositivo de bloco para qualquer grupo que quisesse montá-lo e adicionar " group " às opções de montagem em fstab . Isso só permite especificar um grupo capaz de montar o sistema de arquivos, portanto, se você fizer isso, as pessoas em plugdev provavelmente perderão a capacidade de realizar a montagem (a menos que também estejam no outro grupo).

Além disso, não tenho certeza se todas essas opções existem em todos os sistemas. Você deve verificar man mount(8) em seu próprio sistema antes de fazer nada disso.

    
por 16.05.2009 / 06:53