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 / unix / 问题

All perguntas(unix)

Martin Hope
Mihir
Asked: 2025-04-17 07:36:15 +0800 CST

Mesclando valores de 2 arquivos YAML no bash

  • 7

Um comando bash:

$(System.DefaultWorkingDirectory)/yq_linux_amd64 '. *= load("${{ parameters.HELM_CHART_PATH }}/values/DEV/${{ parameters.COMPONENT }}.yaml")' ${{ parameters.HELM_CHART_PATH }}/values/global-values.yaml > $(System.DefaultWorkingDirectory)/deployment-values.yaml

Está mesclando valores de 2 arquivos YAML e enviando a saída mesclada para um único arquivo. Não consigo entender a sintaxe da primeira aspa simples até que a saída seja redirecionada. Alguém pode me ajudar a entender o que isso significa?

Por que ambos os operandos estão depois do operador *=? , que .é o diretório atual, mas o que significa antes de *=?

Além disso, por que apenas o 1º operando está entre load ()e qual é o seu significado?

bash
  • 2 respostas
  • 94 Views
Martin Hope
Liric Ramer
Asked: 2025-04-16 21:59:49 +0800 CST

Mapeando dois usuários para hospedar com namespaces de usuário

  • 7

Estou tentando entender se é possível mapear dois usuários de um namespace de usuário para dois usuários diferentes no host.

O objetivo é replicar as mesmas permissões que tenho no meu host dentro de uma rootfs(base Ubuntu, porque estou tentando construir um contêiner do zero).

Por exemplo:

  • Tudo abaixo /deve pertencer a root.
  • /home/userdeve pertencer ao regular user.

Para conseguir isso, pensei em usar o mapeamento de UID em um namespace de usuário, algo como:

UID in user namespace      ---> UID on host
      1000 (admin)         ->       0 (root)
      1001 (bob)           ->    1001 (bob)

Esse tipo de mapeamento é mesmo possível?

Aqui está o que eu já tentei:

  • Executando echo -e "1000 0 1\n1001 1001 1" > /proc/[PID]/uid_mappara definir o mapeamento, mas recebo um erro.
  • Tentando modificar manualmente /proc/[PID]/uid_mappara newuidmapcada usuário.

No entanto, nunca consegui mapear mais de um usuário e não consigo mapear o UID 0 (root) de jeito nenhum.

Atualizar:

Li as páginas de manual e segui as restrições mencionadas ali, mas ainda estou recebendo mensagens de erro.

Por exemplo:

# terminal 1

unshare --user bash
echo $$ # 11591
# terminal 2 as user 'alex' (uid = 1000)

newuidmap 11591 0 0 1
# newuidmap: uid range [0-1) -> [0-1) not allowed

newuidmap 11591 1001 1001 1
# newuidmap: uid range [1001-1002) -> [1001-1002) not allowed

Esses comandos falham, mesmo quando executados com sudo.

Também tentei mapear os subuids que declarei, mas ainda não funciona:

cat /etc/subuid

alex:100000:65536
root:200000:65536
self:300000:65536

cat /etc/subgid

alex:100000:65536
root:200000:65536
self:300000:65536
filesystems
  • 1 respostas
  • 67 Views
Martin Hope
Isidro Arias
Asked: 2025-04-16 18:02:44 +0800 CST

Por que `tail -c 4097 /dev/zero` sai imediatamente em vez de bloquear?

  • 14

Observo que, no Ubuntu 24.04.2 com coreutilsversão 9.4-3ubuntu6, executando:

$ tail -c 4097 /dev/zero
$ echo $?
0

sai imediatamente com um código de status 0. Eu esperava que o comando bloqueasse indefinidamente, já que /dev/zero é um fluxo infinito.

Em contraste, os seguintes comandos se comportam conforme o esperado (ou seja, eles bloqueiam até serem interrompidos):

$ tail -c 4096 /dev/zero
^C
$ echo $?
130
$ cat /dev/zero | tail -c 4097
^C
$ echo $?
130

Tentativa de depuração

A saída do strace mostra diferenças entre as duas invocações:

strace tail -c 4096 /dev/zero strace tail -c 4097 /dev/zero
… …
fechar(3) = 0 fechar(3) = 0
openat(AT_FDCWD, "/dev/zero", O_RDONLY) = 3 openat(AT_FDCWD, "/dev/zero", O_RDONLY) = 3
fstat(3, {st_mode=S_IFCHR|0666, st_rdev=makedev(0x1, 0x5), …}) = 0 fstat(3, {st_mode=S_IFCHR|0666, st_rdev=makedev(0x1, 0x5), …}) = 0
lseek(3, -4096, FIM_DE_BUSCA) = 0 lseek(3, -4097, FIM_DE_BUSCA) = 0
leia(3, "\0\0\0\0\0\0\0\0\0"…, 8192) = 8192 leia(3, "\0\0\0\0\0\0\0\0\0\…, 4097) = 4097
leia(3, "\0\0\0\0\0\0\0\0\0"…, 8192) = 8192 fstat(1, {st_mode=S_IFIFO|0600, st_size=0, …}) = 0
leia(3, "\0\0\0\0\0\0\0\0\0"…, 8192) = 8192 escreva(1, "\0\0\0\0\0\0\0\0\0\…, 4096
leia(3, "\0\0\0\0\0\0\0\0\0"…, 8192) = 8192 fechar(3) = 0
leia(3, "\0\0\0\0\0\0\0\0\0"…, 8192) = 8192 escreva(1, "\0", 1) = 1
leia(3, "\0\0\0\0\0\0\0\0\0"…, 8192) = 8192 fechar(1) = 0
leia(3, "\0\0\0\0\0\0\0\0\0"…, 8192) = 8192 fechar(2) = 0
leia(3, "\0\0\0\0\0\0\0\0\0"…, 8192) = 8192 exit_group(0) = ?
leia(3, "\0\0\0\0\0\0\0\0\0"…, 8192) = 8192 ~~+~~ saiu com 0 ~~+~~
leia(3, "\0\0\0\0\0\0\0\0\0"…, 8192) = 8192
leia(3, "\0\0\0\0\0\0\0\0\0"…, 8192) = 8192
…
linux
  • 1 respostas
  • 211 Views
Martin Hope
BrandonStudio
Asked: 2025-04-16 12:26:14 +0800 CST

btrfs: opção de montagem não reconhecida 'errors=continue'

  • 5

O btrfs não suporta errors=continue?

log dmesg

mount
  • 1 respostas
  • 27 Views
Martin Hope
SuperAl
Asked: 2025-04-16 06:11:11 +0800 CST

O tempo limite do nslookup é atingido quando o tipo é definido como MX

  • 5

Para enviar e-mails 2FA de um site PHP para mim mesmo, configurei uma substituição de registro MX e criei uma regra de firewall que permite acesso ao servidor de e-mail para o domínio de destino, mas quando tento enviar, sendmailgrava em seu log que o e-mail foi aceito para entrega, mas nunca é entregue.

Para testar a resolução de nomes DNS, eu executo nslookupe insiro type=MXo comando, mas ele sempre imprime:

;; communications error to 10.0.0.1#53: timed out
;; communications error to 10.0.0.1#53: timed out
;; communications error to 10.0.0.1#53: timed out
;; no servers could be reached

Quando eu ping, telnet, ou curl, etc, a resolução de nomes por esse servidor DNS funciona bem. Por exemplo, ele pode instalar pacotes de repositórios Debian.

A partir dessas poucas informações sobre sendmail, que consegui absorver, parece que tudo o que ele precisa entregar [email protected]é um registro MX para example.comapontar para smtp.example.com. Corrija-me se eu estiver errado. Todos esses itens parecem estar em vigor: há um registro MX para example.comno meu servidor DNS; ele aponta para , smtp.example.comque também tem um registro A; estou enviando para [email protected]; há uma regra de firewall que permite que a máquina Linux com sendmailresolva nomes com o servidor DNS; há uma regra de firewall que permite que a máquina Linux com sendmailenvie e-mails para smtp.example.com. Tudo isso existe na minha LAN e não precisa de nenhum acesso à Internet externa.

Como devo solucionar problemas de entrega do sendmail nessa situação?

EDITAR :

Enquanto isso, descobri a causa raiz da falha sendmail: ele acrescenta qualquer endereço de e-mail que eu uso na linha de comando com o nome de usuário conectado no momento (sem considerar su), ou seja, se meu nome de usuário for myusername, ele muda me@mydomainpara myusername@me@mydomainna primeira tentativa e myusername@mydomainna segunda tentativa.

Falta alguma coisa em sendmail.mc, mas o que é?

debian
  • 1 respostas
  • 21 Views
Martin Hope
rdong8
Asked: 2025-04-15 16:19:59 +0800 CST

O que é esse ícone (pontos sobre uma linha cinza curva) que aparece momentaneamente na minha barra de status do GNOME?

  • 14

Captura de tela dos ícones da barra de status do GNOME

O ícone mais à esquerda ( thunderbolt-acquiring-symbolic.svg) é o que está em questão.

Para contextualizar, tenho um par de fones de ouvido Bluetooth multiponto conectados simultaneamente ao meu iPhone e ao meu laptop Linux. Quando ouço música no meu celular, vejo periodicamente este ícone aparecer no meu laptop, mesmo quando não estou reproduzindo nenhum áudio. O ícone normalmente desaparece em alguns segundos, mas minha música fica inaudível (mas ainda tocando no meu celular) por um tempo. Depois, tudo volta ao normal.

shell
  • 2 respostas
  • 1401 Views
Martin Hope
Stewart
Asked: 2025-04-15 15:34:48 +0800 CST

Aplique o patch do Debian Quilt no arquivo original com terminações de linha do DOS

  • 6

Tenho um arquivo com terminações de linha no estilo DOS em um *.orig.tar.xzpacote de código-fonte que preciso corrigir antes de compilar um 3.0 (quilt)pacote Debian. Meu patch atualmente tem terminações de linha no estilo Unix.

Podemos inspecionar os arquivos para ver se o patch tem 29 terminações de linha no estilo Unix e se o arquivo de origem tem 5000 terminações de linha no estilo Dos.

$ dos2unix -i debian/patches/model_icd CONFIG/model_config_file.txt
       0      29       0  no_bom    text    debian/patches/model_icd
    5000       0       0  no_bom    text    CONFIG/model_config_file.txt

Resultados da construção:

$ dpkg-buildpackage
...
 dpkg-source --before-build .
dpkg-source: info: using patch list from debian/patches/series
dpkg-source: info: applying model_icd
patching file CONFIG/model_config_file.txt
Hunk #1 FAILED at 1638 (different line endings).
Hunk #2 FAILED at 4997 (different line endings).
2 out of 2 hunks FAILED
dpkg-source: info: the patch has fuzz which is not allowed, or is malformed
dpkg-source: info: if patch 'model_icd' is correctly applied by quilt, use 'quilt refresh' to update it
dpkg-source: info: restoring quilt backup files for model_icd
dpkg-source: error: LC_ALL=C patch -t -F 0 -N -p1 -u -V never -E -b -B .pc/model_icd/ --reject-file=- < debian/patches/model_icd subprocess returned exit status 1
dpkg-buildpackage: error: dpkg-source --before-build . subprocess returned exit status 2

Coisas que tentei:

Primeiro, eu simplesmente modifiquei meu patch para usar terminações de linha no estilo dos, mas o quilt remove isso e eu obtenho o mesmo resultado

$ unix2dos debian/patches/model_icd
$ dos2unix -i debian/patches/model_icd CONFIG/model_config_file.txt
      29       0       0  no_bom    text    debian/patches/model_icd
    5000       0       0  no_bom    text    CONFIG/model_config_file.txt
$ dpkg-buildpackage
...
dpkg-source: info: applying model_icd
(Stripping trailing CRs from patch; use --binary to disable.)
patching file CONFIG/model_config_file.txt
Hunk #1 FAILED at 1638 (different line endings).
Hunk #2 FAILED at 4997 (different line endings).
2 out of 2 hunks FAILED
...

Se eu testar quiltdiretamente, posso fazê-lo funcionar com a --binaryopção:

$ quilt push -a --binary
Applying patch model_icd
patching file CONFIG/model_config_file.txt

Now at patch model_icd

Para que isso funcione de forma mais automática, tentei definir QUILT_PATCH_OPTS=:

$ QUILT_PATCH_OPTS="--binary" quilt push -a
Applying patch model_icd
patching file CONFIG/model_config_file.txt

Now at patch model_icd

Então, tentei definir isso em debian/rules:

export QUILT_PATCH_OPTS="--binary"
%:
        dh $@

Mas isso não é usado por dpkg-sourcequem usa patchdiretamente, nãoquilt

Em seguida, tentei enganá-lo definindo esse sinalizador no patches/seriesarquivo. dpkg-source(1)recomenda contra isso, o que sugere que isso pode ser possível.

# debian/patches/series
model_icd --binary

Mas isso ainda não funciona.

Tentei procurar source/optionsalgo e li o guia do mantenedor , mas não vi isso abordado em lugar nenhum.

debian
  • 1 respostas
  • 25 Views
Martin Hope
jsx97
Asked: 2025-04-15 04:03:18 +0800 CST

Por que meus nomes de arquivo UTF-8 sempre correspondem a uma expressão de colchetes regex em Perl?

  • 9

Aqui está um script para corrigir nomes de arquivos cirílicos quebrados se os arquivos foram movidos do Windows para o Mac (com base em uma resposta para Reverter nomes de arquivos depois que eles foram corrompidos pelo uso de codificação diferente )

#!/bin/zsh

# Usage: <script> <target directory>
# Requires Perl::Rename

find "$1" -mindepth 1 -print0 |
  rename -0 -d -e '
    use Unicode::Normalize qw(NFC);
    use Encode qw(:all);

    if ($_ =~ /[†°Ґ£§•¶І®©™Ђђ≠]/) {
      my $check = DIE_ON_ERR | LEAVE_SRC;
      my $new = eval {encode("UTF-8",
                      decode("cp866",
                      encode("mac-cyrillic",
                      NFC(decode("UTF-8", $_, $check)), $check), $check))
                     };
      if ($new) {$_ = $new;} else {warn $@;}
    }'

Quero que ele renomeie apenas os arquivos no diretório de destino que tenham pelo menos um dos seguintes caracteres em seus nomes: †°Ґ£§•¶І®©™Ђђ≠. Mas, por algum motivo, o script renomeia todos os arquivos ali: por exemplo, um nome de arquivo correto срочно.txté alterado para um ёЁюўэю.txt. O que estou fazendo errado?

O caminho para minha pasta de teste é simples /Users/john/scripts/test: sem espaços, sem caracteres cirílicos ou especiais.

O script é usado no macOS e com a versão BSD do find.

Uma atualização dois dias após a resposta à pergunta: as versões Chazelas e Choroba do Stéphane funcionam bem para mim. A versão do Terdon ainda não funciona.

perl
  • 4 respostas
  • 1238 Views
Martin Hope
arslivinski
Asked: 2025-04-14 23:41:35 +0800 CST

Autenticar com um botão físico

  • 6

Tenho um Raspberry PI Pico por aí e estava pensando em criar um dispositivo que, quando eu precisasse me autenticar no Linux, eu pudesse simplesmente clicar em um botão soldado no Pico, que então enviaria uma mensagem ao computador que me autenticaria.

Este dispositivo estaria conectado a um computador seguro, então não haveria problema.

A questão é: como posso fazer isso? Não tenho experiência com programação em Linux, então não sei se já existe um serviço ou biblioteca que possa ser usado para isso. Sei que a YubiKey tem dispositivos com um botão que funciona mais ou menos assim, mas também li que eles precisam de conexão com a internet para funcionar, o que é inaceitável.

linux
  • 3 respostas
  • 62 Views
Martin Hope
drjeep
Asked: 2025-04-14 23:10:21 +0800 CST

Problemas com systemd-logind e d-bus em um servidor SFTP ocupado

  • 6

Recentemente atualizamos um servidor SFTP CentOS 7 de alto volume openssh/internal-sftppara o Rocky Linux 8.

No entanto, desde a atualização, estamos enfrentando problemas de tempo limite de login após o servidor estar em execução por 1 a 2 horas. Isso parece estar relacionado ao número de sessões e/ou systemd --userprocessos SFTP abertos.

Após 1-2 horas, novos logins SFTP tornam-se extremamente lentos e começamos a ver essas mensagens no log

Apr 14 12:16:58 sftp sshd[330585]: pam_systemd(sshd:session): Failed to create session: Connection timed out

Às vezes, o problema desaparece se sessões SFTP forem fechadas com rapidez suficiente, mas, na maioria das vezes, precisamos reiniciar o servidor para restaurar o serviço normal.

Seria aconselhável desabilitar, systemd-logindjá que isso não parece necessário para SSH?

ATUALIZAÇÃO
Não tenho certeza se isso é relevante, mas systemctl list-units --state=abandonedretorna centenas de sessões abandonadas.

ATUALIZAÇÃO 2
Após a desativação, pam_systemd.soo sistema voltou a funcionar normalmente. Isso efetivamente desativa systemd-logindas sessões SSH.

Uma redução de 80% na carga do sistema indica uma grande perda de desempenho ao usar systemd-logind.

Isso é normal?!

linux
  • 1 respostas
  • 36 Views
Prev
Próximo

Sidebar

Stats

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

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

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