是否可以通过 samba 连接从 Windows 运行 bash 命令?

是否可以通过 samba 连接从 Windows 运行 bash 命令?

现在,在您思考完“亲爱的上帝!您为什么要允许这种情况?!?”之前,我想知道这是否可能。

我想要解决的问题可以通过其他方式解决,但这将其置于我工作场所的其他非 *nix-y 管理员的功能领域中。

我想要实现的是:拥有一个快捷方式/文件/什么-您可以通过 samba 连接双击(运行它)并执行umount /path/to/ext-drive

这在很多方面都可能会出现问题,其中之一当然就是前面提到的“为什么?!!!?!”,而且我刚刚记得挂载是通过 root 的 cron 完成的,所以它甚至可能无法卸载通过其他一些指定的 smb 用户。

实际上,我正在考虑链接到共享之外的 .sh 文件,试图将任何执行操作与 samba 用户修补隔离开来。

有什么想法吗?

编辑

我应该补充一点,USB 扩展。驱动器是通过执行备份的脚本安装的。它没有安装在驱动器连接处。这有望成为解决过去几周突然出现的随机卸载失败问题的一种方法。

我还以为我可以在 cron 中放入一些内容来检查备份过程是否已停止执行,驱动器是否仍然连接,如果是,则卸载它。

另一个编辑

我开始意识到这个问题的无用性。正如我在 OP 下面的评论中所说,双击我的计算机上共享上的文件,不会在服务器上执行某些操作。

解决问题,而不是问题

我将接受@slm 的答案,因为它是所提问题的答案。“是否可以通过 samba 连接从 Windows 运行 bash 命令?”不,不,你不能。 (也如本OP下面的评论所述)

但为了解决这个问题,我已经这样做了 - 并且每小时都会通过 cron 执行它。

#!/bin/bash

if [ ! -f "/path/to/locking/file.txt" ]
then
    if mount | grep /pathTo/backupDriveMount ; then
        # Is still Mounted
        echo "Drive Still Mounted - Attemping unmount" >> "/path2/logFile.log"
        TEST="$(mount | grep /pathTo/backupDriveMount | cut -d' ' -f1)"
        echo "Unmounting ${TEST}"
        umount ${TEST}
    fi
fi

用英语讲,

  1. 如果锁定文件不存在,则检查挂载中备份挂载点的路径。
  2. 如果存在,请提取驱动器/分区
  3. 卸载提取的位置。

答案1

这不可能。您无法通过 Samba 连接以这种方式在 Linux 服务器上远程运行可执行文件。

如果你真的想实现这样的目标,你只能通过想到的两种方式之一来实现:

  1. 通过 PuTTY/SSH 远程执行命令,有效登录 Linux 盒子,运行命令,然后退出。

    $ ssh linux-server umount /path/to/ext-drive
    
  2. 通过设置可以通过 Web 服务器运行的可执行文件,他们将umount /path/to/ext-drive通过 CGI-BIN 类型的设置触发命令。

笔记:上面的第二个选项可以被认为是“危险的”,我可能会阻止任何人使用它,但我过去曾使用它来公开我想要远程执行的一些基本命令,并且通过 SSH 连接到盒子并不是一个选项。

不同的方法

更好的选择可能是在 Linux 服务器上使用自动安装程序。使用自动挂载程序,每当有人尝试访问目录时,都可以触发一个操作,将给定分区挂载到 Linux 服务器的目录空间中。在指定的不活动时间后,可以通过自动挂载程序自动卸载自动挂载的目录。

请查看其中一些指南,了解有关设置自动安装程序的更多详细信息:

相关内容