双系统中在 ubuntu24.04 侧配置 hexo 博客 — 解决 sudo 指令问题
最近安装了 ubuntu24.04 双系统,想在 ubuntu 侧编辑和管理 windows 数据盘中的 hexo 博客目录,但由于 ubuntu 的磁盘挂载策略默认在 root 用户下,在配置过程中出现了很多权限问题,为了避免 sudo 指令使用 hexo,在这里总结一下 ubuntu 侧使用 windows 磁盘中 hexo 目录的流程。
注意所有指令若无特别说明均在普通用户下的~目录(Home)运行。
一、安装 Node.js 和 npm
安装 Node.js 和 npm 并确认安装情况:
1 | # 更新软件包 |
apt 指令安装的 node.js 和 npm 可能不是最新版,需要手动进行升级:1
2
3
4# 更新 npm
sudo npm install -g n
# 更新 node.js
sudo n stable
重启终端或刷新当前终端环境,再次查看版本信息:1
2
3
4# 查看 node.js 版本
node -v
# 查看 npm 脚本
npm -v
一般到这一步就能够完成更新。接下来解决该部分的权限问题。
npm 权限问题
默认情况下 Node.js 的全局路径 /usr/local/lib/node_modules 属于 root 用户,这一点可通过下列两条指令进行验证,这会导致普通用户使用 npm 时提示权限问题:1
2
3
4# 查看 npm 更新安装路径
npm root -g
# 查看 npm 全局安装路径
npm config get prefix
需要修改全局安装路径到 home 目录:1
2
3
4
5
6
7
8# 在home/下创建存放全局模块的文件夹
mkdir -p ~/.npm-global
# 配置 npm 使用新的路径
npm config set prefix '~/.npm-global'
# 将路径加入环境变量
echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc
# 刷新配置
source ~/.bashrc
在普通用户下重新安装 Hexo 命令,会发现无需 sudo 指令即可执行:1
2
3
4
5
6
7# 安装 hexo 包
npm install -g hexo
# 查看 npm 的全局包列表
npm list -g
# 输出如下:
> /home/your_name/.npm-global/lib
> └── hexo@8.1.1
二、磁盘权限配置
windows 的磁盘一般为 NTFS 或 exFAT 分区,Linux 在挂载这些分区时,默认权限管理较为严格。如果挂载参数不对,普通用户无法获得 write 和 execute 权限。
首先查看/etc/fstab文件,这里保存 linux 系统默认磁盘挂载策略:1
2/dev/disk/by-uuid/8469aa97-**** / btrfs defaults 0 1
/dev/disk/by-uuid/267D-**** /boot/efi vfat defaults 0 1
可以看到只有 Ubuntu 系统的根目录和 EFI 引导分区的挂载信息,因此按照下列步骤进行配置:
2.1 获取 Windows 磁盘的 UUID
在终端执行sudo blkid,在输出的列表中,寻找 TYPE="ntfs" 或 TYPE="exfat" 的设备,找到博客目录所在的 windows 数据盘。记下 UUID 中的字符串,注意不含引号。
2.2 编辑 fstab 文件
该部分操作具有风险,请谨慎对待!1
2
3
4# 备份 fstab 文件
sudo cp /etc/fstab /etc/fstab.bak
# 编辑 fstab 文件
sudo vim /etc/fstab
在 fstab 文件末尾,另起一行,添加以下内容:1
UUID=你的UUID /media/luotian/Files ntfs defaults,uid=1000,gid=1000,umask=022,utf8 0 0
参数解释:
UUID:比 /dev/sda1 这种设备名更稳定,防止插入 U 盘后盘符漂移ntfs:指定文件系统格式defaults:包含基本的读写和执行权限uid=1000,gid=1000:将磁盘内所有文件和目录的底层所有权强行映射给普通用户,Ubuntu 默认建立的第一个普通用户 ID 均为 1000umask=022:屏蔽部分写权限,使最终目录权限为 755,文件权限为 755,这是 Node.js 和 Git 运行的理想权限状态utf8:指定字符集,防止 Hexo 生成时的中文文件名和路径乱码
保存 fstab 文件并刷新系统配置:1
systemctl daemon-reload
2.3 测试挂载配置
修改引导文件后,务必在重启前测试配置是否合法,否则会导致 Ubuntu 无法开机!
关闭任何正在访问 windows 数据盘的软件或终端,执行以下命令:1
2sudo umount /media/luotian/Files # 如果提示未挂载可以忽略
sudo mount -a
如果终端无任何信息返回,说明挂载参数完全正确,配置已生效。如果 mount -a 命令返回了错误提示,重新依次执行上述两条指令,若依旧提示报错,说明 fstab 配置有误。此时务必重新检查配置参数或执行 sudo cp /etc/fstab.bak /etc/fstab 恢复备份,切勿直接重启电脑!
三、git 配置
git 配置指令如下:1
2
3
4
5
6
7
8
9
10# 安装 git
sudo apt install git -y
# 配置用户名和邮箱
git config --global user.name "Your Name"
git config --global user.email "youremail@example.com"
# 配置 SSH 密钥
# 接下来一路回车,全部保持默认,直到终端输出完毕
ssh-keygen -t ed25519 -C "youremail@example.com"
# 读取公钥内容
cat ~/.ssh/id_ed25519.pub
复制终端中输出的整串字符。随后登录 GitHub 网页,依次点击右上角头像进入 Settings,在左侧边栏找到 SSH and GPG keys,点击 New SSH key。Title 栏可以随意填写(如 Ubuntu),将刚才复制的公钥粘贴至 Key 输入框中,点击 Add SSH key 完成保存。
在终端执行下列命令测试与 GitHub 的连接:1
ssh -T git@github.com
打开 Hexo 博客根目录下的 _config.yml 文件,定位到 deploy 字段。确保 repo 这里是 SSH 格式的链接:1
2
3
4deploy:
- type: git
repo: git@github.com:yourName/yourName.github.io.git
branch: master
如果你的分支不是 master,请保持原有的分支名称。
git 权限问题
博客目录在 windows 的数据盘下,因此在博客目录中使用 git 命令属于跨文件系统分区操作,会触发 Git 的底层安全锁,导致部署命令失效,出现dubious ownership 报错,需要将该目录加入全局信任白名单:
1 | git config --global --add safe.directory /你的博客目录 |
四、hexo 博客目录配置
进入博客目录,如果你之前已经在博客目录中使用了 sudo 指令,需清理受到 root 权限污染的文件:1
2
3
4
5
6# 清除旧的缓存配置与部署目录
sudo rm -rf db.json .deploy_git
# 清除旧的 Node 依赖树
rm -rf node_modules package-lock.json
# 重新安装局部依赖包
npm install
安装完成后,如果看到含有 vulnerabilities 的提示,无需理会,这是 Node.js 生态中极其常见的现象。不要执行 npm 推荐的任何指令。在博客根目录下重新清理并推送:1
2hexo clean && hexo g && hexo s
hexo d
如果能够顺利生成 public 文件夹且没有报错,说明博客环境已搭建好,并成功避免 sudo 指令问题。





