MC群组服开服教程系列四: 权限组件luckperms
权限插件简介
在代理端的讲解中,我们知道可以通过配置中permissions配置片段将组和权限进行绑定,通过group配置完成用户和group的绑定。
在服务器中,用户执行一个指令或者完成一些操作,服务端需要判定用户的是否有权限的,如果一个一个给用户添加权限是非常麻烦的事情,通过设置组,给组设置默认的权限,后面我们只需要给用户添加到特定组即可,用户就可以拥有这个组的全部权限。
权限插件主流的有2个,groupmanager和 Luckperm,我这里推荐Luckperm,官方文档: luckperm 。
数据库的安装
这里我们选择mariadb server ,你可以选择mysql。基本一样的。
# 安装数据库软件
yum install mariadb-server mariadb
# 创建基本目录和授权
# mkdir /home/mc/mysql/
# chown mysql:mysql -R /home/mc/mysql
# 这里有需要的话,可以修改下配置文件,修改下数据库数据文件存放目录和最大连接数。
cat /etc/my.cnf.d/mariadb-server.cnf
[mysqld]
datadir=/home/mc/mysql/data
socket=/home/mc/mysql/mysql.sock
log-error=/home/mc/mysql/mariadb.log
pid-file=/home/mc/mysql/mariadb.pid
max_connections=10000
# 设置数据库开机启动 systemctl enable mariadb
# 启动数据库 systemctl start mariadb
# 查看启动状态 systemctl status mariadb
数据库启动成功后,剩余我们需要创建一个账号来进行管理,我这里推荐的一个数据库管理软件是dataGrip,下面我们创建一个mc账户。
-- 需要你在服务器的终端来执行的,输入mysql进入mysql的终端,然后执行如下sql语句
CREATE DATABASE d_luckperms CHARACTER SET utf8 COLLATE utf8_general_ci; CREATE USER 'mc'@'127.0.0.1' IDENTIFIED BY 'mc_tech_by_panda'; GRANT ALL ON *.* TO 'mc'@'127.0.0.1';
使用工具进行连接
设置一个ssh配置
设置使用ssh隧道,比较安全。
配置数据库账户和密码进行连接
数据库这块还挺复杂的, 有啥问题,可以在评论区进行讨论。
luckperms的安装
luckperm的下载地址 luckperm 可以进行下载,我们需要下载2个版本的, 一个是代理端需要的版本,一个是paper端需要的版本。
具体安装如下
我们进行文件的下载和进行配置变更。
# 下载bc端的权限组件 wget https://download.luckperms.net/1467/bungee/loader/LuckPerms-Bungee-5.4.58.jar # 重启服务,我们重启下服务,让插件生存默认的配置文件 systemctl restart mc_wf # 查看插件目录,我们可以已经生存的默认的配置文件了。需要等服务完整起来才有配置文件。 [root@mc plugins]# ll total 1288 drwxr-xr-x 4 root root 106 1月 14 17:10 LuckPerms -rw-r--r-- 1 root root 1315643 1月 6 06:35 LuckPerms-Bungee-5.4.58.jar # 进入插件目录 cd LuckPerms/ # 保持服务的默认配置文件 cp config.yml config.yml.default
修改配置和more配置对比图如下。
这里先简单说明下对应的配置说明:
- server: 制定server name 方便后面授权可以控制到具体分区基本授权的。比如说主城可以设置为zc。
- storage-method: 就是权限信息存放的位置,我们是mariadb。
- address: 数据库的地址
- database: 使用哪个数据库
登陆游戏测试下
我们在游戏内执行下/server 指令,发现提示没有权限执行。那是因为原来代理端使用的静态的授权方式,我们使用数据库后,没有给他默认的权限,他就没有办法校验我们通过了。
我们需要创建几个分组,然后给分组设置下不同的权限即可。在做权限添加之前,我们首先需要再控制台给我们自己(也就是腐竹自身)一个全部的权限。
# 给我们自己的账户添加一个权限组的全部权限, 注意了,在代理端执行lp命令需要使用lpb的。避免操作权限到特定分区的。 [root@mc ~]# /etc/init.d/mc_wf conn "lpb user panda permission set luckperms.* true" mc=wf # 给我们账户添加全部权限 [root@mc ~]# /etc/init.d/mc_wf conn "lpb user panda permission set * true" mc=wf
下面我们创建一个默认组
# 先创建我们几个预设的组。 其中default组默认就存在了,我们就不创建了。 /lpb creategroup owner 10000 Owner /lpb creategroup op 1000 OP /lpb creategroup svip 200 SVIP /lpb creategroup vip 100 VIP /lpb creategroup lv3 3 Lv3 /lpb creategroup lv2 2 Lv2 /lpb creategroup lv1 1 Lv1 # 修改default的显示名字为Lv0,保持和其他的等级显示一致。 /lpb group default setdisplayname Lv0 # 创建几个实际的权限组。wf:代理端权限分组 /lpb creategroup g-wf 0 g-wf /lpb group g-wf permission set bungeecord.command.server true /lpb group g-wf permission set bungeecord.command.list true # 创建管理组 /lpb creategroup ga-wf 0 ga-wf /lpb group ga-wf permission set bungeecord.command.* true # 设置权限组的依赖关系 /lpb group default parent add g-wf /lpb group lv1 parent add default /lpb group lv2 parent add lv1 /lpb group lv3 parent add lv2 /lpb group vip parent add lv3 /lpb group svip parent add vip /lpb group op parent add vip
# 设置组的前缀,后面会大量需要的
/lp group owner meta addprefix 10000 "&4&l[Owner]&r"
/lp group op meta addprefix 1000 "&4&l[OP]&r"
/lp group svip meta addprefix 200 "&c&l[SVIP]&r"
/lp group vip meta addprefix 100 "&c&l[VIP]&r"
/lp group lv3 meta addprefix 3 "&7&l[Lv3]&r"
/lp group lv2 meta addprefix 2 "&7&l[Lv2]&r"
/lp group lv1 meta addprefix 2 "&7&l[Lv1]&r"
/lp group default meta addprefix 0 "&7&l[Lv0]&r"
我们给其他的分区也设置下
我们目前有个主城分区、登陆分区、生存1区,我们进行一下设置。
# 下载文件 wget https://download.luckperms.net/1467/bukkit/loader/LuckPerms-Bukkit-5.4.58.jar# 编辑权限的配置文件, 类似代理端的配置,注意server修改为分区的简写名字 [root@mc LuckPerms]# vim config.yml # 重启登录分区 [root@mc LuckPerms]# systemctl restart mc_dl # 查看当前目录 [root@mc LuckPerms]# pwd /home/mc/instances/dl/plugins/LuckPerms # 将插件和配置文件目录,给主城复制一份。 [root@mc LuckPerms]# cp -r /home/mc/instances/dl/plugins/LuckPerms* /home/mc/instances/zc/plugins/ # 重启主城 [root@mc LuckPerms]# systemctl restart mc_zc
关于luckperm授权和组创建的这个部分,我们这里不需要做,因为我们的分区连接的是同一份数据库,使用的同一个存储的,在一个分区做操作就可以了。其他的分区都是可以获取到最新的数据的。
Luckperms指令使用说明
官方帮助文档在这里 luckperm
权限树查看
游戏内执行/lp tree 即可,服务会给你提供一个url 你打开url即可看到当前服务的权限树列表
权限树图
编辑权限
游戏内输入 /lp editor 即可
通过图形化界面,可以直接给添加组,给组添加权限,不过我个人不喜欢这种web方式。喜欢指令操作方式的,可以看看下面的。
用户组的创建
/lpb creategroup 组名字 组的权重 组显示名字 /lpb creategroup lv3 3 Lv3
用户组权限的添加
权限添加有2种,临时的和永久的。
# 永久权限添加 /lp group 要修改的组名字 permission set 权限节点 true /lp group default permission set bukkit.broadcast true # 临时权限添加 /lp group 要修改的组名字 permission settemp 权限节点 true 时间 /lp group default permission settemp bukkit.broadcast true 7d # 限定上下文的,比如给用户在特定分区有特定节点的权限。 /lp group default permission set bukkit.broadcast true server=dl
用户组权限组的继承
我给lv1设置好权限,其实我不想再给lv2重复设置权限,我只想让lv2继承lv1的权限,然后我额外再给lv2一些权限的话,我们就可以使用继承能力。
/lpb group lv2 parent add lv1
用户组的调整
我想将用户从lv1调整到lv2组,怎么操作?
# 不建议这种 /lp user panda parent set <目标组> # 推荐 /lp user panda parent add lv2 /lp user panda parent remove lv1
权限的debug
不知道一个操作需要什么权限了,可以如下方式获取指令需要的权限节点是啥。
- /lp verbose record [筛选条件]
- 执行一系列需要权限的操作
- /lp verbose paste
- 打开生成的 URL
常见问题
posted on 2023-01-14 18:50 LinuxPanda 阅读(3466) 评论(0) 编辑 收藏 举报