问题可能不明确且过于宽泛,但任何答案,无论简短或宽泛,我们都非常感激。
前段时间我要求在我们的生产服务器上安装 zsh。我的管理员公司回复说无法完成,因为这是生产服务器,而不是开发服务器。
我使用 zsh 和 oh-my-zsh 已经有 5 年了,并且非常喜欢它,zsh 让我的工作变得更轻松、更快。但这还不够充分。
我对安全或这里可能涉及的其他问题并不擅长,这就是为什么我的问题是:
- 在生产服务器上安装zsh对系统无害吗?
- 在这种情况下您允许安装 zsh 吗?为什么?
- 在生产服务器上使用 bash 限制用户是否有意义?
答案1
zsh
只是一个 shell,它不启动任何服务,也不附带任何 setuid 命令。因此,在某人或某事实际使用该软件包之前,仅安装该软件包不会执行任何操作。由于它不需要任何权限,因此任何用户都可以自行将其安装在他们的主目录或他们有权访问的任何位置。
如果不是的话生产质量,有人可能会说,将其作为 和 admin 用户的登录 shell 会带来一些风险,但由于其语法比其他 shell(如bash
或 )更明智tcsh
,我认为它会大大改善问题。
虽然它的主要用途是作为交互式 shell,但我认为编写脚本zsh
可能会比脚本更安全、更可靠bash
(看看有多少人在忘记引用变量时不知不觉地用 语法编写bash
脚本zsh
,以及如何更改 shebang从#! /bin/bash
到#! /bin/zsh -
将修复其脚本中的许多错误)。
无论如何,安装zsh
是我在我工作过的所有地方的所有服务器部署中首先要做的事情之一。
但是,我通常不会将其设置为默认情况下任何用户的登录 shell,因为某些软件期望以 bash 为中心的环境并不罕见。
答案2
和其他人一样,这是我的观点:
- 在生产服务器上安装zsh对系统无害吗?
定义“无害”。严格来说,它不会造成直接伤害。但是,生产系统上的任何代码都是潜在的攻击媒介。从这个意义上说,它并不是真正的“无害”,因为它可以用于对系统进行攻击。还有一些其他方式可能会间接导致问题。例如,ZSH 比 bash 更需要资源,这对于接近容量运行的系统可能很重要。
- 在这种情况下您允许安装 zsh 吗?为什么?
根据具体情况,我可能已经安装了它。
我的所有个人系统都安装了 ZSH,并将其设置为每个人(包括 root)的默认 shell。这只是因为我经常在这些系统上使用本地 shell 进行工作,并且在很多情况下我都积极使用 ZSH。
但是,我在工作中管理的所有系统都没有安装它。我为他们所做的大约 95% 的管理工作并不涉及我实际接触过这些系统上的 shell(我做了一个很多工作中通过 Ansible),所以我没有必要让它成为一个熟悉的环境。除了我们的实际开发系统之外,我也不太可能将其安装在任何其他系统上,而且我根本不可能将其安装在任何可直接在场外访问的系统上。
- 在生产服务器上使用 bash 限制用户是否有意义?
除了某些不涉及实际 shell 访问的非常严格的情况之外,我质疑让普通用户接触生产系统的实用性。
例如,在我工作的地方,只有 IT 部门和直接负责维护我们网站的人员才能对我们的 Web 服务器进行常规 HTTPS 访问。 IT 人员(包括我自己)必须使用仅用于管理 Web 服务器的特殊帐户登录,即使如此,他们对系统的访问也受到限制,除非他们坐在服务器机房的物理控制台前。网页设计者只能通过 SFTP 访问网站的根目录,并且没有什么别的。鉴于此,除了 bash(这是我们内部管理使用的标准)之外,不需要任何 shell。
同样,对于我们的内部文件服务器,只有 IT 部门拥有实际的 shell 访问权限。其他用户对某些目录的访问受到特别限制,通常允许常规文件服务器协议(SMB、NFS 等),加上 SFTP,在某些情况下还允许 rsync,但他们都没有任何真正的 shell 访问权限,因为他们实际上不需要它。
答案3
根据我的经验,在生产服务器上安装 zsh 的情况并不常见。话虽这么说,我主要与更“保守”的客户(银行、政府机构等)合作,因此您的情况可能会有所不同。
Zsh 本身是无害。它只是“另一个 shell”,就像 bash、ksh...但是,在许多公司中,安全策略是尽可能限制攻击面,即除非需要,否则不要安装任何东西。尽管 zsh 无害,它的代码库可能包含错误。阅读炮弹休克如果您还不知道的话。 :)
话虽如此,对于“商品”有一定的宽容度,例如使用 vim 而不仅仅是 vi。 Zsh 可能属于这一类。未投入生产, 没有发生。除了减少攻击面之外,您还需要测试两次脚本 - 一次使用 zsh,一次使用 bash。这需要时间和金钱。
我不会称其为 bash 限制:有什么是 zsh 可以做而 bash 不能做的吗?
最后说明:bash 几乎是行业标准。它是大多数企业级发行版(RHEL、SUSE 等)以及许多非常流行的发行版(如 Debian、Ubuntun)的默认 shell。
多年来我尝试过“新”shell:zsh 和 Fish两个我真的很喜欢。然而,对于家庭使用来说,在工作中可能一直是 bash(在使用 AIX 等时则使用 ksh)。我最终也在家里使用 bash,旧习惯很难改掉。
答案4
还有其他意见,但这是我的。
- 在生产服务器上安装zsh对系统无害吗?
引入新软件很少是无害的。例如,它需要确保与其相关的任何漏洞都得到识别和修补。
- 在这种情况下您允许安装 zsh 吗?为什么?
不。想要确定切实的好处。
- 在生产服务器上使用 bash 限制用户是否有意义?
是的,bash
太棒了:-) 如果公司中的某些小众用户zsh
在没有更广泛的支持团队了解的情况下开始编写脚本,他们就会感到兴奋。