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 / coding / Perguntas / 79569141
Accepted
THX
THX
Asked: 2025-04-11 22:56:49 +0800 CST2025-04-11 22:56:49 +0800 CST 2025-04-11 22:56:49 +0800 CST

Como mover o diretório de configuração das unidades de usuário do systemd

  • 772

Gostaria de mover para um host Linux para todos os usuários o diretório da unidade de usuário systemd.

Os diretórios de unidades de usuário nativos em

${HOME}/.config/systemd/user

não são acessíveis ao systemd por vários motivos. Portanto, um usuário não pode usar systemd --userpara habilitar nenhuma unidade específica do usuário ou de todo o sistema.

Unidades de usuário em todo o Systemd podem, em princípio, ser implantadas por um administrador em [nome do sistema] /etc/systemd/usere podem ser iniciadas por um usuário. No entanto, ao habilitar uma unidade de usuário, o Systemd tentará criar um link simbólico para a unidade em [nome do sistema] ${HOME}/.config/systemd/user, mas isso falha, pois o diretório do usuário não está acessível ao Systemd.

Portanto, gostaria de configurar o systemd para alterar os diretórios base do usuário para algo diferente ${HOME}/.config/systemd/user, ou seja, para um caminho igualmente acessível pelo systemd e pelos usuários.

linux
  • 3 3 respostas
  • 27 Views

3 respostas

  • Voted
  1. Best Answer
    3aska
    2025-04-12T02:14:04+08:002025-04-12T02:14:04+08:00

    Acho que o problema é que o systemd insiste em criar links simbólicos ao ${HOME}/.config/systemd/userhabilitar unidades e, se esse diretório não estiver acessível (comum com NFS homes/permissões restritivas etc.), você ficará preso.

    Você pode substituir onde o systemd procura por unidades de usuário criando uma configuração drop-in:

    sudo mkdir -p /etc/systemd/system.conf.d/
    

    Em seguida crie um arquivo /etc/systemd/system.conf.d/user-units-path.confcom:

    
    
    [Manager] 
    
    DefaultUserUnitPath=/var/lib/systemd/users/%U/units:/etc/systemd/user
    

    O %Ué substituído pelo nome de usuário. Escolhi /var/lib/systemd/users/porque é um local sensato que não entra em conflito com outras coisas, mas você pode escolher outra coisa.

    Depois de criar este arquivo, recarregue o systemd:

    sudo systemctl daemon-reload
    

    Em seguida, crie os diretórios necessários para cada usuário e defina as permissões:

    sudo mkdir -p /var/lib/systemd/users/username/units
    sudo chown username:username /var/lib/systemd/users/username -R
    

    Agora seus usuários podem habilitar e iniciar unidades usando systemctl --user enable whatever.servicee ele criará os links simbólicos no novo local em vez de falhar no acesso ~/.config/systemd/user.

    Estou usando essa configuração há meses sem problemas. Espero que ajude!

    • 4
  2. grawity_u1686
    2025-04-12T03:11:32+08:002025-04-12T03:11:32+08:00

    O caminho é realmente $XDG_CONFIG_HOME/systemd/user.

    No entanto, systemd --userele é executado em um ambiente de "serviço" separado (que provavelmente é o motivo pelo qual ele não consegue acessar o HOME do usuário na sua configuração estranha?), portanto, o XDG_CONFIG_HOME precisa ser definido no ambiente desse serviço – [email protected]e não apenas no ambiente "shell" do usuário.

    Em outras palavras, ~/.profile ou ~/.bashrc não funcionam. Você precisa usar o comando e definir XDG_CONFIG_HOME lá.systemctl edit [email protected]

    Lembre-se de que isso também afetará todos os programas de usuário executados em 'systemd --user', ou seja, seus diretórios de configuração também serão movidos para o novo local. Pode ser possível desfazer isso por meio de DefaultEnvironment=systemd ManagerEnvironment=-user.conf(5).

    • 0
  3. John Mulhall
    2025-04-12T17:01:47+08:002025-04-12T17:01:47+08:00

    Eu perguntaria o porquê, já que o systemd usa todo o sistema por padrão e links simbólicos. Como /etc/systemd/pode danificar seu sistema operacional se você mexer nele, recomendo assumir que é uma versão mais recente do kernel, como o seguinte:

    1. Se necessário, altere SOMENTE os links simbólicos de nível de usuário, deixando o padrão para todo o sistema. Pessoalmente, eu pularia e passaria para o item 2 abaixo para alterações em todo o sistema. Se for baseado no usuário, provavelmente não é aconselhável.

    2. O usuário deve usar o processo de substituição do systemd, sem manipulação direta de arquivos ao alterar, adicionar, etc., arquivos de configuração do systemd sudo systemctl edit mydaemond, usando o recurso de substituição. Para ilustrar o processo de edição, no console do VI do arquivo unitário, use a tecla link, como WantedBy=na linha abaixo WantedBy=multi-user.target. Isso usará o arquivo de substituição para implementar as alterações. Reload damons with sudo systemctl daemon-reload(recarrega o arquivo unitário do daemon com as substituições).

      1. SE o seu servidor estiver sendo executado em um formato de especificação baixa (por exemplo, AWS t2.micro), aguarde alguns segundos para que os arquivos da unidade sejam recarregados.

      Então verifique com sudo systemctl status mydaemond.

    • 0

relate perguntas

  • Como fazer backup dos meus arquivos no Google Drive usando Duplicity no Linux?

  • Edição condicional de TSV grande no Linux

  • Contando ocorrências de string na segunda coluna que corresponde às primeiras colunas de um arquivo [fechado]

  • Extraia valores de saída do arquivo de imagem de disco como strings no Linux [fechado]

  • Precisa de ajuda para executar um comando envolvendo várias aspas simples e duplas na linha de comando do Windows via bsub

Sidebar

Stats

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

    Reformatar números, inserindo separadores em posições fixas

    • 6 respostas
  • Marko Smith

    Por que os conceitos do C++20 causam erros de restrição cíclica, enquanto o SFINAE antigo não?

    • 2 respostas
  • Marko Smith

    Problema com extensão desinstalada automaticamente do VScode (tema Material)

    • 2 respostas
  • Marko Smith

    Vue 3: Erro na criação "Identificador esperado, mas encontrado 'import'" [duplicado]

    • 1 respostas
  • Marko Smith

    Qual é o propósito de `enum class` com um tipo subjacente especificado, mas sem enumeradores?

    • 1 respostas
  • Marko Smith

    Como faço para corrigir um erro MODULE_NOT_FOUND para um módulo que não importei manualmente?

    • 6 respostas
  • Marko Smith

    `(expression, lvalue) = rvalue` é uma atribuição válida em C ou C++? Por que alguns compiladores aceitam/rejeitam isso?

    • 3 respostas
  • Marko Smith

    Um programa vazio que não faz nada em C++ precisa de um heap de 204 KB, mas não em C

    • 1 respostas
  • Marko Smith

    PowerBI atualmente quebrado com BigQuery: problema de driver Simba com atualização do Windows

    • 2 respostas
  • Marko Smith

    AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos

    • 1 respostas
  • Martin Hope
    Fantastic Mr Fox Somente o tipo copiável não é aceito na implementação std::vector do MSVC 2025-04-23 06:40:49 +0800 CST
  • Martin Hope
    Howard Hinnant Encontre o próximo dia da semana usando o cronógrafo 2025-04-21 08:30:25 +0800 CST
  • Martin Hope
    Fedor O inicializador de membro do construtor pode incluir a inicialização de outro membro? 2025-04-15 01:01:44 +0800 CST
  • Martin Hope
    Petr Filipský Por que os conceitos do C++20 causam erros de restrição cíclica, enquanto o SFINAE antigo não? 2025-03-23 21:39:40 +0800 CST
  • Martin Hope
    Catskul O C++20 mudou para permitir a conversão de `type(&)[N]` de matriz de limites conhecidos para `type(&)[]` de matriz de limites desconhecidos? 2025-03-04 06:57:53 +0800 CST
  • Martin Hope
    Stefan Pochmann Como/por que {2,3,10} e {x,3,10} com x=2 são ordenados de forma diferente? 2025-01-13 23:24:07 +0800 CST
  • Martin Hope
    Chad Feller O ponto e vírgula agora é opcional em condicionais bash com [[ .. ]] na versão 5.2? 2024-10-21 05:50:33 +0800 CST
  • Martin Hope
    Wrench Por que um traço duplo (--) faz com que esta cláusula MariaDB seja avaliada como verdadeira? 2024-05-05 13:37:20 +0800 CST
  • Martin Hope
    Waket Zheng Por que `dict(id=1, **{'id': 2})` às vezes gera `KeyError: 'id'` em vez de um TypeError? 2024-05-04 14:19:19 +0800 CST
  • Martin Hope
    user924 AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos 2024-03-20 03:12:31 +0800 CST

Hot tag

python javascript c++ c# java typescript sql reactjs html

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