Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Linux权限问题 #38

Open
XZhouQD opened this issue Sep 6, 2020 · 4 comments
Open

Linux权限问题 #38

XZhouQD opened this issue Sep 6, 2020 · 4 comments

Comments

@XZhouQD
Copy link

XZhouQD commented Sep 6, 2020

更新近期版本后,出现如下与运行权限相关的问题:

非root(sudoer)权限运行时 ./miraiOK_linux-amd64,报如下错误:

2020-09-06 19:49:xx I/MiraiOK: MiraiOK 20200906.192946 linux-amd64
2020-09-06 19:49:xx I/MiraiOK: 此程序以Affero GPL3.0协议发布,使用时请遵守协议
2020-09-06 19:49:xx I/MiraiOK: 部分开源于: github.com/LXY1226/MiraiOK
2020-09-06 19:49:xx I/MiraiOK: openjdk version "11.0.8" 2020-07-14
2020-09-06 19:49:xx I/MiraiOK: OpenJDK Runtime Environment (build 11.0.8+10-post-Ubuntu-0ubuntu118.04.1)
2020-09-06 19:49:xx I/MiraiOK: OpenJDK 64-Bit Server VM (build 11.0.8+10-post-Ubuntu-0ubuntu118.04.1, mixed mode, sharing)
2020-09-06 19:49:xx I/MiraiOK: 读取库列表出现错误 open libs/version.txt: permission denied
2020-09-06 19:49:xx I/MiraiOK: 删除.lastupdate来在下次启动时强制检查更新
CLASSPATH=
2020-09-06 19:49:xx I/MiraiOK: 启动Mirai...
Error: Could not find or load main class net.mamoe.mirai.console.pure.MiraiConsolePureLoader
Caused by: java.lang.ClassNotFoundException: net.mamoe.mirai.console.pure.MiraiConsolePureLoader
2020/09/06 19:49:00 java退出,exit status 1
2020-09-06 19:49:xx E/MiraiOK: 运行失败,尝试更新mirai三件套 exit status 1
2020-09-06 19:49:xx I/MiraiOK: 开始检查Mirai更新... 也可以通过创建.noupdate文件来禁用更新
2020-09-06 19:49:02 E/MiraiOK: 无法写入库列表 open libs/version.txt: permission denied
2020-09-06 19:49:02 I/MiraiOK: 下载 mirai-core-qqandroid 版本 1.2.2
2020-09-06 19:49:02 I/MiraiOK: 下载 mirai-console 版本 1.0-M4-dev-3
2020-09-06 19:49:02 I/MiraiOK: 下载 mirai-console-pure 版本 1.0-M4-dev-3
panic: open libs/mirai-console-1.0-M4-dev-3.jar: permission denied

goroutine 23 [running]:
main.save(0xc0001ae900, 0xc00001c570, 0x23, 0xc00059cee0)
        /home/runner/work/MiraiOK/MiraiOK/download.go:26 +0x109
main.updateMirai.func1(0x1, 0xc000196000, 0xd, 0xc000196010, 0xc)
        /home/runner/work/MiraiOK/MiraiOK/update.go:67 +0x3d9
created by main.updateMirai
        /home/runner/work/MiraiOK/MiraiOK/update.go:62 +0x2a5

必须以root/sudoer运行。以下情况均为sudo运行

下载miraiOK后,以sudo运行第一次,正常的报无法启动(尝试下载进入libs)和更新到最新版本后,再次运行miraiOK,报

Bus error.

解决Bus error问题可通过删除libs/目录实现。由于libs/目录权限问题(libs/目录权限在近期版本由于未知原因,为644(drw-r--r--)),需 sudo rm -r libs/

更新到最新版本miraiOK后,可以通过sudo ./miraiOK_linux-amd64启动(第一次报错下lib,重启后正常运行)

@XZhouQD
Copy link
Author

XZhouQD commented Sep 6, 2020

补充:

经过本人测试,权限问题大概率锁定在创建libs/目录:

以非root用户第一次运行miraiOK,创建的libs/目录,是root:root,权限644,没有以普通用户创建,而是root用户配644

这导致非root用户运行的miraiOK无法把下载的lib文件和version.txt写入root+644的libs/目录(权限不足,只有read)

此时,只要将libs/这个目录的权限设置为755,就可以继续以非root用户第二次运行miraiOK,这次jar和txt就能写入libs/文件夹,并且权限自动继承为755,然后重启,第三次运行直接就开起来了。

此前的version.txt权限为644(即使代码里设置了777,也是644)可能来自于libs/目录权限为644导致的权限继承。

@XZhouQD
Copy link
Author

XZhouQD commented Sep 6, 2020

临时解决方案:
首次运行miraiOK后,修改libs/目录的权限:

sudo chmod 755 libs

之后就可以继续以普通用户运行miraiOK了

@XZhouQD
Copy link
Author

XZhouQD commented Sep 6, 2020

Fixed: 版本20200906.200346

正常啦,普通用户运行miraiOK创建的libs的owner和权限组都正确了,回到了2次运行miraiOK就开起来的状态了

@XZhouQD XZhouQD closed this as completed Sep 6, 2020
@LXY1226 LXY1226 changed the title Linux-AMD64版权限问题 Linux权限问题 Sep 6, 2020
@LXY1226
Copy link
Owner

LXY1226 commented Sep 6, 2020

总之不要乱用奇怪的用户初始化😃

@LXY1226 LXY1226 reopened this Sep 6, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants