扩大
缩小

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  阅读(2116)  评论(0编辑  收藏  举报

导航