19.04 中的 system-config-samba 发生了什么?

19.04 中的 system-config-samba 发生了什么?

我再也看不到这个应用程序了。这是一个简单的工具,我一直用它来进行一些基本的 Samba 文件共享。我该如何找回它?

有没有我可以使用的替代产品?

$ sudo apt search system-config-samba
[sudo] password for wvb: 
Sorting... Done
Full Text Search... Done

答案1

它去了所有不受支持的软件所在的地方:https://bugs.launchpad.net/ubuntu/+source/system-config-samba/+bug/1740419

此外,该应用程序的逻辑也多年没有更新了——它有一个选项(将安全性设置为“共享”)实际上会禁用 Samba 运行。几年前就应该更新或删除它了。

说到几年前就应该删除的软件包,我发现 gadmin-samba 仍在存储库中。我建议不要安装它。它是 Samba 第 2 版中最先进的,但现在我们使用的是第 4 版,它实际上具有破坏性。如果您运行它并遇到问题,没有人会帮助您调试它,因为没有人记得 Samba 第 2 版是如何工作的。

您可以使用 nautilus-share,它允许您从文件管理器创建共享或使用文本编辑器并直接修改 /etc/samba/smb.conf。

答案2

TL;DR - 我建议学习编辑 smb.conf 文件;这并不难。但如果​​你不在乎,无论如何都想尝试,下面的步骤可能会有所帮助。如果你真的很懒,只想尝试运行我的 linux-mint 脚本- 我强烈建议先进行备份(例如使用时间移位或您使用的任何全系统备份)。需要明确的是:我不建议盲目地运行网络上的脚本。我建议使用我的脚本作为参考,但我知道有些人不会听;我通常只针对 Mint 测试我的脚本,因此尤其是较新版本的 Ubuntu 可能会出现我尚未遇到的问题。如果您发现一个,我不介意您在我的 github 上提交问题,例如“system-config-samba 在 ubuntu xx.xx 上损坏”等;如果有时间我可能会查看,但这也不是我的首要任务。截至 2021 年 5 月 24 日,这些步骤已在 VM 中针对 Ubuntu 21.04 进行了验证,并且在 LM-20(Ubuntu 20.04 基础)上也运行良好。另请注意,如果您只是下载脚本并尝试运行它,它会给您一个错误,因为它有一些依赖项(有关说明,请参阅脚本文件夹中的 README 文件)。

2021 年 5 月 24 日更新:我曾有一个报告在我的 github 上,我之前在 wget 语句中发布的一些原始链接已经停止工作。我的脚本以及这篇文章已经更新为使用新链接(感谢注释这里按用户诺伯特)。手动安装已在运行 Ubuntu 21.04 的 Virtualbox 中进行了测试,我能够安装 system-config-samba 并启动并运行它。有关更多详细信息,请参阅链接的 github 问题页面。我不建议继续使用 system-config-samba bc A) 我认为 python2 存在安全问题,因为它不再接收更新,B) 它已经过时,并且从未设计为在您设置不安全时发出警告,并且 C) smb.conf 有很好的文档记录,并且相当容易学习。但我明白有些人可能有他们的理由,我不是来反对的;所以请注意 :-)

对于任何希望在 Ubuntu 19/Ubuntu 20/etc 下运行 system-config-samba 的人来说,需要做 4 件事才能使其像其他普通程序一样工作。

还需提前警告,即使您让它工作了,它也可能与一些较新的东西(samba3/samba4/等)发生冲突。我本人没有见过这种情况,但我保留它只是为了帮助一些想要编辑共享点但对文本文件不太熟悉的用户,它对我来说很好地满足了这种用例。


1. 它不再位于中央存储库中。可以通过下载适当的旧版 deb 文件并手动安装来解决此问题。再次强调,我强烈建议您在应用这些更改之前进行时间转换备份

mkdir ~/Downloads/system-config-samba-debs
cd ~/Downloads/system-config-samba-debs

# If on Ubuntu 20.10+, it sounds like you will need some additional
# depends for libcairo2 which was apparently removed in Ubuntu 20.10
# credit here goes to user N0bert for figuring this out on fslint post
wget http://archive.ubuntu.com/ubuntu/pool/main/libf/libffi/libffi7_3.3-4_amd64.deb
wget http://archive.ubuntu.com/ubuntu/pool/universe/p/pygobject-2/python-gobject-2_2.28.6-14ubuntu1_amd64.deb
wget http://archive.ubuntu.com/ubuntu/pool/universe/p/pycairo/python-cairo_1.16.2-2ubuntu2_amd64.deb

# Needed for all versions starting from Ubuntu 19.10
wget http://old-releases.ubuntu.com/ubuntu/pool/universe/p/pygtk/python-gtk2_2.24.0-6_amd64.deb
wget http://old-releases.ubuntu.com/ubuntu/pool/universe/p/pygtk/python-glade2_2.24.0-6_amd64.deb
wget http://archive.ubuntu.com/ubuntu/pool/universe/libu/libuser/python-libuser_0.62~dfsg-0.1ubuntu2_amd64.deb
wget http://archive.ubuntu.com/ubuntu/pool/universe/s/system-config-samba/system-config-samba_1.2.63-0ubuntu6_all.deb

# once all deb files are downloaded, to install running the following
# Note I got a couple warnings about:
#   'Failed to preset unit' and
#   'N: Download is performed unsandboxed as root as file'
# I just ignored these; they didn't matter for getting SCS running.
# And if you care about security, why would you install python2 ?!
sudo apt-get install -y ./*.deb

# if it worked, you should be able to find it somewhere on $PATH
which system-config-samba
  /usr/sbin/system-config-samba

2. 安装后,libuser.conf 错误将阻止其启动。只需运行sudo touch /etc/libuser.conf


3. 该应用程序需要 root 权限(这是有道理的,因为它会编辑 /etc/samba/smb.conf)。 *.desktop 快捷方式仍在使用旧的 gksu 命令,该命令在 Ubuntu 18 中已被删除。我们将在此处修复该命令,因为编辑快捷方式既快捷又简单,但请注意,快捷方式仍会损坏,直到您已添加波尔基特下一步中会出现异常。

您需要编辑的快捷方式是/usr/share/applications/system-config-samba.desktop。我们将Exec=gksu system-config-samba用以下代码替换该行Exec=/usr/bin/pkexec --user root /usr/sbin/system-config-samba

您可以使用 vim/nano 或 sed 手动执行此操作,方法是运行:

sudo sed -Ei 's|^Exec=.*$|Exec=/usr/bin/pkexec --user root /usr/sbin/system-config-samba|g' /usr/share/applications/system-config-samba.desktop

4. 最后,您需要创建 polkit 例外,以便快捷方式可以工作,因为如前所述,此程序使用特权文件 (/etc/samba/smb.conf),而旧的 gksu 方法早已被弃用,取而代之的是 polkit。添加例外允许您从菜单运行该程序,并只获得图形身份验证提示。

如果您以前从未接触过任何与 polkit 相关的东西,那么很可能您甚至没有该文件(全新安装后它不存在)。

首先,要检查是否存在任何现有的 polkit 异常,您可以使用lscat只检查文件。

$ cat /usr/share/polkit-1/actions/org.freedesktop.policykit.pkexec.policy
cat: /usr/share/polkit-1/actions/org.freedesktop.policykit.pkexec.policy: No such file or directory

如果出现“没有这样的文件或目录”,那么您可以创建一个空白文件并输入内容(如下所示)。或者您可以从我的 git repo 中复制一个:

wget -q https://raw.githubusercontent.com/zpangwin/linux-setup-scripts/master/mint-20/deprecated-system-config-samba/usr/share/polkit-1/actions/org.freedesktop.policykit.pkexec.policy

sudo mv org.freedesktop.policykit.pkexec.policy /usr/share/polkit-1/actions/org.freedesktop.policykit.pkexec.policy

无论您是复制了我的还是创建了新的,请确保正确设置了您的权限和所有权:

sudo chown root:root /usr/share/polkit-1/actions/org.freedesktop.policykit.pkexec.policy;
sudo chmod 644 /usr/share/polkit-1/actions/org.freedesktop.policykit.pkexec.policy;

如果你做过有一些现有的定义,你需要能够编辑 XML。由于大多数用户都不是这种情况,所以你需要自己学习它,但接下来的几句话应该能让大多数人理解。首先使用 进行备份sudo cp -a /usr/share/polkit-1/actions/org.freedesktop.policykit.pkexec.policy /usr/share/polkit-1/actions/org.freedesktop.policykit.pkexec.policy.bak。然后你需要手动编辑文件以 root 身份这样您就可以避免覆盖现有的 polkit 定义。如果您不知道如何做到这一点,那应该是一个线索,表明安装弃用的软件包不是一个明智的决定(但从 timeshift 恢复很容易……您确实做了备份,对吧?)。无论如何,您需要复制下面我的部分示例文本 - 但只需从到<action></action>包括开始/结束操作标签)。然后将其粘贴到文件中最后一个现有定义之间</action>和 之前</policyconfig>

示例 POLKIT 文件 (org.freedesktop.policykit.pkexec.policy):

<!DOCTYPE policyconfig PUBLIC "-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN" "http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd">
<policyconfig>
  <action id="org.freedesktop.policykit.pkexec.run-system-config-samba">
    <description>Run Samba Config</description>
    <message>Authentication is required to run Samba Config</message>
    <icon_name>system-config-samba</icon_name>
    <defaults>
      <allow_any>no</allow_any>
      <allow_inactive>no</allow_inactive>
      <allow_active>auth_admin_keep</allow_active>
    </defaults>
    <annotate key="org.freedesktop.policykit.exec.path">/usr/sbin/system-config-samba</annotate>
    <annotate key="org.freedesktop.policykit.exec.allow_gui">TRUE</annotate>
  </action>
</policyconfig>

相关内容