我遇到了一个问题chroot...
我在 Arch Linux x86_64 上运行。
我有一个 64 位 chroot 和一个 32 位 chroot。它们是相同的,只是一个是 32 位,一个是 64 位。
我可以使用chroot /path/to/chroot. 没问题。
如果我想以特定用户身份执行此操作,则命令是:
chroot --userspec=user:group /path/to/chroot
Run Code Online (Sandbox Code Playgroud)
这也适用于 64 位 chroot。然而,它在 32 位 chroot 上失败了。它失败并显示状态 125 和消息chroot: invalid user
此外,chroot --userspec=uid:gid /path/to/chroot在 32 位和 64 位 chroot 中都可以正常工作(uid并且gid是所需用户和组的数字 ID)。
我不知道我是否做错了什么。有没有人有 32 位 chroot 并且可以看看上面的内容是否可以复制?
所有命令都以 root 身份发出。用于 userspec 参数的用户和组需要在 chroot 中定义。
或者,如果我遗漏了什么,我会很感激知道我哪里出错了。
更新:我正在使用解决此问题的方法。假设$user有user:group我想要的(例如john:users),我这样做:
u=$(echo $user …Run Code Online (Sandbox Code Playgroud) 网上有很多文章描述了从 DVD 视频光盘制作 ISO 映像的命令行,如下所示:
dd if=/dev/sr0 of=mydvd.iso conv=noerror,sync,notrunc
Run Code Online (Sandbox Code Playgroud)
我想了解为什么notrunc有必要。据我所知,从man命令页面来看,notrunc可以防止输出文件被截断。这基本上意味着,如果文件存在,dd只会覆盖已经存在的内容;如果那里有dd未触及的内容(可能通过寻找文件中的另一个点),那么原始内容将保持不变。
在制作 ISO 时,您确定要从一个新的、干净的、空的文件开始吗?
我唯一能想到的是在一个非常糟糕的光盘的情况下,使用notrunc使您能够在同一个输出文件上多次运行相同的 dd 命令以希望每次填充不同的位。如果输出文件不存在,则notrunc无效。
是这样,还是每个人都指定了其他一些原因notrunc?
(我不是在问如何绕过 CSS、ARccOS 或其他任何东西;只是关于dd用法)
我有一个shell 变量,其中包含由空格分隔的多个单词bash组成的字符串。字符串可以包含转义符,例如单词中转义的空格。包含空格的单词也可以被引用。
$FOO不加引号(而不是)使用的 shell 变量"$FOO"会变成多个单词,但原始字符串中的引号和转义不起作用。
如何将字符串拆分为单词,同时考虑引用字符和转义字符?
服务器提供ssh使用文件ForceCommand中的选项来sshd_config强制执行脚本的受限访问,而不管向客户端提供的命令行如何ssh。
该脚本使用变量SSH_ORIGINAL_COMMAND(它是一个字符串,由 设定ssh,包含提供给客户端的命令行ssh)在继续之前设置其参数列表。所以,用户做
$ ssh some_server foo 'bar car' baz
Run Code Online (Sandbox Code Playgroud)
将看到脚本执行,并且当脚本执行时它将设置为四个SSH_ORIGINAL_COMMAND参数foo bar car baz
set -- ${SSH_ORIGINAL_COMMAND}
Run Code Online (Sandbox Code Playgroud)
不是想要的结果。于是用户再次尝试:
$ ssh some_server foo bar\ car baz
Run Code Online (Sandbox Code Playgroud)
相同的结果 - 第二个参数中的反斜杠需要为客户端 shell 进行转义,以便ssh看到它。这些怎么样:
$ ssh some_server foo 'bar\ car' baz
$ ssh some_server foo bar\\ car baz
Run Code Online (Sandbox Code Playgroud)
两者都可以工作,就像可以简化客户端引用的printf "%q"引用包装器一样。 …
Arch Linux ZFS wiki 页面解释了与grub 兼容的池创建,这个关于引导 Fedora 的页面也是如此,但我无法创建一个 Grub 可读的池。Arch Linux wiki 页面关于在 ZFS 上安装 Arch Linux突出显示了某些错误,但并没有真正解释如何克服它们。
链接页面解释了 Grub 支持zpool 功能的子集,并且无法读取使用它不支持的功能的池。他们继续解释如何配置合适的池,但我一直无法使其工作。支持的功能子集似乎没有记录在任何地方。
我正在使用虚拟机来测试 Grub 2.02 和 Arch Linux 内核 4.16.13-1-ARCH,这是最新的并且与当前的zfs-linux软件包版本 ( zfs-linux-0.7.9.4.16.13.1-1)兼容。我(还)没有尝试制作可引导系统,只是为了证明 Grub 可以读取 zpool。这是我尝试过的:
首先,就像arch wiki 页面建议的那样,通过禁用不需要的功能:
# zpool create \
-o feature@multi_vdev_crash_dump=disabled \
-o feature@large_dnode=disabled \
-o feature@sha512=disabled \
-o feature@skein=disabled \
-o feature@edonr=disabled \
testpool mirror \
/dev/disk/by-id/ata-VBOX_HARDDISK_VB{5f2d4170-647f16b7,f38966d8-57bff7df}
Run Code Online (Sandbox Code Playgroud)
这导致了这些功能:
testpool feature@async_destroy enabled local …Run Code Online (Sandbox Code Playgroud) 我需要确定 ext4 文件系统使用的最后一个扇区,以便我可以将它移动到另一个设备。
文件系统已经缩小(使用resize2fs)并且小于包含它的分区,所以我不是在问如何找到分区中的最后一个扇区。
我已经完成tune2fs -l并确定了
Block count: 48934
First block: 0
Block size: 4096
Run Code Online (Sandbox Code Playgroud)
由此我假设文件系统使用 48934 * 4096 / 512 = 391472 个扇区,并且我可以dd从分区的第一个扇区开始移动那么多扇区(如 所报告的gdisk)。
我不确定该块计数是否包括任何 ext4 开销,或者是否需要考虑额外的大小。我读了这个问题,这意味着还有额外的空间需要考虑。
我今天偶然发现了这个问题,要求提供一个Bob 屏幕保护程序。我可以回忆起那件事,它让我想起了过去的日子。我还记得一个屏幕保护程序,无论是生命还是蛇——我不记得是哪个或两者都呈现了 Sun 微系统的标志。
我想知道这是否还在某处可用?
如果完全了解打开dm-crypt卷所需的参数,是否可以解密从这样的卷中取出的单个扇区?
假设原始卷不可用但扇区号已知?
例如,以下卷安装了cryptsetup:
$ dmsetup --showkey table myvolume
0 104857600 crypt aes-xts-plain64 95264...aacae 0 254:9 0
Run Code Online (Sandbox Code Playgroud)
假设我曾经dd从原始卷中提取扇区 125:
$ dd if=/dev/sda1 of=raw.sector bs=512 skip=125 count=1
Run Code Online (Sandbox Code Playgroud)
而且我从上面的输出中知道密码是aes-xts-plain64,256 位密钥是95264...aacae(此处缩写了密钥示例)。
我可以解密那个独立的(比如用openssl)?
大概是这样的……
$ openssl enc -d -in raw.sector -aes-128-xts -K 95264...aacae -iv 7D -out plain.sector
Run Code Online (Sandbox Code Playgroud)
密码是 128 位,因为给定的 256 位密钥被XTS 模式一分为二。初始化向量是0x7D因为那是扇区号 125。但是,我未能超越第一步,因为 OpenSSL 似乎不支持 XTS ( openssl enc -ciphers):
https://github.com/openssl/openssl/blob/master/apps/enc.c#L267:
if (cipher && …Run Code Online (Sandbox Code Playgroud) 我有一台服务器,除其他外,它使用mediatomb. 客户端使用简单服务发现协议(SSDP) 来定位网络上的服务器。
我发现 SSDP 发现M-SEARCH查询没有得到响应,并最终将问题归结为服务器正在使用启用了多播侦听的桥接接口这一事实(因为桥接器默认启用了此功能)。
我解决了我的问题
echo 0 > /sys/devices/virtual/net/br0/bridge/multicast_snooping
Run Code Online (Sandbox Code Playgroud)
但是,尽管这在我的情况下有效,但我不明白它在做什么以及是否有任何我不知道的影响。因此问题....
什么是多播侦听,为什么它会破坏 SSDP,为什么需要它以及为什么在网桥上默认启用它,以及禁用它可能会导致什么问题,因为它可能在默认情况下有充分的理由启用?
给定一个 sed 表达式(以及 ArchLinux 上的 GNU sed 4.2.2)
/match/i\tline1\n\tline2
Run Code Online (Sandbox Code Playgroud)
这应该在匹配项上方插入两个制表符缩进的行,我发现第一个字符(在示例中,\t)的转义被忽略,但所有其他转义字符都被正确处理。
像这样测试:
echo match | sed -e '/match/i\tline1\n\tline2'
Run Code Online (Sandbox Code Playgroud)
结果是
tline1
line2
match
Run Code Online (Sandbox Code Playgroud)
无论初始转义字符是什么(例如制表符或换行符),结果都是相同的。构造表达式以便正确处理第一个字符的正确方法是什么?
使用 GNUfind命令(GNU findutils 4.4.2),可以使用正则表达式来搜索文件。例如:
$ find pool -regextype posix-extended -regex ".*/mypackage-([a-zA-Z0-9.]+-[0-9]{1,2})-x86_64.pkg.tar.xz+"
Run Code Online (Sandbox Code Playgroud)
是否可以提取该表达式定义的捕获组并在-printf参数中使用它?
因此,给定一个名为 的找到的文件pool/mypackage-1.4.9-1-x86_64.pkg.tar.xz,我想将该1.4.9-1部分包含在printf表达式中。
这可能吗?