응 아니야

안녕하세요. 당이천입니다.

 

권한이 무엇인가? 왜 나누어야 하는가?

권한[權限,permissions(퍼미션)] '힘이 닿는 정도'

 

서버에 화폐도 넣고 PK도 넣고 상점도 넣고 TP도 넣으셨습니까? 손님/일반/VIP를 나누어서 컨텐츠를 이용할 수 있도록 하고 싶으십니까? 이러한 기능을 지원하는 플러그인들은 권한이 있으면 되고, 없으면 '권한 없음'처럼 안 되도록 만들어져있습니다. 그 권한에 자기만의 이름을 붙여놨고요.

 

이 이름들을, 원하는 플레이어에게 주거나 빼앗는 플러그인이 [권한 플러그인]이라고 할 수 있고, 그 중 가장 대중적인 플러그인이 LuckPerms 입니다. 국내에선 럭펌이라고 부르는 것 같습니다. 저도요. 이 럭펌은 GUI도 지원하기 때문에 초보자도 쉽고 편리하게 사용할 수 있다는 장점이 있습니다.

 

바닐라 명령어 권한 편에서도 권한을 얘기했는데, 사실 바닐라 권한만으로 플러그인이 지원하는 모든 기능을 플레이어마다 세세하게 나눌 수는 없습니다. 이것은 또 하나의 권한으로 조금은 다른 영역이에요. OP를 가진 플레이어라고 하더라도 플러그인이 거부하도록 할 수도 있습니다.

 

권한은 플러그인 멀티서버의 기본 중의 기본이자 정수입니다.

 

언제나 플러그인을 다운로드부터 서버 (재)시작이 플러그인 적용의 시작입니다.

글쓴시점 1.7 ~ 1.20을 지원하며 5.4.102버전입니다.

어차피 spigotmc에는 안정버전이 업로드되므로 최신버전 받으시면 됩니다.

 

 

 

폴더도 생성됐고,

 

 

콘솔에도 잘 떴으니 권한을 나눌 준비는 마쳤습니다.

그럼 이제 권한대로 기능을 나눠둔 플러그인을 넣고 실제로 작동시켜 보겠습니다.

 

테러복구 플러그인으 CO로 테스트 해보기

저는 가장 인기있으면서 필수로 꼽히는 불세출의 명작 CoreProtect를 넣겠습니다.

블록/엔티티의 상호작용을 시간별로 저장하고 읽거나 되돌릴 수 있는 플러그인입니다.

(거의 모든 것이 항상 기록되기 때문에 월드에딧/레드스톤 무한반복장치를 기록하느라 용량이 떼로 불어나기도 합니다. 주로 테러 복구(방지)용으로 쓰이니 이런 것은 빼고 주의해서 셋팅하는 것이 좋습니다.)

 

도르마무나 범위를 지정해서 데이터 읽기는 오피만 써야합니다. 되돌리기야 말할 것도 없고, 범위 지정해서 읽기는 운영하는 입장에서 썩 유쾌한 일이 아닙니다. 게다가 읽기는 DB를 크고 길게 읽어야 해서 서버 자원을 갉아먹습니다. 렉의 원인이 될 수 있습니다. 고로 아무나 쓸 수 있도록 해도 큰 문제가 되지 않을만한 기능은 플러그인의 버전 정보를 반환하는 /co version이나 블록,엔티티 [단 하나]와의 상호작용을 언제 누가 어떻게 했는지 알 수 있는 /co inspect 기능에 한하여 모든 유저에게 줘보도록 하겠습니다.

 

사실 /co version은 이미 디폴트입니다.

 

게임에 접속할 필요도 없습니다. 콘솔에서 명령어만으로 줄 수 있고, 앞서 말했듯 GUI로도 줄 수 있습니다. 저는 GUI > 명령어 순서로 해보이겠습니다.

 

 

1. 콘솔에 lp editor를 보냅니다.

잠시 후 럭펌 공홈으로부터 임시 페이지가 발급됩니다.

2. 주소를 복사해서 접속합니다.

 

 

자신의 웹브라우저와 서버 간의 신뢰여부를 묻습니다. 신뢰하므로 명령어를 클릭해서 클립보드에 복사합니다.

 

 

콘솔에 명령어를 붙여넣고 보냅니다. 웹편집기와 서버를 연결함에 성공했다 라는 메세지를 확인합니다.

 

저는 글쓰면서 했더니 세션이 만료돼버렸습니다. 다시 시도했고, 성공했습니다.

 

준비완료, 근데 편집기는 어떻게 쓰지?

 

 

신뢰과정을 마치면 그룹(또는 사용자) > default(또는 유저이름) > 권한추가부분에 권한노드 입력 > 추가 > 적용 순서로 권한을 줄 수 있습니다. default 그룹은 따로 뭔가 설정하지 않은 최초의 상태에서 서버에 접속하는 모든 유저가 속하는 그룹을 말합니다.

 

 

권한 추가 부분을 클릭하면 입력창 위로 수많은 영어가 뜨는데 이게 권한노드(node, 어느 한 지점, 보통 segment와 짝을 이룬다.)입니다. 여기서 찾아서 입력하거나 직접 타이핑하여 입력할 수 있습니다.

 

 

하위 노드가 여러개라면? 전체를 하나씩 다 써줘야 하는 거냐고~

아닙니다. bukkit.command.help를 예로 들면

bukkit이 최상위 노드이고

command가 bukkit의 하위 노드이고

help가 command의 하위 노드입니다.

나무 뿌리 줄기 잎으로 이어지는 것과 같아요.

 

근데 나뭇잎이 수십개라면요?

하나씩 전부 입력하는 짓은 하고싶지가 않습니다.

그래서 사용하는 것이 와일드 카드입니다.

여기선 별표(*)로 표현합니다.

 

아래처럼 command의 하위 노드가 100개일 때

----------------------------

bukkit.command.0

bukkit.command.1

..

..

bukkit.command.98

bukkit.command.99

----------------------------

bukkit.command.*

이렇게 입력하면 0~99까지의 권한이 모두 default에게 주어집니다.

 

※주 의 사 항※

귀찮다고 하위 명령어 다 넣어주다가 실수하면 안 주고 싶은 기능까지 다 쓰고 다니는 망섭 되는 수가 있습니다. 다 넣어줄 거면 절대 안 줄 권한은 부정 값을 주세요.

 

 

목록이 너무 긴데? 내가 주고 싶은 권한의 이름은 어떻게 찾아야 하지?

입력과 동시에 목록 중 검색이 이뤄지기 때문에 대강 플러그인 이름이나 플러그인 제작자의 이름을 입력하면 나옵니다.

영어가 된다면 해석과 동시에 저장까지 다이렉트겠지만 그렇지 않거나 권한 이름을 대~충 넣어버린 경우에는 개발자의 설명을 굳이굳이 찾아 읽어야할 수 있습니다. /플러그인이름 help를 입력하면 권한 노드를 친절히 알려주는 플러그인이 있는가 하면 그렇지 않은 플러그인도 많기 때문에 플러그인을 다운 받을 때에는 항상 위키페이지나 깃허브 페이지 링크가 있는지 동시에 확인하시기 바랍니다.

 

본론으로 돌아와서 코어프로텍트의 권한노드를 알아보겠습니다. 헬프에 없고, docs에 권한노드가 정리되어 있습니다.

 

 

이곳에 정리되어 있습니다.

 

/co i 명령어도 사실 오피 전용입니다. 하지만 읽기 범위가 한 번에 블록 하나, 엔티티 하나로 제한되어 있기 때문에 서버에 큰 부담을 주기가 어렵고 오피의 직접적인 개입 없이도 사건사고의 전말을 당사자가 쉽게 파악할 수 있어서 제가 서버를 운영할 때는 모두에게 공개하곤 했습니다.

 

저대로 럭펌에 입력해보도록 합니다.

 

 

ins 까지만 입력해도 ins를 포함하는 노드를 보여주므로 위에 뜬 걸 클릭하거나 그냥 노드 전체를 끝까지 입력하고 추가를 누르시면 됩니다. 창 중간 부분에 노드가 추가되고 이후에 적용 버튼을 누르시면 되는데

 

 

적용을 반드시 눌러야만 실제로 서버에 적용되므로 반드시 꼭꼭 눌러주세요.

 

 

1개 추가됐고 삭제 없으며 추가된 노드가 inspect(true)로 표시됩니다.

 

그럼 default이고 op 권한을 뺏은 제가 게임에 접속해서 권한이 있는지 없는지 확인해보겠습니다.

 

 

오피 뺏고

 

인스펙트 권한 주기 잘 됐습니다. /co i 를 입력하면 껐다 켰다 합니다.

 

활성화 됐으니  부쉈던 블록 좌/우 클릭해봅니다. 0.33~0.23분 전에 돌 블록을 부쉈다가 다시 설치했습니다.

성공!

 

권한을 다시 회수하려면

 

선택 > 삭제 > 적용 하시면됩니다. 뻔하고 쉽죠?

 

상위 > 하위 > 하위 >  >  > 순으로 권한을 상속할 수도 있고,

기한을 정할 수도 있으며 권한에 조건(컨텍스트)을 달 수도 있습니다.

 

GUI로 권한을 주는 방법에 대해서 알아봤습니다.

 

명령어로 권한 주기

LuckPerms 의 앞글자 lp로 줄여씁니다.

 

/lp group default permission set coreprotect.inspect

 

 

편집기에서 봤던 그대로 그룹 > 디폴트 > 권한 > 설정 > 권한노드 순으로 입력합니다. 여기까지 입력은 필수이고 노드 뒤에 값(true/false), 조건(컨텍스트)을 넣을지는 선택입니다.

 

럭펌 위키 페이지 링크를 남겨드릴테니 들어가셔서 정독해보세요.

 

 

서바이벌에서만 인스펙트를 쓸 수 있도록 권한에 조건을 걸어보겠습니다.

 

 

인자에 없던 true와 gamemode=survival을 추가하고 오피를 뺀 다음

 

입력해보면 성공입니다.

 

주의사항이 있습니다. 같은 권한노드라도 삭제하지 않으면 이전에 적용했던 권한노드가 자동으로 삭제되질 않습니다. 중복으로 들어갑니다. 정말 필요한 경우가 아니라면 이전 것을 지워서 하나만 남기세요.

 

이제 개발자가 숨겨둔(?) 권한 노드만 잘 찾아내면 상시/기한/조건을 걸어서 권한을 줄 수 있는 서버장이 되셨습니다.

 

감사합니다.

공유하기

facebook twitter kakaoTalk kakaostory naver band