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 / user-213098

Christian Eriksson's questions

Martin Hope
Christian Eriksson
Asked: 2025-01-18 09:49:42 +0800 CST

Com sudo, por que as variáveis ​​de ambiente embutidas não são lidas corretamente sem -E em alguns sistemas?

  • 5

Tenho um script bash que efetua login na minha instância do bitwarden usando o bwcli, da seguinte maneira:

teste.sh:

#!/usr/bin/sh
set -e -o pipefail

bw logout --quiet || true

BW_CLIENTID=$(cat ./credentials.json | jq -r '.client_id') \
BW_CLIENTSECRET=$(cat ./credentials.json | jq -r '.client_secret') \
bw login --apikey

O ./credentials.jsontem as seguintes permissões:

-rw-r--r-- 1 root root 169 Jun 10  2023 credentials.json

executar este script como um usuário comum funciona bem, mas às vezes preciso executá-lo como root, e notei que em alguns sistemas o bwcomando não lê as variáveis ​​de ambiente inline corretamente quando executado apenas com sudo, ele só funciona com sudo -E, então:

./test.sh         # always works
sudo ./test.sh    # works on some machines but not others
sudo -E ./test.sh # always works

Quando funciona, obtenho a saída:

You are logged in!

e quando isso não acontece eu recebo:

client_id or client_secret is incorrect. Try again.

Digo "corretamente" porque parece que ele está lendo as variáveis ​​de alguma forma, porque se eu remover uma das variáveis ​​de ambiente assim:

BW_CLIENTID=$(cat /mnt/keys/vaultwarden.json | jq -r '.client_id') \
bw login --apikey

Em vez disso, sou solicitado a informar o segredo do cliente (ou o ID do cliente, se eu remover BW_CLIENTID). Então, por algum motivo, os valores nas variáveis ​​de ambiente não são lidos corretamente sem a -Eopção, mas eles parecem estar lá.

Tentei criar um teste com um script geral da seguinte maneira:

foo.sh:

#!/usr/bin/sh
set -e

FOO=$(cat ./data.json | jq -r '.my_prop') \
BAR=$(cat ./data.json | jq -r '.other_prop') \
./bar.sh

barra.sh:

#!/usr/bin/sh
set -e

echo "foo: '$FOO'"
echo "bar: '$BAR'"

Mas executar qualquer um deles em qualquer um dos meus sistemas funciona, todos eles fornecem a saída esperada (o conteúdo de my_prope other_propem data.json) e não vejo diferença entre o valor impresso para nenhuma das variantes:

./foo.sh
sudo ./foo.sh
sudo -E ./foo.sh

Eu testei em vários sistemas, que são uma mistura de sistemas Ubuntu e Arch. Até agora, ele falhou sem ele -Eem todos os sistemas Ubuntu e alguns Arch, e funcionou sem ele -Eem apenas um sistema Arch.

Minhas principais perguntas são: se há uma maneira de sudoser configurado para sempre executar com -Eou algo semelhante? E se há uma diferença de formatação ao usar a -Eopção? (credenciais podem ter alguns caracteres estranhos, mas não entendo por que a -Eopção faria diferença)

Vi que o /etc/sudoersarquivo permite que você faça algo como:

Defaults env_keep += "HOME"

Mas todas essas linhas são comentadas em todos /etc/sudoersos arquivos (portanto, em todos os sistemas, incluindo o que está funcionando) e não há arquivos adicionais em /etc/sudoers.d/. Eu também tentei adicionar BW_CLIENTIDe BW_CLIENTSECRETassim, mas não teve efeito:

Defaults env_keep += "BW_CLIENTID"
Defaults env_keep += "BW_CLIENTSECRETS

Mas talvez existam outros lugares ou cenários?

nota lateral: presumo que isso possa ser apenas alguma peculiaridade no bwcli que o faz não ser capaz de pegar as variáveis ​​de ambiente corretamente em algum sistema sem -E, mas gostaria de saber se há configurações que eu poderia começar a olhar em meus próprios sistemas. No entanto, eu estaria interessado em qualquer dica sobre isso também.

bash
  • 1 respostas
  • 57 Views
Martin Hope
Christian Eriksson
Asked: 2020-01-13 10:43:35 +0800 CST

Quais são as partições md em uma matriz mdadm?

  • 2

Estou configurando duas matrizes RAID 1 usando mdadm, parece estar funcionando bem, mas quando faço um check-in lsblk, vejo o seguinte:

sda                      8:0    0   5,5T  0 disk  
└─md127                  9:127  0   5,5T  0 raid1 
  ├─data-crypt-1       253:5    0   5,5T  0 crypt 
  │ └─myVg-data        253:6    0   5,5T  0 lvm   
  ├─md127p1            259:5    0 182,4G  0 md    
  └─md127p2            259:6    0   1,2T  0 md    
sdb                      8:16   0   5,5T  0 disk  
└─md127                  9:127  0   5,5T  0 raid1 
  ├─data-crypt-1       253:5    0   5,5T  0 crypt 
  │ └─myVg-data        253:6    0   5,5T  0 lvm   
  ├─md127p1            259:5    0 182,4G  0 md    
  └─md127p2            259:6    0   1,2T  0 md    
sdc                      8:32   0   5,5T  0 disk  
└─md126                  9:126  0   5,5T  0 raid1 
sdd                      8:48   0   5,5T  0 disk  
└─md126                  9:126  0   5,5T  0 raid1 

Quais são essas partições (?) md127p1e md127p2no meu array? Devo removê-los e, em caso afirmativo, como?

Não parece interferir no array, parece estar ressincronizando conforme o esperado. Mas eu me preocupo que, por exemplo, se alguém montasse dizer md127p1e escrevesse algo nele, isso corromperia os dados data-crypt-1(que abrange toda a unidade).

EDITAR:

O problema (se for um problema) persiste após a reinicialização e remontagem.

sudo wipefs --no-act /dev/md127
# DEVICE OFFSET TYPE        UUID                                 LABEL
# md127  0x0    crypto_LUKS ba3eab9b-db06-4053-9eb8-4e674931148c 

dmesgrelatam um comportamento ligeiramente diferente entre md126e md127. Não tenho certeza de como inspecionar a "reconstrução do plano de fundo".

dmesg | grep "md12[67]"
# [    3.072445] md/raid1:md127: not clean -- starting background reconstruction
# [    3.072445] md/raid1:md127: active with 2 out of 2 mirrors
# [    3.107577] md127: detected capacity change from 0 to 6001039835136
# [    3.112944]  md127: AHDI p1 p2 p3
# [    4.072578] md/raid1:md126: active with 2 out of 2 mirrors
# [    4.105528] md126: detected capacity change from 0 to 6001039835136
# [  175.221344]  md127: AHDI p1 p2 p3
# [  252.627169]  md127: AHDI p1 p2 p3
# [  337.950292]  md127: AHDI p1 p2 p3

e udevadmrelatórios da seguinte forma:

udevadm info /dev/md127p1
# P: /devices/virtual/block/md127/md127p1
# N: md127p1
# L: 100
# S: disk/by-id/md-name-XYZ:data-array-1-part1
# S: disk/by-id/md-uuid-94gd622:d96sf22:9fb73768:dae5367e-part1
# S: md/XYZ:data-array-1p1
# E: DEVLINKS=/dev/md/XYZ:data-array-1p1 /dev/disk/by-id/md-name-XYZ:data-array-1-part1 /dev/disk/by-id/md-uuid-94gd622:d96sf22:9fb73768:dae5367e-part1
# E: DEVNAME=/dev/md127p1
# E: DEVPATH=/devices/virtual/block/md127/md127p1
# E: DEVTYPE=partition
# E: MAJOR=259
# E: MD_DEVICES=2
# E: MD_DEVICE_ev_sda_DEV=/dev/sda
# E: MD_DEVICE_ev_sda_ROLE=0
# E: MD_DEVICE_ev_sdb_DEV=/dev/sdb
# E: MD_DEVICE_ev_sdb_ROLE=1
# E: MD_DEVNAME=XYZ:data-array-1
# E: MD_LEVEL=raid1
# E: MD_METADATA=1.2
# E: MD_NAME=XYZ:data-array-1
# E: MD_UUID=94gd622:d96sf22:9fb73768:dae5367e
# E: MINOR=5
# E: PARTN=1
# E: SUBSYSTEM=block
# E: SYSTEMD_WANTS=mdmonitor.service
# E: TAGS=:systemd:
# E: USEC_INITIALIZED=337999178
udevadm info /dev/md127p2
# P: /devices/virtual/block/md127/md127p2
# N: md127p2
# L: 100
# S: disk/by-id/md-name-XYZ:data-array-1-part2
# S: disk/by-id/md-uuid-94gd622:d96sf22:9fb73768:dae5367e-part2
# S: md/XYZ:data-array-1p2
# E: DEVLINKS=/dev/disk/by-id/md-name-XYZ:data-array-1-part2 /dev/disk/by-id/md-uuid-94gd622:d96sf22:9fb73768:dae5367e-part2 /dev/md/XYZ:data-array-1p2
# E: DEVNAME=/dev/md127p2
# E: DEVPATH=/devices/virtual/block/md127/md127p2
# E: DEVTYPE=partition
# E: MAJOR=259
# E: MD_DEVICES=2
# E: MD_DEVICE_ev_sda_DEV=/dev/sda
# E: MD_DEVICE_ev_sda_ROLE=0
# E: MD_DEVICE_ev_sdb_DEV=/dev/sdb
# E: MD_DEVICE_ev_sdb_ROLE=1
# E: MD_DEVNAME=XYZ:data-array-1
# E: MD_LEVEL=raid1
# E: MD_METADATA=1.2
# E: MD_NAME=XYZ:data-array-1
# E: MD_UUID=94gd622:d96sf22:9fb73768:dae5367e
# E: MINOR=6
# E: PARTN=2
# E: SUBSYSTEM=block
# E: SYSTEMD_WANTS=mdmonitor.service
# E: TAGS=:systemd:
# E: USEC_INITIALIZED=337999612

hexdumpmostra:

sudo hexdump -C -n 512 /dev/md127
# *
# *
# 000001c0  7c e8 03 4d 62 32 d5 66  37 75 6b e9 12 6d 16 cc  ||..Mb2.f7uk..m..|
# 000001d0  96 9e 6f 3d 32 e0 e7 fe  7f f4 9c a1 59 03 19 47  |..o=2.......Y..G|
# 000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
# *

Também observei que não vejo as partições "fantasmas" em algumas máquinas, em particular, não as minhas máquinas DietPi as mostram. Eles aparecem na minha máquina Ubuntu. Além disso, observei que ambos os arrays (md126 e md127) foram criados em uma das máquinas DietPi.

mdadm software-raid
  • 1 respostas
  • 953 Views

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