Permitir que um usuário visualize o diretório inicial de outros usuários via sudo

2

Eu sou novo na administração do sistema. Temos um laboratório configurado onde temos um servidor e máquinas clientes. As máquinas clientes possuem usuários LDAP que possuem a área de trabalho para todos os usuários no servidor centralizado. Assim, sempre que um usuário fizer login, sua área de trabalho será montada através do serviço NFS nas máquinas clientes e todo o seu trabalho será salvo no servidor quando ele efetuar o logout.

Agora, desejo fornecer um usuário local no acesso raiz limitado do servidor. Eu quero que esse usuário local consiga visualizar o diretório inicial de todos os usuários LDAP e nada mais. Eu acredito que estou procurando por usuário de roda no servidor. Eu também acredito que devo fazer algumas alterações no arquivo visudo para permitir acesso root limitado ao usuário local no servidor.

user1, %operator ALL= /home/users

Eu tentei adicionar o comando acima no arquivo visudo para o usuário local user1. Eu também adicionei o usuário ao grupo wheel como abaixo.

usermod -G 10 user1

No entanto, não vejo alterações. Por que minha abordagem com sudo não funcionou?

Como esta abordagem parece não estar funcionando, eu perguntei: Permite que um usuário leia os diretórios home de outros usuários

    
por Ramesh 19.09.2013 / 21:57

3 respostas

1

Algumas coisas:

  1. O comando sudo é para se elevar a um nível mais alto de credenciais para um comando ou conjunto de comandos, não para obter acesso a um diretório com o qual você (1) não seja o proprietário, (2) em um grupo que tenha permissões de leitura para esse diretório, ou (3) o diretório não tenha as outras permissões abertas para o mundo.

  2. O arquivo /etc/sudoers é o arquivo que contém todas as regras para um determinado sistema e estipula quais usuários, grupos de usuários, podem executar quais comandos de uma maneira elevada, como root , normalmente, ou algum outro conta de usuário. Normalmente você NÃO quer editar esse arquivo diretamente, embora seja possível, é melhor não fazê-lo.

  3. O comando visudo é a maneira prescrita para editar o arquivo /etc/sudoers .

  4. Se você quiser ver quais credenciais sudo um usuário tem acesso, a maneira mais simples é se tornar esse usuário e executar o comando sudo -l .

    $ sudo -l
    Matching Defaults entries for saml on this host:
    env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE",
    env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL
    LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
    
    User saml may run the following commands on this host:
    (ALL) ALL
    (root) NOPASSWD: /usr/lib/jupiter/scripts/bluetooth, (root) /usr/lib/jupiter/scripts/cpu-control, (root) /usr/lib/jupiter/scripts/resolutions, (root)
    /usr/lib/jupiter/scripts/rotate, (root) /usr/lib/jupiter/scripts/touchpad, (root) /usr/lib/jupiter/scripts/vga-out, (root) /usr/lib/jupiter/scripts/wifi
    

acesso por roda

Acredito que você esteja se referindo ao grupo de usuários wheel , que é uma maneira antiga (que eu saiba) de conceder permissões aos usuários para se tornarem root por meio de su - . Este artigo faz um bom trabalho ao discutir o uso desse grupo, intitulado: Como administrar seu sistema Linux .

Conceder acesso a /home/<user> ?

Até onde sei, não há uma maneira sistemática de fazer isso sem dar a esse usuário privilégios elevados de outras maneiras que você está tentando limitar. Eu diria que se você não confia neste usuário em particular a responsabilidade de ter acesso desta forma, então eles provavelmente não são a pessoa certa para fazer este trabalho!

Grupos

Por exemplo. Digamos que eu tenha 2 alunos e 1 TA. Alunos (usuário1 & usuário2) TA (usuário3).

Assim, os grupos seriam os seguintes:

  • class1
  • vboxuser1

Então, quando eu entrei no sistema como qualquer um dos usuários acima (1-3), meus grupos seriam os seguintes:

$ groups
users vboxusers class1

Esses grupos também precisam ser definidos nos diretores de casa do aluno:

$ ls -l /home/user1 | head -3
total 37784
drwxrwxr-x   2 saml class1     4096 May 16 22:02 alsa
drwxrwxr-x  31 saml class1     4096 Mar 26 12:09 apps

Esta é apenas uma idéia, ela tem problemas com essa abordagem, mas, dadas as informações que você forneceu, é "uma maneira de fazer isso"!

    
por 19.09.2013 / 22:33
0

Now, I want to give a local user in the server limited root access.

Isso soa como uma má ideia.

Primeiro, há a questão da privacidade de dados - se você não confia que esse usuário tenha permissões de root completas, por que você confia nele os dados de seus usuários?

Em segundo lugar, mesmo que de alguma forma você consiga conceder a este usuário acesso root limitado a /home (o que eu acho que não é possível), agora existem várias maneiras para ele obter acesso root completo que você provavelmente não esperando:

  • Ele pode criar um link simbólico para / :

    cd /home
    ln -s / evil-symlink
    

    Agora ele pode acessar o conteúdo do sistema de arquivos raiz como /home/evil-symlink/ como root, porque ele está localizado dentro de /home .

  • Ele pode criar setuid executáveis dentro de /home . Basta copiar /bin/bash para /home/bash , do chmod u+s /home/bash e você terá seu próprio root shell.

A única maneira de limitar um usuário a um determinado diretório, independentemente das permissões que eu possa obter, é chroot , e é de conhecimento comum que o root pode sair de um chroot .

    
por 19.09.2013 / 22:39
0

Primeiro, o que você fez de errado:

user1, %operator ALL= /home/users

Isso permite que user1 execute qualquer comando no diretório /home/users como qualquer usuário. Se não houver nenhum programa executável nesse diretório, a regra efetivamente não fará nada. Se houver programas executáveis, a regra permite que user1 os execute.

Você não pode usar sudo para conceder aos usuários permissão para acessar o arquivo, somente permissão para executar um comando como outro usuário.

Consulte Permitir uma usuário para ler os diretórios home de outros usuários para uma maneira de fazer o que você está tentando fazer.

    
por 20.09.2013 / 03:04