AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-213098

Christian Eriksson's questions

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

使用 sudo 时,为什么在某些系统上如果没有 -E 则无法正确读取内联环境变量?

  • 5

我有一个 bash 脚本,它使用 cli 登录到我的 bitwarden 实例bw,方式如下:

测试.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

具有./credentials.json以下权限:

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

以普通用户身份运行此脚本可以正常工作,但有时我需要以 root 身份运行它,并且我注意到在某些系统上,bw当仅使用 运行时,该命令无法正确读取内联环境变量sudo,它仅适用于sudo -E,因此:

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

当它工作时我得到输出:

You are logged in!

如果没有的话我得到:

client_id or client_secret is incorrect. Try again.

我说“正确”是因为它似乎正在以某种方式读取变量,因为如果我删除其中一个环境变量,如下所示:

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

相反,系统会提示我输入客户端密钥(或者,如果我删除,则提示输入客户端 ID BW_CLIENTID)。因此,出于某种原因,如果没有该选项,环境变量中的值就无法正确读取-E,但它们似乎存在。

我尝试按以下方式使用通用脚本创建测试:

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

bar.sh:

#!/usr/bin/sh
set -e

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

但是,在我的任何系统上运行其中任何一个都可以,所有这些都提供了预期的输出(my_prop和的other_prop内容data.json),并且我没有看到任何一个变体的打印值之间有差异:

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

我已经在少数系统上进行了测试,这些系统是 Ubuntu 和 Arch 系统的混合,到目前为止,它-E在所有 Ubuntu 和一些 Arch 系统上都失败了,但-E在单个 Arch 系统上却可以运行。

我的主要问题是:是否有办法sudo配置为始终运行-E或类似的东西?以及使用该选项时格式是否有差异-E?(凭证可能有一些奇怪的字符,但我不明白为什么该-E选项会有所不同)

我看到该/etc/sudoers文件允许您执行类似以下操作:

Defaults env_keep += "HOME"

但是所有这些行在所有文件中都被注释掉了/etc/sudoers(因此在所有系统上,包括工作系统),并且没有其他文件/etc/sudoers.d/。 我也尝试添加BW_CLIENTID和BW_CLIENTSECRET类似的东西,但没有效果:

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

但也许还有其他地方或设置?

附注:我认为这可能只是 CLI 中的一些怪癖bw,导致它无法在某些系统上正确获取环境变量,-E但我想知道是否有我可以开始在自己的系统上查看的设置。不过,我也对有关此的任何提示感兴趣。

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

mdadm 数组下的 md 分区是什么?

  • 2

我正在使用 设置两个 RAID 1 阵列mdadm,它似乎工作正常,但是当我进行检查时,lsblk我看到以下内容:

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 

这些分区(?)在我md127p1的md127p2阵列中是什么?我应该删除它们吗?如果是,如何删除?

它似乎没有干扰阵列,它似乎正在按预期重新同步。但是我担心,例如,如果有人要挂载说md127p1并向它写一些东西,它会破坏其中的数据data-crypt-1(跨越整个驱动器)。

编辑:

重新启动和重新组装后问题(如果是问题)仍然存在。

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

dmesgmd126确实报告和之间的行为略有不同md127。不知道如何检查“背景重建”。

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

并udevadm报告如下:

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

hexdump显示:

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  |................|
# *

我还注意到我在某些机器上看不到“幽灵”分区,尤其是我的 DietPi 机器上没有显示它们。它们确实显示在我的 Ubuntu 机器上。此外,我注意到两个阵列(md126 和 md127)都是在其中一台 DietPi 机器上创建的。

mdadm software-raid
  • 1 个回答
  • 953 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

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

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve