“home”在服务器里是系统分配给每个用户的专属目录,相当于用户的数据“家”,存放个人文件、配置和网站代码,是服务器多用户管理的基础。
很多刚接触服务器的人,登录后台或SSH后第一眼就看到“/home”这个目录,心里会犯嘀咕:这到底是个什么地方?跟我的网站、数据库有什么关系?今天咱们就把这个“家”彻底聊透。
服务器里的home到底是什么角色
在Linux和Unix类系统中,home目录(通常写作/home)是系统用来存放普通用户个人文件的顶层目录,每个用户在这里都有一个以自己用户名命名的子文件夹,比如/home/zhangsan、/home/lisi。
它和“家”字面的关系
你可以把服务器想象成一套公寓楼,/home就是住户楼层,每个用户拥有自己独立的房间,房间里的东西你的网站备份、脚本、配置文件、个人文档都放在这里,别人没权限随便进,这种隔离设计保证了多用户环境下数据的安全性。
root用户的home在哪里
这里有个容易混淆的点:root超级管理员的家不在/home下,而在/root(根目录下),这样区分的一个原因是为了防止普通用户尝试访问root的家目录,也方便在系统救援时快速找到管理员文件。
为什么网站文件常常放在home里
国内很多云服务器面板(比如宝塔、WDCP)默认把网站根目录设在/home/wwwroot或/home/user下,这更多是约定俗成的习惯把站点文件和应用数据放在home,好处是:备份只需要打包/home整个目录,不用去系统目录里翻找;权限管理也直观,网站的属主和属组一眼就能看清楚。
home目录实际使用中的几个常见场景
理解了定位,咱们来看看具体怎么用它,绝大多数服务器操作都绕不开这几个场景。
用FTP或SSH连接后找不到文件在哪儿
新手经常遇到:用FTP登录后看到“/home/用户名”,但自己的网站文件在“/home/用户名/www”或“/home/wwwroot”里,这是因为主机商或面板设置了不同的目录映射,解决办法很简单:在SSH里执行

pwd命令看当前路径,用ls -a查看隐藏文件,再用cd切到首页文件所在的目录(比如/home/账号名/www)。
给多人开通服务器子账号
假设你把一台服务器分给三个朋友一起做项目,可以用以下命令建账号:
useradd -m -s /bin/bash zhangsan passwd zhangsan
区别在于-m参数代表自动创建/home/zhangsan家目录,没有这个参数,你的朋友可能连文件都放不进去,这是home目录权限设置里最基本的一环。
搬家换服务器时迁移数据
换服务器时,home目录是打包备份的优先级最高的一个,执行:
tar -czvf home_backup.tar.gz /home
迁移到新服务器后解压,再配合数据库备份,网站基本就完整恢复了,这里要提醒:压缩/home前先停掉MySQL等正在写入的服务,否则备份文件可能不完整。
home和网站根目录的区别
很多人分不清“服务器home目录”和“网站根目录(DocumentRoot)”,简单说:
- home目录是用户的系统级目录,存放一切个人文件
- 网站根目录是Web服务器(Nginx/Apache)对外提供网页文件的文件夹,通常在
/home/用户名/public_html或/var/www/html
如果网站访问不了,优先检查路径配置,在Nginx配置文件的root这行里写的路径,得确保用户有权限读取,否则会报403或404错误。
操作home目录时必须注意的权限与安全要点
这是整个话题里最影响实际使用的部分,权限没搞明白,轻则网站打不开,重则网站被黑。
home目录的默认权限
典型的home目录权限如下:
drwxr-xr-x 3 root root 4096 /home drwx------ 5 zhangsan zhangsan 4096 /home/zhangsan
第一行/home目录属于root,其他人可以读和执行(能进入到子目录),但不能创建文件,第二行用户的个人目录权限

700,意味着只有用户自己能进,这是保护隐私的默认设置,请务必保持。
网站运行需要什么权限
用Nginx或Apache运行PHP网站时,进程默认以www-data或nobody身份运行,如果网站文件在/home/zhangsan下,而zhangsan这个目录权限是700,那web服务进程根本进不去,这就是很多人遇到的“静态文件能访问,PHP文件404”。
解决方案:
- 把站点目录改到
/home下单独位置(如/home/wwwroot),/home/wwwroot权限设为755 - 或者把网站目录属主改为
www-data,用命令chown -R www-data:www-data /home/zhangsan/www
常见的home目录误操作(请别这样干)
- 递归改权限:
chmod -R 777 /home,这是最致命的操作,所有用户文件完全暴露,相当于把家门钥匙发给整栋楼的人,如果网站被挂马,黑客能用777权限直接篡改任何文件。 - 误删home目录:有些人在根目录执行
rm -rf home(少了斜杠前缀),结果把当前目录下的home文件夹删了,执行删除命令前,先pwd确认路径,最好用完整路径,如rm -rf /home/backup_old。 - 把数据库数据直接放home里:虽然MySQL可以改数据目录到home下,但这不是好习惯,数据库有独立的
/var/lib/mysql目录,改过去可能因SELinux或AppArmor限制导致数据库无法启动。
扩展:Windows服务器和云服务器中的对应概念
如果是Windows服务器(比如安装了IIS环境),通常没有/home目录,对应的概念是C:Users用户名或C:inetpubwwwroot,操作时常看路径中的盘符,不要照搬Linux命令。
如果买的是虚拟主机或轻量服务器,主机商可能用控制面板(如cPanel、Plesk)管理home目录,你会看到类似/home/账号名的结构,文件管理器里点击“家目录”按钮,会自动跳转到这个位置。

home目录没有想象中那么神秘
总结下来,home就是服务器为了“分家”而设计的机制给每个用户一块独立空间,保持系统整洁和安全,日常使用中,记住三点就够了:
- 网站的代码通常放在home下某个目录里,要留意属主和权限
- 备份优先打包home目录,恢复时也要先解压到home
- 不要对home及子目录执行
777权限,除非你清楚知道自己在干什么
搞懂它,你的服务器管理水平就超过了大多数起步阶段的人。
和home目录常见误区相关的几个问答
问:home目录满了会导致服务器卡顿吗?
答:会,home分区如果被占满(用df -h查看),MySQL可能无法写入临时表,nginx日志写不进去,甚至用户无法正常登录,建议定期清理/home下的旧备份和日志,或者把备份存储到独立的云盘,如果home是独立分区且空间不足,可以考虑挂载一块新数据盘并迁移home的数据。
问:为什么我的home目录下什么都没有?
答:主要有两种可能,一种是你使用的是新建的普通用户,且未放入任何文件目录,用ls -la /home/用户名能查看到隐藏的bash配置文件就说明正常,另一种是使用了FTP登录默认落到了根目录而非home(比如部分面板的FTP根目录设为了),可以用pwd命令查看当前路径,再按面板默认规则找站点文件。
问:home目录能否移动到其他分区或硬盘?
答:可以,但操作需谨慎,行业共识是使用rsync同步数据到新目录,然后修改/etc/fstab挂载点,将新硬盘挂载到/home路径,操作前务必备份数据,因为fstab配置错误会导致系统启动失败,如果只是临时挪位置,也可以用mount --bind方式临时挂载,大部分情况下,非必要不建议迁移home目录,尤其是对不熟悉命令行操作的用户来说,直接使用默认路径更安全。
图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/833918.html


评论列表(4条)
这篇文章写得非常好,内容丰富,观点清晰,让我受益匪浅。特别是关于目录的部分,分析得很到位,给了我很多新的启发和思考。感谢作者的精心创作和分享,期待看到更多这样高质量的内容!
@猫愤怒5:这篇文章的内容非常有价值,我从中学习到了很多新的知识和观点。作者的写作风格简洁明了,却又不失深度,让人读起来很舒服。特别是目录部分,给了我很多新的思路。感谢分享这么好的内容!
@猫愤怒5:这篇文章写得非常好,内容丰富,观点清晰,让我受益匪浅。特别是关于目录的部分,分析得很到位,给了我很多新的启发和思考。感谢作者的精心创作和分享,期待看到更多这样高质量的内容!
读了这篇文章,我深有感触。作者对目录的理解非常深刻,论述也很有逻辑性。内容既有理论深度,又有实践指导意义,确实是一篇值得细细品味的好文章。希望作者能继续创作更多优秀的作品!