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-120614

Stilez's questions

Martin Hope
Stilez
Asked: 2019-11-09 03:01:06 +0800 CST

在 FreeBSD 中,什么标志或文件将 'root' 和 'toor' 指定为使用 su 权限立即登录,而无需在登录后使用“su”?

  • 0

显然,广泛建议不要以超级用户帐户直接登录,但我很好奇。

FreeBSD 使用什么标志或设置来识别那些在登录时自动获得 su 权限的帐户,而无需用户执行任何登录脚本或额外的权限提升命令?

freebsd
  • 1 个回答
  • 178 Views
Martin Hope
Stilez
Asked: 2019-11-06 02:49:32 +0800 CST

FreeBSD 是否包含基本正则表达式的多种变体?

  • 5

grep并且sed默认情况下都被描述为使用“基本正则表达式”(“BRE”)。BRE在这里有很好的描述。

但是考虑这个输出:

# echo '    aaaaa   ' | grep '\(aaaaa\|bbbbb\)'
    aaaaa
# echo '    aaaaa   ' | sed '/\(aaaaa\|bbbbb\)/ s/ /_/g'
    aaaaa

在第一个命令中,\( ... \| ... \)语法显然是,(X OR Y)因为输出通过了grep。

在第二个命令中,\( ... \| ... \)语法显然没有充当,(X OR Y)因为空格没有更改为下划线。

(相比之下,两个命令都被识别\+为“一个或多个重复”)

发生了什么事?为什么在 FreeBSD 中似乎有两种 BRE,其中一种可以识别另一种不能识别的语法?

更深层次的问题是,许多项目着眼于 BRE 以提供对其他类 unix 系统的可移植性。但这表明即使 BRE 在各个平台之间也不可能相同,即使它们在各个平台中都不相同。啊?

regular-expression
  • 2 个回答
  • 513 Views
Martin Hope
Stilez
Asked: 2019-10-21 06:21:58 +0800 CST

第一次在 FreeBSD 监狱中将 TinyDNS 作为服务安装 - 怎么做?

  • 1

我目前正在使用 FreeBSD 11.2(可能会在一段时间内迁移到 12)。我需要一个小型的仅权威 DNS 服务器(无需查找或缓存,在 10 个域和 10 个查询/小时以下,几乎没有记录更改)。

我可能会选择, 其中的TinyDNS一部分djbdns,它以安全着称,而且看起来很小,可以满足我的需要。

安全的部分原因是它会暴露在互联网上,尽管在 IP/端口过滤器和非常低的速率、速率限制器(pf用于此)之后。但出于这个原因,我确实想特别注意守护程序的设置方式,以避免明显的漏洞。我的意思是诸如所需的用户和组、启动/停止脚本、jail/chrooting 以及最小化/禁用/拒绝攻击者可能转向的主要非必要访问/功能等方面。

(我应该提一下,我可以在测试系统上“通常”安装 tinydns,并创建所需的.conf文件,因此纯粹是如何以安全的方式运行它,这是缺失的)

我在设置软件以运行 chrooted/jailed 或查看 chrooted/jailed 包以获取适当的安全实践方面没有经验,这也是我第一次尝试做这样的事情,尽管我选择了特定的DNS 服务器包专门为其明显的设置简单性。

忽略该.conf文件,“配方”会是什么样子,将 TinyDNS 设置为作为服务正确运行,并在理想情况下最小化对“其他对守护进程不是必需但对攻击者有帮助的东西”的访问?

software-installation
  • 1 个回答
  • 696 Views
Martin Hope
Stilez
Asked: 2019-02-12 06:37:58 +0800 CST

寻找 FreeBSD 和 Linux 的 dns-sd 包?

  • 1

IETF RFC 6763 第 7.1 节(第21 页)引用了一个名为“dns-sd”的 CLI 程序,可用于探测和报告零配置服务、记录和环境。许多其他网页也提到在 CLI 中使用它,但没有一个给出源代码库或原始 Web URL。我真的不想下载包含它的大包,因为我只想探测 dns 服务器,或者扫描可达网络并在 dns 服务器可能时获取 ​​dns-sd 可访问服务/目录/?活动的详细转储或者可能没有运行,仅此而已,我找不到它的独立包,甚至找不到它的最终上游源。我什至不能 100% 确定它的功能,因为我也找不到它的文档。但这听起来是正确的。

任何想法如何追踪这样的事情?并且,如果它们存在,用于 FBSD 11.x 和各种 Linux 风格的端口(如果有完整的 Makefile+源,则可以编译)。这一次,谷歌不是我的朋友。也没有freshports,也没有我知道的任何其他搜索。

linux freebsd
  • 1 个回答
  • 1290 Views
Martin Hope
Stilez
Asked: 2018-08-14 03:33:49 +0800 CST

列出具有固定前缀的 shell 变量

  • 3

我已经查过了,找不到答案,如果以前有人问过,我提前道歉。

我在 FreeBSD () 上使用 shell ,我/bin/sh想将所有以. 我能得到的最接近的是,但它只转储多行变量的第一行(有些是多行的,我需要它们全部),并且在病理边缘情况下可能容易出错,例如包含“ myvar ”的字符串碰巧在那部分之前的换行符。_myvar_set | grep '^_myvar_'

如果我可以只列出变量名称(而不是值),那么我可以在 a 中过滤do...read...while并一次只为具有匹配名称的 var 获取一个值,但我找不到这样做的方法。我也无法过滤完整的输出,因为没有确定性的方法来判断输出行是否包含延续或新变量,包含_myvar_, =或newline (\n)字符的字符串不存在边缘情况问题,或者可能是尾随空格。我不想修改环境,因为代码包含在其他代码中,环境必须是稳定的。

如果有帮助,输出/列表包含任何匹配的环境变量都不是问题(如果存在的话——它们极不可能)

有没有办法做到这一点?

shell variable
  • 2 个回答
  • 1894 Views
Martin Hope
Stilez
Asked: 2018-08-07 23:17:07 +0800 CST

在格式字符串位于变量中且没有固定数量的字段占位符的情况下使用 shell 'printf'?

  • 0

我正在编写一个 shell 函数,它通过 cURL 进行外部 API 调用(外部 API 语法不受我的控制)。我已经像这样接近它(简化):

#!/bin/sh

template_get_entry='get_entry:%s'
template_set_entry='set_entry:%s=%s'

curlheaders='-H stuff'
curluri="https://www.domain.com:1234/api.php"

# make an API call to get entry "foo"
call_api "$template_get_entry" "foo"

# make an API call to set entry "foo" to "bar"
call_api "$template_set_entry" "foo" "bar"

call_api() {

  apicmd="$( printf "$1" "$2" "$3" )"
  result="$( eval "/usr/local/bin/curl" "$curlheaders" "-d" "$apicmd" "$curluri" )"
  retcode="$?"

  .....stuff.....

}

这段代码有两个问题。

首先,args 的数量是可变的。如果调用行定义apicmd时使用的参数少于最大数量,则 printf 将任何多余的命令解释为打印格式字符串的额外实例,以附加。我看不到解决此问题的正确方法。

其次,因为我使用了 eval,这会产生 eval 的连锁问题,因为 retcode 肯定会eval从而不是从获取返回码curl,而且我不知道防止/修复它的正确方法。

我应该怎么做这样的事情,它需要可变数量的参数?

shell-script function
  • 2 个回答
  • 978 Views
Martin Hope
Stilez
Asked: 2018-08-02 05:10:48 +0800 CST

在shell IF语句中将关系运算符与grep -q结合起来?

  • 0

我找不到这个答案 - 如果它是重复的,请道歉。

我/bin/sh在 BSD 上使用(不是bash!),我正在尝试找出以下 IF 语句的语法。

我有两个组成条款。写成单独的语句,它看起来像这样:

if [ "$a" == "y" -o "$a" == "Y" ]; then
    if printf '%s' "$b" | grep -qE 'SOME_REGEX'; then
        # both conditions met: do stuff
    fi
fi

所以我可以使用嵌套if作为一种解决方法。

但是我需要什么语法才能将它们整齐地组合成一个“if”语句?

注意:如果这个 shell 允许直接的正则表达式匹配比较([ "$a" =~ REGEX" ]或类似的)而不是 requires grep -q,这将是有用的,但我仍然想知道如何正确组合这些子句,因为有一天我肯定会有我正在匹配文件内容而第二个语句类似的情况ls -l "$b" | grep -qE 'SOME_REGEX',因此内联正则表达式比较不起作用... :)

shell-script shell
  • 3 个回答
  • 545 Views
Martin Hope
Stilez
Asked: 2018-05-11 07:59:58 +0800 CST

getfacl 说我的非特权帐户应该能够读取目录的内容,但它不能

  • 2

我可能错过了一些明显的东西......但我看不到它。

我在 FreeBSD 上有一个由 NFSv4 ACL 控制的普通目录。ACL 说我可以列出它的内容;但我不能。

这是getfacl问题目录及其父级+祖父级的输出:

 # getfacl /mnt/data_dir/working_dir/
# owner: root
# group: wheel
group:data_managers:-w-pDd--------:-------:deny
everyone@:r-------------:-------:allow
group:data_managers:rwxpDda-R-c---:fd-----:allow
owner@:--------------:fd-----:allow
group@:--------------:fd-----:allow
everyone@:--x-----------:-d-----:allow

  # file: /mnt/data_dir
# owner: root
# group: wheel
owner@:rwxpDdaARWcCos:fd-----:allow
group@:rwxpDdaARWcCos:fd-----:allow
everyone@:r-x---a-R-c---:fd-----:allow

  # file: /mnt
# owner: root
# group: wheel
user::rwx
group::r-x
other::r-x

我su作为新创建的帐户有 ACL 问题。此帐户不是任何相关目录的所有者,也不是wheelor的成员data_managers,因此它的唯一权利源自“每个人(世界)”权限/ACL。

 $ su -f restricted_user
 % id
uid=1100(restricted_user) gid=65533(nogroup) groups=65533(nogroup),4003(restricted_users)
 % pwd
/mnt/data_dir/working_dir
 % ls
ls: .: Permission denied

我不明白。该目录的世界权限是everyone@:r .....(向下继承到“x”但不是“r”的子目录)。r应授予全球范围内阅读working_dir. 它不是 的成员,data_managers如果是,则拒绝 ACE 不会拒绝r或x. 我可以穿越到它。但我无法阅读其内容。

我错过了什么?

shell permissions
  • 1 个回答
  • 58 Views
Martin Hope
Stilez
Asked: 2018-02-27 00:03:34 +0800 CST

'getcwd 函数正常工作' 在 FreeBSD 手册页中 mount_nullfs 的声明的含义?

  • 5

在 FreeBSD 中,man mount_nullfs声明:

文件系统的虚拟副本和符号链接之间的主要区别在于功能在虚拟副本中getcwd(3)正常工作,并且其他文件系统可以安装在虚拟副本上而不影响原始文件。为虚拟副本返回了一个不同的设备编号stat(2),但在其他方面它与原始设备没有区别。

本段的全部含义/含义是什么?

mount freebsd
  • 2 个回答
  • 482 Views
Martin Hope
Stilez
Asked: 2018-01-26 02:56:35 +0800 CST

将 ZFS 池作为一个整体快速安全地脱机?

  • 4

正如问题所说。

假设我想为我的 FreeNAS 池设置一个脚本化的“紧急按钮”——我可以单击它从 GUI 运行或在控制台/SSH 中执行,这会很快关闭可能正在读取或写入的所有内容,卸载文件系统,并且 - 理想情况下 - 静默它正在使用的磁盘或分区。

我不关心其他软件或远程连接引起的错误,或者过早中止任何长文件传输,我只希望它以最快的方式使池脱机,这与保持其一致性并可能给它一些任何挂起的写入完成和池处于一致状态以用于数据目的的秒数。

ZFS 命令建议的选项看起来并不乐观:zpool offline仅适用于单个设备,因此如果在一次删除一个磁盘时发生写入,则可能会出现竞争条件;如果正在使用,则需要 -f 选项,并带有可能丢失数据zpool export的警告。-f可以使用池或其设备(数千个或数十万个?)检查所有打开file descriptors的内容并手动强制关闭每个,但这可能会遇到竞争条件,因为它不会阻止同时创建新的 fd。我也不应该假设所有 ZFS 活动都由要发送退出信号的远程文件服务守护进程列表调解,因为某些文件活动可能是本地的(cron/CLI/分离会话)。

因此,看看如何最好地安全快速地使整个池脱机,这看起来umount可能是我最好的选择 - 它在文件系统级别上工作,并且可以作为一个整体单元快速脱机整个文件系统,之后zpool export看起来会然后能够在没有-f选项的情况下以安全的方式实际完成和静默任何内部活动,从而使数据本身保持在有保证的一致状态。如果正在进行原始磁盘活动(重新同步或清理),那么我猜想当池稍后重新联机时会恢复或重新启动。

但umount似乎并没有完全做到这一点,因为也可能有 iSCSIzvol目标在使用中。由于服务器不知道其结构,因此其中的数据本质上无法保持一致,因此远程启动器在重新连接时必须尽可能地进行数据修复。我对此很好,但我不确定是否需要某种强制终止或离线目标的命令或最佳实践。(注意:强制终止连接与关闭单个 fd 的问题相同。)

我知道,如果在写入发生时池突然退出 RW 状态,肯定会出现某种数据丢失或问题。但只要它不失去一致性(在 ZFS 池和文件系统级别),那就没问题 - 任何正在更新的正在使用的文件/iSCSI 目标都必须在 ZFS 一致的文件/块上冒险但是由于在写入数据的中途离线而导致数据无效状态。这是不可避免的,也不是问题的问题。

那么我实际上需要执行哪些步骤,以尽可能快地使正在使用的池脱机,并与保证池的安全性和一致性保持一致 - 并且手动umount使用正在使用的 ZFS 文件系统(作为解决方案的一部分)是安全的或承担任何数据损坏的风险?

更新:在这里提及以防其他人发现这很有用。接受的答案表明export -fzvols(iSCSI 等)可能存在问题。基于这个提示,我发现 FreeNAS 使用的 iSCSI 处理程序可以强制注销/终止会话,并且还有其他可以预先发出的有用子命令 - 请参阅man ctladm. 无论您的 zvol 用于什么用途,都可能有一些命令可以结束它们的会话。)

freebsd zfs
  • 1 个回答
  • 2425 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