{ "meta": { "title": "Máquina: Adicionar diretório compartilhado no Host ProxMenux Documentação", "description": "Crie um diretório no host pronto para bind mounts LXC, com permissões para contêineres com e sem privilégios. Sticky bit, rwx para todos e ACLs padrão para herança.", "ogTitle": "Máquina: Adicionar diretório compartilhado no Host ProxMenux Documentação", "ogDescription": "Prepare um diretório host para bind mounts LXC com permissões compatíveis com CTs privilegiadas e sem privilégios." }, "header": { "title": "Máquina: Adicionar diretório compartilhado na Máquina", "description": "Crie um diretório no host para bind mounts em um ou mais contêineres LXC. O ProxMenux aplica permissões para CTs com e sem privilégios, sem precisar alinhar UIDs deslocados ou executar chown para cada contêiner, e registra o diretório para uso posterior pelo LXC Mount Manager.", "section": "Armazenamento e Compartilhamento · Máquina" }, "intro": { "title": "O que é isto (e NÃO é)", "body": "Esta ferramenta não registra nada no Proxmox (nenhum pvesm add aqui). Ele apenas prepara um diretório no host — /mnt/shared, por padrão — com permissões que qualquer contêiner LXC pode ler e gravar, independentemente de o CT ser privilegiado ou não. A próxima etapa normal é montá-lo em cada CT com o LXC Mount Manager." }, "why": { "heading": "Por que uma ferramenta dedicada para isso", "intro": "Quando você vincula uma pasta de host em um container LXC, as permissões dependem de:", "items": [ "Se o CT tem privilégios (UID 0 no CT = UID 0 no host) ou não tem privilégios (UID 0 no CT = UID 100000 no host, com deslocamento de +100000).", "O proprietário do diretório do host (um arquivo do UID 1000 no host usa as permissões de “outros” para um CT sem privilégios, pois nenhum usuário do CT corresponde a esse UID do host).", "Se vários CTs compartilham o mesmo diretório (CTs diferentes podem ter diferentes intervalos UID)." ], "outro": "O truque pragmático que ProxMenux usa aqui é para dar a todos acesso no nível do sistema de arquivos: world-rwx mais o sticky bit, além de ACLs para que os novos arquivos herdem as mesmas permissões. Qualquer UID mapeado pode ler e escrever; nenhum alinhamento UID / GID é necessário." }, "howRuns": { "heading": "Como o script é executado", "body": "O script não tem menu principal — ele executa uma única ação, Crie diretório compartilhado. Fase 1 coleta o caminho-alvo; Fase 2 cria o diretório e aplica permissões." }, "bits": { "heading": "O que cada bits de permissão faz", "intro": "O número 1777 não é arbitrário — é o mesmo modo que o Linux usa para /tmp. Três propriedades combinadas:", "headerBit": "Bit", "headerEffect": "Efeito", "headerWhy": "Porque é que isto importa aqui?", "rows": [ { "bit": "1 (sticky bit)", "effect": "Somente o proprietário do arquivo, o proprietário do diretório ou um processo com privilégios suficientes pode excluir ou renomear o arquivo.", "why": "Ajuda a impedir que usuários com UIDs mapeados diferentes apaguem arquivos uns dos outros. Não isola CTs com o mesmo UID mapeado ou acesso root privilegiado." }, { "bit": "777 (rwx-rwx-rwx)", "effect": "Todos podem ler, gravar e atravessar o diretório.", "why": "Os UIDs CT não privilegiados (100000+) aparecem como \"outros\" do host, então o world-rwx lhes dá acesso." }, { "bit": "ACL (predefinidas)", "effect": "Herdado em cada arquivo / subdir recém-criado.", "why": "O novo conteúdo herda as ACLs padrão sem executar o script novamente. Os aplicativos ainda podem solicitar modos restritivos ou alterar as permissões depois." } ], "privTitle": "Os CTs com privilégios veem o mesmo resultado, sem o deslocamento de UIDs", "privBody": "Para um CT privilegiado, o UID 0 no CT é o UID 0 no host, então o root dentro do CT pode ler / escrever o diretório do host diretamente. 1777 ainda está bem — isso significa que usuários não root dentro do CT também podem usar o diretório. As mesmas permissões cobrem ambos os casos." }, "where": { "heading": "Onde colocar o diretório compartilhado", "intro": "O selecionador de localização oferece quatro opções:", "opt1Title": "1. Criar uma nova pasta no /mnt", "opt1Body": "A escolha habitual. ProxMenux auto-sugere o primeiro nome livre (shared, shared2, shared3, ...). Basta confirmar ou escrever um nome diferente.", "opt2Title": "2. Digite o caminho personalizado", "opt2Body": "Para pastas fora de /mnt. Qualquer caminho absoluto funciona (por exemplo, /srv/media, /data/family). O script aplica as mesmas permissões.", "opt3Title": "3. Ver as pastas existentes no /mnt", "opt3Body": "Diagnóstico somente leitura: lista todos os diretórios sob /mnt com suas permissões, proprietário e espaço disponível. Útil antes de criar um novo para evitar colisões de nomes.", "opt4Title": "4. Cancelar", "opt4Body": "Sai sem criar nada. O mesmo que pressionar Esc.", "tipTitle": "Onde vive o /mnt?", "tipBody": "Por padrão, o /mnt fica no sistema de arquivos raiz do Proxmox. Se você quiser o diretório compartilhado em um disco diferente (um disco de dados, um pool ZFS), monte esse disco em /mnt/<name> primeiro (disco Manager ou Adicionar disco local como armazenamento Proxmox), e então crie o diretório compartilhado como uma subpasta dentro dele — ou escolha \"Digite o caminho personalizado\" aqui e aponte para o disco montado." }, "manual": { "heading": "Equivalente manual", "body": "Todo o fluxo pode ser reproduzido à mão:" }, "next": { "heading": "Próxima etapa: bind mount nos contêineres", "body": "Criar o diretório apenas o prepara – nenhum contêiner o vê ainda. Para torná-lo visível dentro de um ou mais LXCs, use o LXC Mount Manager para vincular a montagem /mnt/<name> nos CTs. Como as permissões já estão abertas, o Mount Manager não se oferecerá para alterá-las — o diretório está pronto para ser usado como está." }, "troubleshoot": { "heading": "Resolução de Problemas", "mkdirTitle": "\"Failed to create directory\"", "mkdirBody": "Normalmente um problema do sistema de arquivos: /mnt está em um sistema de arquivos somente leitura, o caminho contém um componente que não é um diretório (por exemplo, você digitou /etc/passwd/sub), ou o disco está cheio. Verifique com df -h /mnt e mount | grep /mnt.", "writeTitle": "O recipiente não pode escrever apesar das permissões abertas", "writeBody": "Verifique novamente se o CT está realmente usando a montagem de ligação (pct config <ctid> | grep ^mp). Dentro do CT, execute touch /mnt/data/test-$(date +%s) — se isso falhar com a permissão negada, a montagem pode estar em um sistema de arquivos host que não honra ACLs (algumas montagens mais antigas de ext3 ou vfat). Mova o diretório compartilhado para um ext4 / xfs / btrfs / zfs de suporte.", "aclTitle": "Comandos ACL silenciosamente indisponíveis", "aclBody": "Em uma instalação Proxmox mínima setfacl / getfacl podem não estar instalados. O script cai de volta graciosamente (command -v setfacl check) e aplica apenas permissões POSIX — que é muitas vezes suficiente, mas novos arquivos não herdarão automaticamente o perfil permissivo. Instale acl com apt-get install -y acl e execute novamente o script no diretório." }, "related": { "heading": "Relacionado", "items": [ { "href": "/docs/storage-share/lxc-mount-points", "label": "Gerenciador de montagem LXC", "tail": " — a etapa natural seguinte: ligar esta pasta num ou mais recipientes." }, { "href": "/docs/storage-share/host-local-disk", "label": "Adicionar o disco local como armazenamento Proxmox", "tailRich": " — se você quiser o diretório compartilhado em um disco dedicado, prepare o disco primeiro, monte-o em /mnt, em seguida, crie a subpasta compartilhada aqui." } ] } }