- shenzhenhk2天前2576
非 IT 企业,我部门服务器用的是 Ubuntu 24.04 LTS ,自带的 PHP 版本是 8.3.6 ,以后就算一直升级,版本也不会变,只会打补丁变成 8.3.6-0ubuntu0.24.04.XX 这样
这次 PHP 漏洞发生后,我们第一时间更新到了 8.3.6-0ubuntu0.24.04.13 ,这是 ubuntu 官方公告的修复版。
结果上方的监控部门发信来说我们没有升级,要求按照 https://www.php.net/archive/2026.php 官网要求升级到 8.3.36 以上
于是我们得费劲跟他解释 8.3.6-0ubuntu0.24.04.13 就是安全修复后的版本,他还是不懂为什么 8.3.6-0ubuntu0.24.04.13 高于 8.3.36
其实根源就在于发行版一发布就锁定软件包版本。如果允许小版本浮动,例如 Ubuntu 24.04 刚开始是 PHP 8.3.6 ,后续升级可以是 8.3.7 -> 8.3.8 等,就不会那么难理解了。
另外 Python 锁定的好像是大版本,例如 Ubuntu 24.04 锁定 3.12 ,后面的小版本还是会升。不过 Python 大部分人用的都是虚拟环境,与系统自带关系不大。
主楼 - rodericliu2天前2577
现在 php 都用容器,用 remi 的源自己 build image ,ubuntu 自带的版本太老
- hefish2天前1351
人家 alpine 就不锁,所以 ubuntu 也不应该锁。。。
- hefish2天前1351
对了,不能不让他们看到 php 的版本好哒。。。
- Muniesa2天前2578
LTS 就是这样的吧,在整个支持周期内更新的版本不会引入和删除接口和功能,只做漏洞修复,确保兼容性,php 应该是小版本间也有功能差异? Python 这边最后一位版本号是只做漏洞修复的所以可以直接用。
- Cu6352天前2180
op 有没有给“上方的监控部门”看 ubuntu 的官方安全公告?里面直接明确了修复状态,不用纠结版本号的事儿了:
https://ubuntu.com/security/CVE-2026-109619
https://ubuntu.com/security/CVE-2026-109618@xiliuya #5
换句话说,php 的最后一位小版本更新也有不兼容? - SoulFlame2天前2392
- xiliuya2天前2579
锁定版本号可以避免大版本的更新导致的不兼容,这也是为什么很多项目只指定某个版本,这是为了稳定和安全考虑的
- realpg2天前2003
对于 ubuntu 我想说 你可以把 php-指向 php8.1-
但是你对整个大版本都不再维护其他版本的 php 包就很离谱另外 发现个奇葩问题
我有些机器不在意 php 版本 就是装了个 php-fpm 用来输出一些简单东西,其实不更新也没啥很多都是内网机器然后因为这个漏洞我运维平台集体下发,没办法用 ppa add 了一个最大的 php 源
然后 apt remove php8.1-*时候 会自动装上 php8.4-的对应包
然后我还得手动卸载了 php8.4 再手动安装 php8.5-* - busier2天前2580
国内监管啥也不懂 还喜欢瞎管 这才是最恶根源
- villivateur2天前2328
因为 Ubuntu 这类 Linux 发行版的哲学就是,选择一个固定的内核、一个固定的 init 、一堆固定的应用,然后打包出一个稳定的发行版版本。这样能确保可靠性。
也就是说,一个程序能在你的 Ubuntu24.04 上跑,那也一定能在我的 Ubuntu24.04 上跑。
要及时更新主版本号的话,建议选择那些滚动更新的发行版,比如 manjaro 。 - newmlp2天前2401
不然怎么体现 Linux 的稳定呢
- liaohongxing2天前2581
Ubuntu 是在版本不变的情况下,手动在源码级别合并了漏洞补丁再编译的。
LTS 版本的意义就是防止用户发帖喷一升级整个系统都崩了。缺点就是连小版本都不更新,但是 mysql 的小版本又在滚动,不知道是什么发布政策。
- shenzhenhk2天前2576
@liaohongxing python 的小版本也是滚动的
- ulpyxua2天前2582
直接把系统自带的 php, python 全部卸载掉就可以了。再装个宝塔容器,或者 自己 build 个 php 的容器,挂载服务器目录起网站
- billlee2天前2583
你在非 IT 企业,应该对这个更清楚啊。作为非 IT 企业,软件都是从外面的软件厂商买来的,有问题没办法自己修,所以只能验证过的版本上运行,随便升级版本你不知道哪里有个潜在的 bug 就爆发出来了。
所以这些发行版的策略是锁定一个版本,只在有安全漏洞的时候把相关的补丁单独挑出来应用。
至于有的软件是锁小版本,有的软件锁大版本,这个主要就和上游软件的复杂程度和版本管理策略有关。有的上游的小版本真的就是只修严重 bug, 不会引入太多修改,这个就可以锁大版本。有的上游小版本就是各种大小 bug 都一起改,甚至还加新功能,这种就不敢跟了。
另外还看发行版的大客户的需求,发行版里面官方维护哪些软件包,按什么策略维护,可能都是根据他们的主要客户的需求来的。其它人就是搭车用用。
- vsomeone2天前2182
Ubuntu 这种是自己维护了一个代码仓,基线是 8.3.6 ,后面所有的修复都是 Ubuntu 的人 review 之后 backport 进去的,所以前面的版本号固定成了 8.3.6 。RHEL 系的发行版基本都是这样做的,Debian 系的好像只有 Ubuntu 会这样做。其他依赖社区的发行版只会对少部分软件维护代码仓,大部分软件都是用开源的代码直接编译过来
- Hardrain2天前2584
这就是 point release ,如果不喜欢可以用 rolling release ,你就会得到和 upstream 几乎一样的版本号。
当然,新版本的 bug 也可能一并被 port 过来,point release 是采取 freeze 后 + upstream 新版本发布后只 backport 安全更新(而不 backport 功能更新)的模式,类似于 Firefox ESR 的模式。
- Hardrain2天前2584
如果你们公司用的网络安全解决方案不能 source 到各个 downstream distros (或者至少你们使用的 distros )自己的 SA 所提及的 patched versions ,那它是个垃圾产品,应该被淘汰。
- RuralHunter2天前2585
ubuntu 软件前面的版本号是上游的版本号,后面的版本是 ubuntu 定制的版本号。上游小版本未必不改,取决于软件的小版本改变的意义。ubuntu 的策略一般是如果小版本是有新功能升级或兼容性风险的,一般就不会跟着改,特别是比较核心的软件。一些无关轻重的软件,ubuntu 自己是懒得定制的,一般都会跟着上游版本改。
- tcchen2天前2586
因为 apt 上有很多包都依赖 php 吧
- 1374
直接给他弄个 poc 验证,不妥了...
- iceheart2天前2587
我丢给 ai 它给加了个 apt 源就更新到 8.3.36 了