Guida Come settare PermissionsEX

Stato
Discussione chiusa ad ulteriori risposte.

AlessioDP

Sviluppatore
Amministratore
30 Gennaio 2012
4,899
216
966
1,801
Ultima modifica:
logo_sketch.png

In questa guida mostrerò come settare PermissionsEX.

Prima di tutto: Perchè PEX, esistono anche altri buoni Permissions Manager come bPermissions, Essentials Group Manager o PermissionsBukkit.
Ho scelto PEX perchè secondo me è il miglior Permissions Manager su Bukkit, non è ne tanto facile ne tanto complicato, e permette di settare praticamente qualsiasi cosa.

PermissionsEX è un plugin che permette di inserire un sistema di permessi nel tuo server. I permessi servono per dare, o bloccare, l'accesso ad alcune cose (Come cacciare o bannare le persone, creare o eliminare fazioni).
E' un plugin essenziale per un server Bukkit, senza di questo non è protetto.
Svolge un ruolo importantissimo nel funzionamento del server.

Questa guida sarà divisa in diversi paragrafi:
- Premesse per la configurazione ottimale
- Installazione di PEX (FACILE)
- Settare PEX tramite config (MEDIO)
- Settare PEX tramite comandi (FACILE)
- Inserire gli utenti nei gruppi tramite config (MEDIO)
- Inserire gli utenti nei gruppi tramite comandi (FACILE)
- Settaggio avanzato di PEX (DIFFICILE)



PS: Per semplificare la lettura di questa guida sono stati aggiunti degli esempi tramite il tag CODE, nella settaggio tramite config si leggono rossi i codici nuovi (Quelli modificati rispetto al codice precedente)


Premesse per la configurazione ottimale

Prima di installare PEX, o la maggior parte dei plugin, bisogna avere strumenti che permettono la modifica dei file di configurazione.
Quindi munitevi di Notepad++ (Sia Windows che MAC)

Questo programma serve per modificare i files .yml, che sono le configurazioni di tutti i plugin.

Per renderlo "ottimo" nel settaggio di PEX bisogna sistemare alcune opzioni.
Aprite il programma, tramite il menù a tendina in alto selezionare Configurazione e aprire Preferenze...
Selezionate la voce Tabulazioni e attivare "Sostituisci con spazi", fare attenzione che i spazi siano 4.

Per MAC o GNU/Linux si può utilizzare l'editor di testo pre-installato. Facendo attenzione a non premere mai TAB ma inserire i spazi manualmente.

Installazione di PEX (FACILE)

Per scaricare PEX dirigersi sul sito del progetto (Link), una volta finito di scaricare inseritelo nella cartella plugins del server e avviate il server.
Una volta avviato il server si dovrebbe creare una cartella PermissionsEX (Dentro plugins), lì dentro si trova config.yml e permissions.yml.

Il file config.yml serve per configurare le basi di PEX e non i permissions.
Il file permissions.yml serve invece per configurare i permissions, compresi gli utenti.




Settare PEX tramite config (MEDIO)

Per creare un gruppo bisogna aprire il file permissions.yml con Notepad++.

Prendiamo come esempio il gruppo default (Automaticamente creato dentro il file):
Dentro questo gruppo troviamo scritte alcune opzioni, default e permissions.

default serve per selezionare il gruppo base (Dove gli utenti appena entrati andranno)
permissions è la lista dove inseriremo i nostri permessi.
Codice:
groups:
  default:
    options:
      default: true
    permissions:
    - modifyworld.*

Aggiungere Permesso
Per aggiungere un permesso bisogna aggiungere un altra riga sotto "- modifyworld.*", ed inserire il permesso.
Codice:
groups:
  default:
    options:
      default: true
    permissions:
    - modifyworld.*
    - nuovo.permesso
Attenzione: Mi raccomando che lo spazio dal trattino alla "base" siano SOLO SPAZI (In questo caso 4 spazi)

Così facendo abbiamo inserito il nostro primo permesso.
Per aiutarvi con la configurazione vi elenco un altro esempio per facilitarvi il settaggio:
Codice:
groups:
  default:
    options:
      default: true
    permissions:
    - modifyworld.*
    - bukkit.command.kill
    - bukkit.command.tell
    - bukkit.command.list
In pratica l'utente ha il permesso di fare i comandi "/kill", "/tell" e "/list".
Se si vuole aggiungere TUTTI I PERMESSI, bisogna dargli '*':
Codice:
groups:
  default:
    options:
      default: true
    permissions:
    - '*'


Aggiungere gruppo
Per aggiungere un gruppo diverso da quello di default si può semplicemente copiare quello di default e rinominare il gruppo.
Codice:
groups:
  default:
    options:
      default: true
    permissions:
    - modifyworld.*
    - nuovo.permesso
  copia_default:
    options:
       default: true
    permissions:
    - modifyworld.*
    - nuovo.permesso
Una volta copiato mettiamo false su default, così che il server non dia errore (Si può tenere massimo un gruppo di default).

Per rinominare il gruppo si deve modificare la prima linea del gruppo (In questo caso copia_default | SENZA LEVARE I DUE PUNTI)
Codice:
groups:
  utente:
    options:
      default: true
    permissions:
    - modifyworld.*
    - nuovo.permesso
  admin:
    options:
       default: false
    permissions:
    - modifyworld.*
    - nuovo.permesso
Se non sapete quali sono i permessi dei plugin da inserire, è semplice, nella pagina del download quasi sempre si trova una lista dei permessi. (Ogni tanto nella wiki del plugin)
Links:
Essentials Permissions (Link)
Authme Permissions (Link)
Permessi base di bukkit (Link)




Settare PEX tramite comandi (FACILE)

Qui sotto elencherò tutti i comandi necessari per creare i gruppi di PEX:
pex groups list - Mostra lista dei gruppi
pex group <Gruppo> prefix [nuovoPrefix] - Mostra/Setta il Prefix al gruppo
pex group <Gruppo> suffix [nuovoSuffix] - Mostra/Setta il Suffix al gruppo
pex group <Gruppo> create - Crea il gruppo
pex group <Gruppo> delete - Elimina il gruppo
pex group <Gruppo> user add <Utente> - Aggiunge al gruppo l'utente
pex group <Gruppo> list - Mostra la lista dei permessi del gruppo
pex group <Gruppo> add <Permesso> - Aggiunge il permesso al gruppo
pex group <Gruppo> remove <Permesso> - Rimuove il permesso al gruppo
pex group <Gruppo> set <Opzione> <Valore> - Setta l'opzione del gruppo
Per facilitare la lettura aggiungerò degli esempi che "imiteranno" la console.

All'avvio del server ci sta già un gruppo di base, "default".
Per mostrare la lista dei gruppi esistenti fare: pex groups list
Codice:
[INFO]: Registered groups:
[INFO]:     default  #0  []
Questo qui è il gruppo di base, dove andranno tutti gli utenti entrati nel server.

Per creare un nuovo gruppo fare il comando: pex group <Nome del gruppo> create
E fare pex groups list per vedere se è stato creato.
Codice:
[INFO]: Group admin created!
[INFO]: Registered groups:
[INFO]:     default  #0  []
[INFO]:     admin  #0  []

Per eliminare un gruppo fare il comando: pex group <Nome del gruppo> delete
E fare pex groups list per vedere se è stato eliminato.
Codice:
[INFO]: Group admin removed!
[INFO]: Registered groups:
[INFO]:     default  #0  []

Per leggere le informazioni sul gruppo che abbiamo create bisogna fare: pex group <Nome del gruppo>
Codice:
[INFO]: 'admin' inherits the following groups:
[INFO]: Group admin's permissions:
[INFO]:
[INFO]: Group admin's Options:
Al momento i permessi e le opzioni non ci sono.

Per aggiungere un permesso al gruppo fare: pex group <Nome del gruppo> add <Permesso>
Facciamo come esempio il comando per uccidere (pex group admin add bukkit.command.kill), e poi facciamo pex group <Gruppo>, per vedere se il permesso è stato inserito.
Codice:
[INFO]: Permission "bukkit.command.kill" added to group "admin"!
[INFO]: 'admin' inherits the following groups:
[INFO]: Group admin's permissions:
[INFO]: 1) bukkit.command.kill (own)
[INFO]: Group admin's Options:

Per rimuovere un permesso al gruppo fare: pex group <Nome del gruppo> remove <Permesso>
Codice:
[INFO]: Permission "bukkit.command.kill" removed from group "admin"!
[INFO]: 'admin' inherits the following groups:
[INFO]: Group admin's permissions:
[INFO]:
[INFO]: Group admin's Options:




Inserire gli utenti nei gruppi tramite config (MEDIO)

Il file permissions.yml si divide in due gruppi: groups e users.
Automaticamente si genera groups, con dentro il gruppo default, Invece non si genera automaticamente il gruppo users.

Per inserire il nostro nick dentro un gruppo dobbiamo creare il nostro utente nel file:
Codice:
groups:
  default:
    options:
       default: true
    permissions:
    - modifyworld.*
  admin:
    permissions:
    - bukkit.command.kill
users:
  alessiodp:
    group:
    - admin
Con questa configurazione alessiodp si troverà nel gruppo Admin.

Facciamo molto attenzione alla tabulazione degli utenti:
Il gruppo users si trova alla colonna 1 (Nessuno spazio)
Il nickname si trova alla colonna 3 (2 spazi)
Il gruppo si trova alla colonna 5 (4 spazi)

Altro esempio:
Codice:
groups:
  default:
    options:
       default: true
    permissions:
    - modifyworld.*
  helper:
    options:
       default: false
    permissions:
    - essentials.fly
  admin:
    permissions:
    - bukkit.command.kill
users:
  alessiodp:
    group:
    - admin
  alessiodp2:
    group:
    - admin
  alessiodp3:
    group:
    - helper

Non è necessario inserire tutti gli utenti del server. Quelli non inseriti, vanno automaticamente nel gruppo di default.




Inserire gli utenti nei gruppi tramite comandi (FACILE)

Qui sotto elencherò tutti i comandi importanti per settare gli utenti nei gruppi:
pex users - Mostra la lista degli utenti settati
pex user <Utente> - Mostra le informazioni dell'utente
pex user <Utente> prefix [Nuovo Prefix] - Mostra/setta il prefix di un utente
pex user <Utente> suffix [Nuovo Suffix] - Mostra/setta il suffix di un utente
pex user <Utente> add <Permesso> - Aggiunge un permesso all'utente
pex user <Utente> remove <Permesso> - Rimuove un permesso all'utente
pex user <Utente> group set <Gruppo> - Inserisce l'utente nel gruppo
pex user <Utente> group remove <Gruppo> - Toglie l'utente dal gruppo


Per facilitare la lettura aggiungerò degli esempi che "imiteranno" la console.

Per mostrare la lista degli utenti settati fare: pex users
Codice:
[INFO]: Currently registered users:
[INFO]: alessiodp <Last known username: alessiodp> [default]
L'utente alessiodp l'ho gia creato in precedenza per farvi vedere cosa appare se si fa il comando pex users.

Per aggiungere un utente ad un gruppo fare il comando: pex user <Nome dell'utente> group set <Nome del gruppo>
Alla fine facciamo il comando pex users per vedere se è cambiato qualcosa.
Codice:
[INFO]: User groups set!
[INFO]: Currently registered users:
[INFO]: alessiodp <Last known username: alessiodp> [admin]

Per rimuovere un utente da un gruppo fare il comando pex user <Nome dell'utente> group remove <Nome del gruppo>
Alla fine facciamo il comando pex users per vedere se è cambiato qualcosa.
Codice:
[INFO]: User "alessiodp/alessiodp" removed from group "admin"!
[INFO]: Currently registered users:
[INFO]: alessiodp <Last known username: alessiodp> [default]

E' anche possibile aggiungere permessi specifici all'utente invece di inserirlo solo nel gruppo. Comandi per farlo si trovano nella lista sopra citata.




Settaggio avanzato di PEX (DIFFICILE)

Questo capitolo di questa guida mostrerà diverse cose possibili con PEX:
- Inheritance dei permessi
- Permessi per mondo
- Inheritance fra mondi
- Regular Expressions (REGEX)


Inheritance dei permessi
La maggior parte dei server ha molti gruppi settati, ognuno con i propri permessi.
L'inheritance serve per minimizzare lo spazio usato dal gruppo. Infatti con esso puoi creare dei veri gradi fra i gruppi.
Si utilizza per inserire gli stessi permessi di un gruppo senza riscriverli tutti.

Tramite configurazione si imposta così:
Codice:
groups:
  Membro:
    options:
      prefix: '[Membro] '
      default: true
    permissions:
    - modifyworld.*
  VIP:
    options:
       prefix: '[VIP] '
[COLOR=#ff0000]    inheritance:
    - Membro[/COLOR]
    permissions:
    - essentials.fly
  Moderatore:
    options:
       prefix: '[Moderatore] '
[COLOR=#ff0000]    inheritance:
    - VIP[/COLOR]
    permissions:
    - essentials.gamemode
Facendo così il gruppo VIP ha gli stessi permessi del gruppo Membro + quelli settati nel suo gruppo, stessa cosa vale per il gruppo moderatore (Prende gli stessi permessi del VIP, quindi anche dei Membri)


Permessi per mondo e Inheritence per mondo
Aggiungere i permessi per mondo è uguale all'aggiungerli per gruppo, con la sola differenza di dover aggiungere una stringa in più.

Mettiamo caso che vogliamo poter far volare gli utenti nell'end:
Codice:
groups:
  Membro:
    options:
      prefix: '[Membro] '
      default: true
    permissions:
    - modifyworld.*
[COLOR=#ff0000]     worlds:
       world_the_end:
         permissions:
         - essentials.fly[/COLOR]
Così facendo l'utente potrà in tutti i mondi utilizzare il permesso modifyworld.*, mentre nel mondo world_the_end potrà ANCHE volare.

Per creare un inheritence fra mondi invece bisogna utilizzare inheritence invece che permissions:
Codice:
groups:
  Membro:
    options:
      prefix: '[Membro] '
      default: true
    permissions:
    - modifyworld.*
    worlds:
      world_the_end:
        permissions:
        - essentials.fly
  VIP:
    options:
         prefix: '[VIP] '
    worlds:
      world_the_end:
        inheritence:
        - Membro
Ora l'utente VIP potrà volare nel mondo world_the_end.

REGEX (Regular Expressions)
PEX supporta 4 diversi REGEX:
- Le parentesi ["( )"] per indicare un gruppo
- Le parentesi graffe ["{ }"] per i pattern (Non ne parleremo in questa guida)
- La barra verticale [" | "] per indicare diverse cose (La lettera "o"/"oppure")
- Il trattino [" - "] per indicare una parte ad un altra (Per esempio dal numero 1 al 5)
- Il trattino prima del permesso [" -<permesso> "] si utilizza per rendere negativo il permesso

Prima di tutto: dove si utilizzano i REGEX?
I regex si utilizzano per scrivere un permesso
, nella maggior parte dei casi si utilizza per permessi precisi di protezione come Modifyworld.
Gli esempi che farò più sotto saranno dei permessi di ModifyWorld, un plugin di PEX.

Farò un grande esempio che fa rientrare tutte i REGEX che abbiamo detto:
Codice:
-modifyworld.blocks.(destroy|place)[.(1-4|12)
Con questo permesso cosa si può fare?
Andando in ordine per colore:
- Il primo trattino indica che il permesso dovrà essere negativo (Quindi invece di poter usare il blocco, non potrà usarlo)
- La prima parentesi apre un gruppo [" (destroy|place) "] quindi è già come se si fossero creati 2 permessi sulla stessa linea
- Dentro il gruppo ci sono 2 permessi [" destroy|place "], staccati da un | ("or"). Ricapitolando l'utente non potrà nè piazzare nè distruggere
- La seconda parentesi serve per chiudere il gruppo
- Successivamente se ne riapre un altra che ha la stessa funzione di quella precedente ma indica dei blocchi.
- Il trattino fra 1 e 4 indica tutti i numeri dall'1 all 4 (Quindi 1-2-3-4), dove poi si aggiunge il 12
Questo è quello che fa il permesso con i REGEX.

Il permesso tradotto in lingua dice:
L'utente non può nè distruggere nè piazzare i blocchi dall'1 al 4 e il 12.


Attenzione: Nel caso del trattino ad inizio permesso, ci sta un modo diverso per inserirlo, in base agli altri permessi deve essere inserito prima di essi, per sicurezza consiglio di metterli sempre sopra tutti i permessi

Esempio d'inserimento del permesso
Codice:
Membro:
  options:
   prefix: '[Membro] '
  permissions:
  - -modifyworld.blocks.(destroy|place).(1-4|12)
  - modifyworld.*

Altri esempi:
Codice:
modifyworld.blocks.interact.(dispenser|chest|furnace)
Codice:
-modifyworld.items.craft.(276|278)
Codice:
-modifyworld.items.craft.(diamond_sword|diamond_pickaxe)


Guida scritta completamente dal moderatore AlessioDP per Inforge.net.
Vietata la copia senza il permesso e soprattutto senza crediti di AlessioDP e Inforge.net.


Non mi assumo nessuna responsabilità.
 
C'è un errore :)

Vediamo se te ne accorgi :asd:

(no a livello grammaticale ma a livello pratico e che hai sbagliato in tutti i codici)
 
[MENTION=172554]UltraShock97[/MENTION] Invece di dire che ci sono errori, può sottolinearli lei?
 
logo_sketch.png

In questa guida mostrerò come settare PermissionsEX.
...

bella guida.. a volte capita che fai un errore (spazio,punto o qualsiasi cosa di troppo) e non va niente.. ricordo che c'era un sito per controllare il codice e vedere se era tutto giusto.. e se era sbagliato di dava la copia giusta

forse ricordo male :\ ma se c'è dovresti aggiungerlo
ciauz
 
bella guida.. a volte capita che fai un errore (spazio,punto o qualsiasi cosa di troppo) e non va niente.. ricordo che c'era un sito per controllare il codice e vedere se era tutto giusto.. e se era sbagliato di dava la copia giusta

forse ricordo male :\ ma se c'è dovresti aggiungerlo
ciauz
Non ho mai sentito parlare di questo sito, se per caso lo trova si ricordi di scriverlo qui che lo aggiungo alla guida ;)
 
Non ho mai sentito parlare di questo sito, se per caso lo trova si ricordi di scriverlo qui che lo aggiungo alla guida ;)
non è un solo sito.. per esempio fai un errore nel scrivere i permessi e tutto, incolli il codice sul sito (ne esistono tanti e manco ricordo come si chiamano, gj =) :\) quel sito controlla il codice e se hai fatto un errore lo corregge e ti da la copia corretta..
 
@UltraShock97 Invece di dire che ci sono errori, può sottolinearli lei?

Dai oggi sono gentile :pedobear:

Dalla nuova update di PermissionEx i prefix non si aggiungo più nella vecchia maniera, ma si aggiungono così:
Codice:
options:
      prefix: '&c[&f-&2UTENTE&f-&c]&f'
Alla fine di ogni blocco di codice. :)


P.S.: Stavo creando una discussione pure io, perchè non riuscivo a settare i prefix.
 
Esempio d'inserimento del permesso
Codice:
Membro:
  options:
   prefix: '[Membro] '
  permissions:
  - modifyworld.*
  - -modifyworld.blocks.(destroy|place).(1-4|12)

Questa parte di config e' sbagliata perche pex legge i permessi dall'alto verso il basso, trovando modifiworld.* non prosegue e non nega (in questo caso) l'uso di questi blocchi.

Nello spoiler e' riportata la parte di documentazione di pex che riguarda questo errore.
  • PEX reads the file in a 'top to bottom' manner when checking group and user permission nodes. Similar to a network firewall, once it finds a node that matches what it is looking for, it stops searching. What this means in practice is that if a node gives access to a main group and all subgroups, PEX will find the node that allows access then stop checking, never reaching the negation node.

Consider the following (incorrect!) example:
Codice:
default:
    options:
        default: true
    permissions:
    - modifyworld.*
    - -modifyworld.blocks.interact.23

With this node layout, if a player tried to open a dispenser (data value 23), the first match would be modifyworld.*, causing PEX to stop checking at this point and allow access!
However, if the two lines were reversed (-modifyworld.blocks.interact.23 came before the modifyworld.*), the player would be denied when trying to open the dispenser (node check modifyworld.blocks.interact.23) as the negation node for block ID 23 is the first one to be matched.

Fonte: https://github.com/PEXPlugins/PermissionsEx/wiki/Basic-Permissions-Setup
 
Aggiornato la guida.
[MENTION=175646]xDevily[/MENTION] Aggiornati anche i codici per i permessi negativi.

Inoltre, aggiornato il modo di inserire il gruppo di default: Ora nel nelle options.
 
Stato
Discussione chiusa ad ulteriori risposte.