AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / computer / Perguntas / 1682950
Accepted
Bart Friederichs
Bart Friederichs
Asked: 2021-10-21 23:51:03 +0800 CST2021-10-21 23:51:03 +0800 CST 2021-10-21 23:51:03 +0800 CST

Como mapear IDs de usuário em um compartilhamento NFS?

  • 772

Eu montei com sucesso um compartilhamento NFS da minha máquina remota para o meu local. No entanto, os arquivos que desejo editar na máquina remota são todos de propriedade do root.

Como posso montar minha unidade NFS para que meu usuário local possa editar esses arquivos?

Tentei o idmap.confarquivo, mas não consegui entender se deveria editá-lo na máquina local ou remota e quais serviços devo reiniciar (novamente, local ou remoto) para ter algum efeito.

Do passado, lembro-me das uid=X,gid=Xopções para fazer algo assim, mas agora recebo este erro:

mount.nfs: an incorrect mount option was specified

Estou usando o Fedora 34 como local e o CentOS 7.6 remoto.

linux mount
  • 2 2 respostas
  • 11727 Views

2 respostas

  • Voted
  1. Best Answer
    user1686
    2021-10-22T01:09:00+08:002021-10-22T01:09:00+08:00

    Com todos os sistemas de arquivos de rede baseados em arquivo, as permissões de arquivo são impostas pelo servidor. O que ls -ldiz que você pode fazer com um arquivo não precisa necessariamente corresponder ao que você realmente pode fazer com esse arquivo. Por exemplo, se você usar SSHFS e autenticar como "bart", você pode fazer o cliente SSHFS reportar qualquer coisa, mas mesmo que você seja root localmente, você só terá os privilégios do usuário "bart" no servidor – a uid=opção local não teria nenhum efeito sobre o que sua conta SSHFS tem permissão para fazer.

    Mas, ao contrário do SSHFS (que usa uma conexão e um conjunto de credenciais), o NFS foi originalmente projetado para ser um recurso "em todo o sistema", onde a mesma montagem pode ser usada por vários usuários diferentes, cada um com seus próprios privilégios - e foi projetado trabalhar em ambientes homogêneos em conjunto com o NIS/YP, sistema que assegurava que as mesmas contas tivessem os mesmos UIDs em todas as máquinas. A maioria dos recursos do cliente NFS (ou a falta deles) ainda refletem isso.

    Portanto, com isso em mente, os UIDs têm dois usos completamente diferentes e independentes no NFS: dados de propriedade relatados pelo servidor e credenciais de autenticação relatadas pelo cliente.

    • As informações de propriedade relatadas pelo servidor (como dados em ls -l) são tratadas como parte do próprio NFS.

      (É aqui que opções como uid=seriam relevantes, mas o cliente Linux NFS não as possui, embora alguns outros sistemas de arquivos as possuam.)

      No NFSv4, as informações de propriedade podem ser traduzidas usando "idmap": o servidor converte o UID em um nome de usuário@domínio, o cliente converte esse nome de usuário de volta ao seu UID local. Você precisa garantir que ambos os lados usem o mesmo domínio idmap (conforme relatado por nfsidmap -d) – se for diferente, defina-o em idmap.conf. No entanto, isso não permite que você faça nada com esse arquivo – é principalmente apenas visual.

      No NFSv3, apenas um UID numérico pode ser relatado e não há facilidade para mapeá-lo – o cliente sempre vê o UID armazenado no servidor.

    • No entanto, os privilégios efetivos reais dependem das informações relatadas pelo cliente à medida que são aplicadas no lado do servidor, não apenas no lado do cliente. Isso é tratado no nível SunRPC, portanto, não há relação com as versões do NFS.

      Como o cliente NFS foi projetado para ser multiusuário, seu mecanismo de autenticação padrão é simplesmente relatar o UID do usuário que está acessando ao servidor. Portanto, se você exportar e montar o compartilhamento NFS com sec=sys(o padrão), o cliente sempre relatará seu UID real ao servidor e o servidor confiará nele sem qualquer verificação.

      Infelizmente, embora em teoria os UIDs possam ser mapeados aqui antes de reportá-los ao servidor, não existe tal recurso no cliente Linux NFS, e ele sempre relata seu UID real.

      Para resolver isso, você precisaria sincronizar o UID da sua conta em todos os sistemas ou usar a autenticação Kerberos via sec=krb5. Isso requer a configuração de um servidor Kerberos KDC.

    Então, em suma,

    1. Verifique se você está usando o NFS v4.

    2. Execute nfsidmap -de verifique se ambos os sistemas usam o mesmo domínio idmap. Isso é por padrão adivinhado a partir do FQDN do sistema ( hostname -f), mas também pode ser definido em /etc/idmapd.conf. Esse valor não precisa ser um domínio DNS real, apenas uma string arbitrária. Isso deve corrigir o proprietário mostrado por ls.

    3. Considere fortemente configurar o Kerberos, executar um KDC em seu servidor (pode ser o mesmo servidor ou um diferente) e alternar o NFS para sec=krb5. (Especialmente se você estiver usando NFS pela Internet!) Você não precisa de componentes relacionados como LDAP ou Active Directory ou IPA.

      (O mesmo Kerberos também pode ser usado para autenticação SSH via "GSSAPIAuthentication", não apenas para NFS.)

    4. Se isso não for uma opção, você precisará alterar o UID da sua conta em um sistema para corresponder ao outro. Geralmente é apenas uma questão de fazer login como root e fazer usermod -u(o que também mostra todo o diretório inicial).

    • 7
  2. Christian
    2021-10-22T00:00:03+08:002021-10-22T00:00:03+08:00

    qual usuário você é na sua máquina local? Se você também for root, poderá editar esses arquivos. Se você é root, mas não pode editar, dê uma olhada no /etc/exportsarquivo de servidores, pois seu usuário root pode ser esmagado.

    root_squash Mapeia solicitações de uid/gid 0 para o uid/gid anônimo. Observe que isso não se aplica a quaisquer outros uids ou gids que possam ser igualmente confidenciais, como bin de usuário ou equipe de grupo.

       no_root_squash
              Turn off root squashing. This option is mainly useful for
              diskless clients.
    
       all_squash
              Map all uids and gids to the anonymous user. Useful for
              NFS-exported public FTP directories, news spool
              directories, etc. The opposite option is no_all_squash,
              which is the default setting.
    
       anonuid and anongid
              These options explicitly set the uid and gid of the
              anonymous account.  This option is primarily useful for
              PC/NFS clients, where you might want all requests appear
              to be from one user. As an example, consider the export
              entry for /home/joe in the example section below, which
              maps all requests to uid 150 (which is supposedly that of
              user joe).
    

    Além disso, você deve ter os mesmos IDs de usuário na máquina remota e local. Mas não há soluções de fácil manutenção para uso doméstico disponíveis.

    Caso você NÃO seja root, não deve haver como arquivar seu objetivo, pois ninguém deve ter permissão para editar os arquivos do root em uma máquina remota!

    • 0

relate perguntas

  • Como eu faria minha máquina Linux parecer que está executando o Windows?

  • Existe um equivalente a cd - para cp ou mv?

  • execute o contêiner do docker como root

  • Como ativar o sensor de impressão digital no domínio e no diretório ativo do Linux

  • Como alterar permanentemente Ctrl + C para Ctrl + K no CentOS 7?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como posso reduzir o consumo do processo `vmmem`?

    • 11 respostas
  • Marko Smith

    Baixar vídeo do Microsoft Stream

    • 4 respostas
  • Marko Smith

    O Google Chrome DevTools falhou ao analisar o SourceMap: chrome-extension

    • 6 respostas
  • Marko Smith

    O visualizador de fotos do Windows não pode ser executado porque não há memória suficiente?

    • 5 respostas
  • Marko Smith

    Como faço para ativar o WindowsXP agora que o suporte acabou?

    • 6 respostas
  • Marko Smith

    Área de trabalho remota congelando intermitentemente

    • 7 respostas
  • Marko Smith

    O que significa ter uma máscara de sub-rede /32?

    • 6 respostas
  • Marko Smith

    Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows?

    • 1 respostas
  • Marko Smith

    O VirtualBox falha ao iniciar com VERR_NEM_VM_CREATE_FAILED

    • 8 respostas
  • Marko Smith

    Os aplicativos não aparecem nas configurações de privacidade da câmera e do microfone no MacBook

    • 5 respostas
  • Martin Hope
    Saaru Lindestøkke Por que os arquivos tar.xz são 15x menores ao usar a biblioteca tar do Python em comparação com o tar do macOS? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh Como posso reduzir o consumo do processo `vmmem`? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Pesquisa do Windows 10 não está carregando, mostrando janela em branco 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    v15 Por que uma conexão de Internet gigabit/s via cabo (coaxial) não oferece velocidades simétricas como fibra? 2020-01-25 08:53:31 +0800 CST
  • Martin Hope
    andre_ss6 Área de trabalho remota congelando intermitentemente 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney Por que colocar um ponto após o URL remove as informações de login? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca Todos os meus complementos do Firefox foram desativados repentinamente, como posso reativá-los? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK É possível criar um código QR usando texto? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 Altere o nome da ramificação padrão do git init 2019-04-01 06:16:56 +0800 CST

Hot tag

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve