小编Gre*_*ill的帖子

如何(安全地)将 /tmp 移动到不同的卷?

今天,/tmp目录在工作中的机器上填满了。问题是,它在不是很大的根分区上。为了解决这个问题,一位同事在/new/tmp别处创建了一个目录,将所有内容复制到新目录,删除原始目录/tmp并创建符号链接/tmp -> /new/tmp

当他复制文件时(真的,这是别人,不是我!)他没有使用,-a所以下每个文件的所有者/new/tmp都是root. 此外,他没有设置/new/tmp目录的权限,所以它是默认的 0755。这造成了无穷无尽的麻烦,甚至调整模式和所有权位也未能将机器恢复到可接受的工作状态。我最终不得不核对所有内容/tmp并重新启动。

/tmp目录包含各种套接字和管道等等,因为一群人通过 VNC 运行 Gnome,而我使用screen它有自己的管道。

是否有安全的方法将/tmp目录移动到正在运行的系统上的不同卷?我不确定我实际上会做些什么来保持一切正常工作。我特别好奇管道和套接字会发生什么。

partition permissions

20
推荐指数
1
解决办法
5万
查看次数

使用 ^ 作为 shell 元字符

我今天写了一个小脚本,其中包含

grep -q ^local0 /etc/syslog.conf
Run Code Online (Sandbox Code Playgroud)

在审查期间,一位同事建议^local0引用,因为^在 Bourne shell 中表示“管道”。对这个说法感到惊讶,我试图追踪任何提到这一点的参考资料。我在互联网上发现的任何内容都没有表明这是一个问题。

但是,事实证明,bshAIX 7 上的(声称是 Bourne shell)的实现实际上具有以下行为:

> bsh
$ ls ^ wc
      23      23     183
$ ls | wc
      23      23     183
Run Code Online (Sandbox Code Playgroud)

我尝试过的其他“Bourne shell”实现^都没有这种行为(也就是说,根本不被认为是 shell 元字符)。我sh在 CentOS(真正的 bash)和shFreeBSD(不是 bash)上尝试过。我没有很多其他系统可以尝试。

这种行为是预期的吗?哪些 shell 被认为^是管道元字符?

shell pipe history portability bourne-shell

19
推荐指数
1
解决办法
1416
查看次数

插入符号方括号方括号A ^[[A - 是什么意思?

抱歉,如果这已经被问到,但我不知道如何自己找到这个 - 当我在任何搜索引擎中搜索 "^[[A" 时,它完全忽略了 "^[[" 部分。

无论如何,我的问题是:有时在终端(在 Mac 上)按下箭头键时,会出现字符“^[[A”、“^[[B”、“^[[C”或“^[[D” . 我似乎记得几年前在使用(很可能)DOS 时也遇到过这种情况,而且我认为它发生的频率也更高。

为什么会发生这种情况,它们是什么意思?

terminal escape-characters

17
推荐指数
1
解决办法
6688
查看次数

如何在 FreeBSD 上使用 OTP 设置两因素身份验证?

我有一个 FreeBSD 托管服务器,我希望能够从任何地方访问它。通常我使用 SSH 公钥登录,或者如果我没有可用的 SSH 私钥,那么我可能会通过 SSH 使用常规密码。但是,当从不受信任的机器登录时,键盘记录器总是有在我输入密码时捕获密码的风险。

FreeBSD 已经支持 OPIE,这是一种一次性密码方案。这很好用,但一次性密码是唯一需要的身份验证。如果我打印出一个一次性密码列表供以后使用,那么如果我丢失了该列表,那么这就是某人所需要的。

我想设置身份验证,以便我需要一次性密码我知道的一些信息(密码,除了不是我常用的登录密码)。我有一种感觉,答案与PAM(和/etc/pam.d/sshd)有关,但我不确定细节。

在需要两种方法的情况下,如何设置身份验证?

freebsd security password ssh pam

8
推荐指数
1
解决办法
2340
查看次数

sshd 可以将客户端隧道端点限制为本地主机吗?

通常 ssh 客户端可以使用-L命令行选项请求 TCP 转发。服务器可以使用AllowTcpForwarding no. 如果启用,客户端可以使用host in请求将端点连接到 sshd 服务器以外的远程机器-L port:host:hostport。有没有办法配置 sshd 以将目标转发地址限制为localhost(即 sshd 服务器机器本身)?

ssh ssh-tunneling port-forwarding sshd

7
推荐指数
1
解决办法
4902
查看次数

从文件中删除行直到模式,除非模式不存在

我正在尝试使用类似sedawk执行以下操作编写过滤器:

  • 如果输入中不存在给定模式,则将整个输入复制到输出
  • 如果输入中存在模式,则仅将第一次出现后的行复制到输出中

这恰好适用于“git clean”过滤器,但这可能并不重要。重要的方面是这需要作为过滤器来实现,因为输入是在 stdin 上提供的。

我知道如何使用sed删除模式的行,例如。1,/pattern/d但是如果/pattern/在任何地方都不匹配,则会删除整个输入。

我可以想象编写一个完整的 shell 脚本来创建一个临时文件,执行某个操作grep -q或其他操作,然后决定如何处理输入。如果可能的话,我更愿意在不乱创建临时文件的情况下执行此操作。这需要高效,因为 git 可能会频繁调用它。

sed awk text-processing filter

6
推荐指数
2
解决办法
2690
查看次数