小编Hau*_*ing的帖子

编写一个使用 SSH 而不是 telnet 的“telnet 服务器”类型的程序

因此,人们使用 telnet 编写服务器程序,用户只需在其中执行telnet server.com并将他们连接到服务器程序,然后为他们提供可以通过网络使用的文本程序(如 MUD)。这里有一些,例如:

http://www.telnet.org/htm/places.htm

我想编写一个这样的服务器程序,但我希望它具有防止 SSH 提供的窃听和 MITM 攻击的安全性。那么是否有可能编写一个程序,让用户可以在 linux 机器上执行此操作,ssh server.com或者可以ssh guest@server.com将其修补到与这些 telnet 服务器类似的文本程序中?

security ssh encryption telnet

5
推荐指数
2
解决办法
957
查看次数

SSH如何显示“无法建立主机..的真实性”信息?

我想跟踪 ssh 用来输出此警告消息的系统调用:

> ssh root@abcde
The authenticity of host .. can't be established.
Run Code Online (Sandbox Code Playgroud)

如果消息被发送到 stderr 或 stdout,肯定会有一个系统调用跟踪显示 sshwrite()到 stderr/stdout。

然而,没有。

那么SSH是如何在终端上显示警告信息的呢?SSH 是否直接操作终端设备来显示消息,而不与 stderr/stdout 交互?

command-line ssh terminal io-redirection

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

`if $cmd 究竟如何;然后 $cmd ; fi` 与 `$cmd && $cmd` 不同吗?

在回答另一个非常好的问题时,我做出了以下断言:

根据我对 POSIX 规范的阅读,从解析的角度来看,使用一个或另一个没有区别。

POSIX 指定&&||列表是复合命令,这意味着在执行组成的简单命令之前必须读入和解析整个列表。POSIX 还规定,如果一个命令跟在一个和另一个具有 0 退出状态的命令之后,则该命令不得扩展||OR。当您考虑到&&||保留字后面的命令很容易被另一个分组时,{ command || ( command ; list) ; }就会使&&||或 列出自己的复合命令的每个分支。

但是 POSIX 也以这种方式指定if...;then...;else...fi构造的每个分支都是它自己的复合命令

if compound-list
then
    compound-list
[elif compound-list
then
    compound-list] ...
[else
    compound-list]
fi
Run Code Online (Sandbox Code Playgroud)

执行if 复合列表;如果它的exit状态为零,则then 复合列表将被执行并且命令将完成......

正是这个规范表明 athen...else...保留字后面的字符串本身就是复合命令,而不仅仅是简单的命令,这意味着 shell 的解析器必须用命令和分隔符来表示它们才能正确操作。

所以基本上,then ' '出于同样的原因不起作用: …

shell shell-script posix

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

如何配置 AppArmor 以便 KVM 可以启动具有备份文件链的 guest 虚拟机

我正在 Ubuntu 16.04 上尝试使用 Qemu 外部快照进行 KVM(因为它们太快了!),并进行以下设置:

  • VM 的所有文件都位于单个目录中(以来宾名称命名)。
  • 有一个head.qcow2符号链接始终指向顶部“head”qcow2 图像。这样我就不必不断更新虚拟机配置。(维尔什编辑)。
  • 原始/底部图像称为base.qcow2

我使用以下脚本拍摄快照(创建一个新的 qcow2 图像并将其设为头部)。该脚本仅在来宾未运行时执行。

#!/bin/bash
UNIX_TIMESTAMP=$(date +%s)
CURRENT_BACKING_FILE=`readlink head.qcow2`
NEW_HEAD_FILE="`pwd`/`echo $UNIX_TIMESTAMP`.qcow2"

# Create the new "head" disk image where all future changes are made.
sudo qemu-img create \
  -f qcow2 \
  -b $CURRENT_BACKING_FILE \
  $NEW_HEAD_FILE

# Update the symlink
rm head.qcow2
ln -s $NEW_HEAD_FILE head.qcow2
Run Code Online (Sandbox Code Playgroud)

当 head.qcow2 指向 base.qcow2 时,这将正常工作,或者我运行脚本一次,因此只有一个支持文件。但是,如果存在一系列备份文件(例如,一个备份文件也有一个备份文件),那么我将收到以下错误:

error: Failed to start domain template-ubuntu-docker2
error: internal error: early end of file from …
Run Code Online (Sandbox Code Playgroud)

kvm apparmor qemu snapshot

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

smbclient 可以访问 Windows 共享内容,mount.cifs 不能

我在 Windows 文件服务器上获得了一个帐户。(对我来说)非常奇怪的情况是

  • 我可以连接smbclient,更改到(深层)子目录或显示其内容
  • 我可以挂载共享(没有错误消息;挂载点在 中/proc/mounts)但我无法更改为相同的路径或列出其内容。我明白了No such file or directory

我对较低级别的子目录既没有“显示内容”也没有“更改为”权限。这不应该是一个问题,它不是为了smbclient.

Windows 管理员已授予我的用户额外权限,以便我现在可以查看要点的内容。现在我也可以通过挂载到达更深层次的子目录。

我们尚未确定要在当前配置中工作所需的最少 Windows 权限集。但是,无论如何,问题必须出在 Linux 端。

  • 如何smbclientmount.cifs访问 Windows 共享的方式有什么区别?
  • 怎样才能mount.cifs表现得像smbclient

结论

我让 Windows 管理员重置了共享权限,以便我可以测试答案中的建议。不幸的是,问题消失了。和以前一样,我看不到共享的内容,但现在挂载可以访问深层子目录。很奇怪。

评论@intika:我打算为你的回答提供额外的赏金,但在我这样做的时候你出于某种原因删除了你的回答......

对评论和答案的回应

视窗服务器

服务器 2016,SMB 3.1.1

桑巴版

4.5.16;不是域的成员

使用的命令

  • /etc/fstab//fs-p01.dnsdomain/Data /data cifs credentials=/root/fs-p01.credentials 0 0
  • smbclient //fs-p01.dnsdomain/Data -U username -W windowsdomain

我只是意识到windowsdomainsmbclient命令中是不完整的。可能不相关,因为这有效。它只是name代替name.local. 但是,这是命令之间配置的差异。不幸的是,我无法检查是否mount可以使用错误的域,因为我无法将 Windows 服务器上的权限更改回其原始设置。我必须等待 Windows …

mount smb smbclient

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

/proc/$PID 中的文件(例如 ssh-agent、Chrome)不归用户所有,而是归 root 所有

我只是在回答另一个问题在这里:-),因此一看-看看在/proc/$PID/fdssh-agent,以找出它使用套接字。但我不能。我很惊讶地注意到大多数文件和目录都属于 root。ssh-agent作为我的用户运行(它的父进程也是如此)并且没有安装 SUID root。我无法找出 KDE 的确切启动位置。我好奇; 有人可以告诉我这里发生了什么吗?

或者这根本与用户无关,进程是否可以使用一些内核魔法/proc来向公众(甚至同一用户的其他进程)隐藏(大部分)他们的信息?

我刚刚检查了/proc/$PID/fd我所有的进程,并注意到这ssh-agent不是唯一具有这个奇怪属性的进程。其他的是一堆 Chrome 进程和kdesud(也没有 SUID 根二进制文件)。

linux security permissions proc linux-kernel

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

哪个 2 个字母的 POSIX 命令与所有其他命令不同?

我接受了实习面试,我得到了与这个相同的问题:http : //www.glassdoor.com/Interview/Which-2-letter-POSIX-command-is-different-from-all-the-others- QTN_498236.htm

答案是对的,是的cd(正如面试官告诉我的那样)。我对这一点很困惑。为什么cd不同?我跟面试官说不一样,因为可能不会被“shell”实现,但当时我不知道我在说什么。

shell cd-command command command-names

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

无法使用 xrandr 旋转屏幕

操作系统:Linux Mint

的输出inxi -xG

Graphics:  Card: NVIDIA GF108 [GeForce GT 440] bus-ID: 02:00.0 
          X.Org: 1.13.0 drivers: vesa (unloaded: fbdev) Resolution: 
800x600@0.0hz 
         GLX Renderer: Gallium 0.4 on llvmpipe (LLVM 3.3, 128 bits) GLX
Version: 2.1 Mesa 9.2.0 Direct Rendering: Yes
Run Code Online (Sandbox Code Playgroud)

打算翻转电脑的屏幕。以上有关当前显卡和操作系统的信息。

$ xrandr
xrandr: Failed to get size of gamma for output default
Screen 0: minimum 320 x 400, current 800 x 600, maximum 800 x 600
default connected 800x600+0+0 0mm x 0mm
  800x600         0.0* 
  640x480        60.0  
  640x400         0.0 …
Run Code Online (Sandbox Code Playgroud)

xrandr nvidia

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

查找程序访问的端口

我有一个程序试图在启动时连接到未知端口上的服务器。我需要找出程序访问哪个端口来启用 ssh 隧道。

我试过了,netstat但由于连接失败,我找不到任何有用的信息。

ssh ssh-tunneling netstat

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

如何杀死作为守护进程启动的进程?

我使用foo &.

它输出类似:

[1] 16915

这是进程ID,我猜。如何将此数字存储到名为MY_PROCESS_ID(例如)的变量中?

然后我可以这样做:

kill $MY_PROCESS_ID
Run Code Online (Sandbox Code Playgroud)

并且我的进程 ID 将被杀死。

linux bash process shell-script

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