/srv目录用于存放服务启动后需提取的数据,如Web、Git、FTP等服务的业务数据,默认为空,需手动部署;其子目录命名应体现服务语义,权限须匹配对应服务运行用户。

直接用 ls 命令就能看到 /srv 下有哪些服务数据,但要真正看清业务数据的结构和用途,得结合目录命名习惯、服务类型和权限来判断。
确认 /srv 是否有内容
很多系统默认安装后 /srv 是空的,因为它只在你主动部署服务时才被使用。先运行:
ls -l /srv
如果返回 “No such file or directory”,说明该目录可能未创建或未启用;可手动创建:
sudo mkdir -p /srv
注意:/srv 本身通常由 root 拥有,普通用户无权写入,这是正常设计。
识别常见服务子目录结构
/srv 下的数据组织通常按服务类型分层,比如:
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
- /srv/www/ 或 /srv/http/:Web 服务的静态文件、站点根目录(如 WordPress、HTML 页面)
- /srv/git/:裸仓库(.git 结尾)或 Git 服务(如 Gitea、GitLab 的数据存储路径)
- /srv/ftp/:FTP 服务公开共享的上传/下载目录
- /srv/media/ 或 /srv/video/:流媒体、NAS 类服务的音视频资源
- /srv/backup/:某些备份脚本或工具(如 Borg、Restic)指定的归档存放点
这些子目录名没有强制标准,但遵循 FHS 建议——名称应反映其服务语义,而非随意命名(例如不建议叫 /srv/data1)。
查看具体服务的数据归属
光看目录结构还不够,需确认哪些服务正在使用这些路径。常用方法:
- 查服务配置文件:Web 服务常在
/etc/nginx/sites-enabled/或/etc/apache2/sites-available/中定义root路径;Git 服务配置里会指定repositories目录 - 查进程打开的文件:
sudo lsof +D /srv可列出当前正访问 /srv 下文件的进程 - 查服务状态:
systemctl show --property=ExecStart nginx或ps aux | grep -i srv辅助定位
检查权限与实际可访问性
业务数据是否“可用”,不仅看是否存在,还要看权限是否匹配服务运行身份。例如:
- Nginx 默认以
www-data(Debian/Ubuntu)或nginx(RHEL/CentOS)用户运行,它必须对 /srv/www/project1 有读取权限 - Git over SSH 依赖系统用户家目录或专用用户(如
git),其仓库所在目录需对该用户可读写 - 运行
namei -l /srv/www/example.com可逐级查看路径中每级目录的权限和所有者
若发现 403 错误或 clone 失败,大概率是 /srv 子目录权限设置不当,而非路径不存在。

















