0

0

chronyd 服务启动失败 "Could not step system clock" 的权限与 adjtime

舞姬之光

舞姬之光

发布时间:2026-01-30 20:49:28

|

994人浏览过

|

来源于php中文网

原创

“Could not step system clock”是chronyd因缺少CAP_SYS_TIME能力而无法直接跳变系统时间导致的启动失败错误;根本原因是非特权用户进程被内核禁止调用clock_settime(),需通过setcap添加能力并配置systemd service的CapabilityBoundingSet和AmbientCapabilities来修复。

chronyd 服务启动失败 \

chronyd 启动时提示 “Could not step system clock” 是什么问题

这是 chronyd 在初始化阶段尝试用 clock_settime() 直接跳变系统时间(即“step”)失败导致的,不是警告,是硬性错误,会导致服务退出。根本原因通常是内核禁止非特权进程修改系统时钟,而 chronyd 默认以普通用户(如 _chrony)运行,没有 CAP_SYS_TIME 能力。

为什么 adjtime(2) 成功但 clock_settime(2) 失败

adjtime() 是渐进式调速(slew),仅调整时钟频率,不改变当前时间戳,普通用户可调;clock_settime(CLOCK_REALTIME, ...) 是直接写入新时间,属于高危操作,受 Linux capability 限制。chronyd 启动时若检测到系统时间偏差过大(默认 > 0.128 秒),会优先尝试 step(更快收敛),失败后才 fallback 到 slew —— 但若 step 失败且未配置允许降级,就直接报错退出。

  • chronyd -d -x 可强制只用 slew 模式(绕过 step),适合调试
  • 实际生产中不建议长期用 -x,它无法修正大偏差,可能让 NTP 同步失效
  • 检查偏差大小:chronyc tracking 中的 System time offset

修复 “Could not step system clock” 的三种可行方式

核心是让 chronyd 进程获得 CAP_SYS_TIME,而非改用 root 运行(不安全):

BGremover
BGremover

VanceAI推出的图片背景移除工具

下载
  • 给 chronyd 二进制文件添加 capability:sudo setcap cap_sys_time+ep /usr/bin/chronyd
  • 确认生效:getcap /usr/bin/chronyd 应输出 /usr/bin/chronyd = cap_sys_time+ep
  • 若使用 systemd,需在 service 文件中显式声明能力(否则 setcap 可能被忽略):
    CapabilityBoundingSet=CAP_SYS_TIMEAmbientCapabilities=CAP_SYS_TIME
  • 重启服务:sudo systemctl restart chronyd,再查 journalctl -u chronyd -n 20

/etc/chrony.conf 中的 makestep 配置影响 step 行为

makestep 指令控制 chronyd 是否以及何时执行 step,它不解决权限问题,但决定是否触发该错误:

  • makestep 1.0 -1:偏差 ≥1 秒时无条件 step(最可能触发错误)
  • makestep 0.128 3:仅在启动后前 3 秒内、偏差 ≥128ms 时 step(更保守)
  • makestep 0 0:完全禁用 step(等同于 -x,不推荐)
  • 注意:即使配置了 makestep,若 capability 缺失,仍会报错退出,不会静默 fallback
真正容易被忽略的是 capability 和 systemd service 配置的配合 —— 单独 setcap 在某些发行版(如 RHEL 8+/CentOS Stream)的 systemd 环境下并不生效,必须补全 CapabilityBoundingSetAmbientCapabilities 才能落地。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

1415

2023.06.21

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

706

2023.06.29

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

295

2023.06.30

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

782

2023.07.05

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

575

2023.07.06

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

550

2023.07.20

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

300

2023.07.20

linux查看cpu使用率
linux查看cpu使用率

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

383

2023.07.25

C++ 设计模式与软件架构
C++ 设计模式与软件架构

本专题深入讲解 C++ 中的常见设计模式与架构优化,包括单例模式、工厂模式、观察者模式、策略模式、命令模式等,结合实际案例展示如何在 C++ 项目中应用这些模式提升代码可维护性与扩展性。通过案例分析,帮助开发者掌握 如何运用设计模式构建高质量的软件架构,提升系统的灵活性与可扩展性。

14

2026.01.30

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 8.1万人学习

Git 教程
Git 教程

共21课时 | 3.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号