小编lon*_*nix的帖子

一旦我为 SSH 设置了公钥认证,我应该删除用户的密码吗?

最好对 SSH 使用公钥。所以,我sshd_configPasswordAuthentication no

一些用户从不登录,例如使用 shell 的 sftp 用户/usr/sbin/nologin。或者系统账号。

所以我可以创建这样一个没有密码的用户adduser gary --shell /usr/sbin/nologin --disabled-password

这是一个好/坏主意吗?有没有我没有考虑过的后果?

security password ssh sftp ubuntu

21
推荐指数
2
解决办法
5100
查看次数

空闲时间后停用 systemd 服务

我希望服务按需启动,而不是在启动时启动。为此,我可以使用 systemd 套接字激活(使用服务和套接字文件)。

但这是一个资源有限的服务器,所以在一段时间(例如 1 小时)不活动后,我想停止该服务(直到它再次被触发)。我怎样才能做到这一点?

我查看了一些文档,但我不知道这是否受支持。


更新:
假设这是不受支持的,用例可能仍然很常见。实现这一目标的好方法/解决方法是什么?

linux systemd socket-activation

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

ls 带通配符

这从终端工作:

ls /dev/sda*
Run Code Online (Sandbox Code Playgroud)

我想在 bash 脚本中使用变量。我试过:

device="a"
ls "/dev/sd"$device"*"
Run Code Online (Sandbox Code Playgroud)

但我收到错误:ls: cannot access '/dev/sda*': No such file or directory

ls quoting wildcards variable

7
推荐指数
2
解决办法
3771
查看次数

systemd“套接字激活”与 xinetd

我使用xinetd并且它适用于我的目的。但是我最近发现 systemd 内置了称为“套接字激活”的东西。

这两个看起来非常相似,但 systemd 是“官方的”,似乎是更好的选择。

但是在使用之前,它们真的一样吗?我应该注意哪些差异?

例如,我只想在第一次请求时启动一些 dockerised 服务——我的第一个想法是使用 xinetd。但是套接字激活是否更好/更快/更稳定/无论如何?

linux ubuntu systemd xinetd socket-activation

7
推荐指数
2
解决办法
2406
查看次数

管道“假”不会给出非零结果代码

我明白这些:

true;   echo "$?"      # 0
false;  echo "$?"      # 1
true  | echo "$?"      # 0
Run Code Online (Sandbox Code Playgroud)

但不是这个:

false | echo "$?"      # 0
Run Code Online (Sandbox Code Playgroud)

...为什么不打印1

我怎么能在管道中强制失败,然后再得到1呢?

bash pipe exit-status

7
推荐指数
2
解决办法
831
查看次数

管道 globs 到 ls

文件内容filelist

/some/path/*.txt
/other/path/*.dat
/third/path/example.doc
Run Code Online (Sandbox Code Playgroud)

我想列出这些文件,所以我这样做:

cat filelist | xargs ls
Run Code Online (Sandbox Code Playgroud)

但我没有扩大这些球体,而是得到:

ls: cannot access '/some/path/*.txt': No such file or directory  
ls: cannot access '/other/path/*.dat': No such file or directory  
/third/path/example.doc
Run Code Online (Sandbox Code Playgroud)

linux ls bash pipe cat

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

在 ssh 登录时运行 tmux

我希望 tmux 在 ssh 登录时启动。

典型的建议是将其添加到~/.bashrc

if [ -z "$TMUX" ] && [ -n "$SSH_TTY" ] && [[ $- =~ i ]]; then
  tmux attach-session -t mysession 2>/dev/null || tmux new-session -s mysession
fi
Run Code Online (Sandbox Code Playgroud)

但是当我登录时,我从 tmux 收到此错误:

服务器丢失

......然后我像往常一样陷入困境。


更新

当我添加睡眠时:

if [ -z "$TMUX" ] && [ -n "$SSH_TTY" ] && [[ $- =~ i ]]; then
  tmux attach-session -t mysession 2>/dev/null || $(sleep 1 && tmux new-session -s mysession)
fi
Run Code Online (Sandbox Code Playgroud)

...然后就可以了。奇怪的!是什么原因?

bash login ssh ubuntu tmux

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

将文本从远程 tmux 复制到本地 x 剪贴板

我通过 ssh 进入我的 VPS 并运行 tmux。我可以从远程复制/粘贴到本地,从本地复制/粘贴到远程 - 使用鼠标和 shift。

但我不知道如何复制大量文本

如果我在本地工作,我可以这样做:cat somefile.txt | xsel -b或者cat somefile | xclip -selection clipboard复制到剪贴板。(我当然不能这样做,因为远程服务器不运行 x,即便如此,剪贴板也不匹配 tmux 中使用的那个。)

那么,如何在 tmux 会话中复制文本,并通过网络将其复制到本地系统的剪贴板?

更新:
实际上,即使没有 tmux,这也适用 - 如何在远程和本地 shell 之间复制粘贴大缓冲区。

bash ssh ubuntu tmux clipboard

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

由 bash 脚本打印的缩进文本段落

我有一个回显文本段落的 bash 脚本。我希望它们缩进。

例子:

echo "Something"
echo -e "\tfoo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo"
Run Code Online (Sandbox Code Playgroud)

将打印如下内容:

Something
      foo foo foo foo foo foo foo foo foo foo …
Run Code Online (Sandbox Code Playgroud)

bash text-formatting

4
推荐指数
2
解决办法
4447
查看次数

在 Ubuntu 服务器上删除 snap 安全吗?

我不使用 snap 并且从不安装 snap 包。

在新的 Ubuntu Server 18.04 上,snap list显示:

尚未安装快照。

移除它安全吗?

我不确定后台有什么奇怪的依赖关系 - 所以我不想现在或将来不小心破坏系统。(我想确定一下,因为在 ubuntu 桌面上,即使我不使用 snap,操作系统本身也会使用。)

ubuntu uninstall snap

4
推荐指数
1
解决办法
3251
查看次数