记一次在CentOS遇到的文件操作(删除/修改)权限问题
前言(废话,可不看):
最近在centos上部署一个nodejs后端服务,有些业务是需要进行文件操作(fs)的。然后遇到了一系列问题,一直以来都是用搜索引擎解决了就完了,但昨天遇到了一个权限问题在网上很少能搜到直接答案。然后自己耍了点小聪明解决了,觉得有必要记录下来,也许能帮到其他的小伙伴。也许有大佬有更成熟方案,希望大家可以互相分享吖~(第一次写blog( ̄▽ ̄)")。
- 腾讯云轻量应用服务器CentOS
- Nodejs+fs
- 宝塔面板
- fs.unlik等
后端的业务常常会需要文件操作,但是在CentOS
(我猜应该Linux内核的都差不多吧)环境下文件/目录权限的设置是比较严格的。我遇到的问题是在使用 nodejs的fs
模块创建
一个 新的
文件/目录时赋予
文件的 权限等级较低
,因而导致后续再对文件进行修改、删除等操作时如果不是以root
身份进行操作就会报no permit或者权限不足的提示。作为一个后端项目需要经常变更文件更不可能每次都手动chmod
。
第一种思路:
直接在命令行切换到
root
用户,并运行整个node项目(建议用nodemon运行,用过都说好~),这样就不存在文件操作权限不足的问题。第二种思路:
在node项目里面执改变文件权限的CentOS命令,在node项目里局部或者直接全局安装一个
child_process
模块,然后在进行文件创建等操作时候执行代码execSync('chmod -R 777 文件/目录路径')
,然后再用root
用户跑起整个node项目,双重保险~。
最后附上第二种思路的代码
const { execSync } = require('child_process');
execSync(`chmod -R 777 ${staticSourcePath:即文件/目录路径}`)
至于关于CentOs的命令参数的意义各位看官自行查阅资料吧,因为这种时可以直接查到的就不在这里不作赘述,本文目的时帮助解决燃眉之急,更优方案或者技术探讨方面欢迎评论区交流一哈囖