[size=xx-large]Permissions[/size]
Version actuelle : 2.5.4
Introduction
Permissions est un plugin qui s'installe du coté serveur. Il vous sera indispensable dans le sens où il vous permettra de gérer des permissions regroupées en groupes que vous pourrez assigner à vos utilisateurs comme le ferait Windows ou un forum pour la comparaison.
Un gros pourcentage de plugins s'appuient sur Permissions afin d'autoriser ou non une partie de leurs fonctionnalités.
Prérequis
Avoir un serveur CraftBukkit, avec la dernière version si possible (pour éviter les problèmes).
Evitez aussi d'avoir tout autre plugin similaire à Permissions qui pourrait entré en conflit avec celui-ci ou même faire en sorte que Permissions soit complètement ignoré. Je pense notamment à GroupManager ou EssentialsGroupManager (et EssentialsGroupBridge).
Notepad++. Pourquoi Notepad++ ? Vous le saurez au moment de la configuration du plugin.
Installation
Configuration
Si ce n'est pas déja fait, installez Notepad++. Lancez-le, allez dans le menu Paramétrage > Préférences... > onglet Menu langage/Tabulations, à droite dans Tabulations choisissez "yaml" dans la liste, décochez "Valeur par défaut" et cochez "Insérer des espaces" en vous assurant que "Taille" vaut '4', puis fermer.
Pourquoi faire cela ? Nous allons devoir editer un fichier de type Yaml (*.yml), un fichier particulier parce que toute son organisation se base sur l'indentation, donc si cela est mal respecté le fichier est invalide et donc le plugin Permissions ne fonctionnera jamais. Après ces quelques petits réglages, nous voilà enfin prêt à entrer dans le vif du sujet.
Sachez tout d'abord qu'il existe un fichier de configuration par monde, ainsi si votre monde s'appelle "World" alors votre fichier relatif à ce monde devra s'intituler "World.yml" et pas autrement. Dans le cas contraire, au démarrage du serveur, quand CraftBukkit chargera Permissions, il ne trouvera pas de configuration pour ce monde et le plugin deviendra inutile. C'est pour cela, dés maintenant, rendez vous dans le dossier plugins/Permissions/ et renommez desuite le fichier le fichier "RENAME-ME.yml" comme je viens de vous l'expliquer. Ensuite, ouvrez-le avec Notepad++.
Parlons un peu de la structure de ce document. 3 arborescences sont présentes : plugin, users et groups. Globalement, nous pourrons soit écrire une seule instruction, soit une liste d'instructions. Voici deux exemples :
Ici, après "default:" nous avons le choix entre deux valeurs, soit "true" ou soit "false". Soit l'un soit l'autre, pas les deux à la fois.
Il s'agit ici d'énumerer une liste de permissions, sous la forme "- 'ma_permission'" sur chaque ligne. Il y a d'autre façons de l'écrire mais pour l'instant nous restons sur ce format.
Biensur, une option (dans les exemples "default:" ou "permissions:") peut ne comporter aucune valeur, alors il suffit de ne rien écrire.
Tout ce qui est coloré en vert et précédé d'un '#' sont des commentaires, des notes pour vous et qui ne seront par interpreté lors de la lecture du fichier. Vous pouvez supprimer les commentaires de base pour un peu plus de lisibilité.
Bref, je ne vais pas m'eterneliser sur ce sujet, passons aux choses sérieuses. Commençons par le début.
Ne pas y toucher, sauf "Copies:" si votre serveur est multi-mondes. En effet, comme expliqué précédemment vous pouvez avoir plusieurs fichiers pour chacun de vos mondes, ou indiquer ici le nom de vos autres mondes qui auront cette configuration.
Groups
Enfin une partie intéressante, soyez attentifs, tout ou presque se joue au niveau des groupes.
Appliquer une à une des permissions aux joueurs c'est lourd, surtout quand il y en a beaucoup et que beaucoup reviennent souvent pour des utilisateurs différents. Les groupes permettent de nous soulager de ce fardeau en rassemblant toutes les permissions et autres propriétés sous une seule étiquette, mais je pense que vous avez déja saisi le principe.
Prenons un exemple : un joueur A va pouvoir construire, détruire, utilise telle commande etc... un joueur B va pouvoir faire la même chose que ce joueur A, un joueur C de même. Il est plus facile de créer un groupe du genre "citoyen" avec ces permissions et ensuite d'assigner ce groupe à chacun de vos joueurs plutôt que de tout faire individuellement, non ?
Analysons ce code :
Sous l'étiquette "groups:", nous repérons de suite 3 groupes : Default, Moderator et Admins. Regardons de plus près ce que compose le groupe Default, sachant que la structure des autres groupes est identique.
Users
Et une autre partie importante. Ici sont listés tous les joueurs qui sont dans un groupe qui est autre celui que celui de base. En effet, le groupe Default ayant la propriété "default" à "true", tous les joueurs sauf ceux listés ici seront dans ce groupe, donc inutile de les inscrire dans cette partie.
Analysons le code d'un utilisateur :
Pour donner une permission, que ce soit pour un groupe ou un utilisateur, vous devez écrire le nom de la permission suite à l'étiquette "permissions:" sous le format :
En respectant scrupuleusement la syntaxe et les espaces. Respectez l'indentation, grâce à la touche Tab, afin de marquer un retrait par rapport à l'étiquette "permissions".
Pour retirer une permission :
Pourquoi retirer une permission ? Ne suffit-il pas de ne l'omettre ? Si biensur, mais dans le cas d'un héritage de permissions, cela permet de retirer une permission de la liste de celles héritées. Ca évite de définir 2 groupes dont l'un contient toutes les permissions d'un autre avec celle(s) que l'on veut en moins.
Donner/retirer toutes les permissions, il suffit d'utiliser le caractère '*'.
En installant divers plugins qui nécéssiteront l'utilisation de Permissions, vous verrez que le nom des permissions sont sous ce format :
Il est souvent le cas d'autoriser toutes les sous permissions d'une permission parente et il serait très fastidieux de les écrire une à une. Dans ce cas, il suffit juste de marquer :
De la même façon pour interdire :
Il existe aussi un cas sépcial, permettant de donner toutes les permissions, sans pourtant connaitre le nom de celles-ci:
Héritage
J'en ai déja un peu parlé, l'héritage ça sert à reprendre les permissions d'un autre groupe, tout simplement.
Exemple 1
On considère le code suivant :
Au final, le groupe B aura ses propres permissions + celles du groupe A soit p1, p2, p3, p4 et p5.
Exemple 2
On considère le code suivant :
Le groupe B aura toutes les permissions du group A sans la permission p2 soit p1 et p3.
Evidemment, vous pouvez concevoir une hiérarchie de telle sorte qu'un groupe hérite d'un autre qui celui-ci hérite d'un autre et ainsi de suite.
Attention : Si un groupe possède la permission '*', ne pas l'hériter d'un autre groupe. De toute façon ce serait complètement inutile par logique mais ça ferait planter le plugin.
Voilà, je pense qu'en terme de configuration, on a fait le tour, en tout cas vous savez ce qu'il faut pour bien faire fonctionner votre serveur grâce à ce plugin.
Mise à jour
Si le plugin venait à être mis à jour, ne re-télécharger pas toute l'archive avec le fichier de configuration par défaut mais prenez uniquement le fichier *.jar (Permissions.jar) et écrasez l'ancien.
Commandes
Il en existe que 3 dont une la plus importante, permettant de recharger tous les fichiers de config de vos mondes si vous l'avez editer et que vous voulez appliquer les changements. Cela permet d'éviter de redémarrer le serveur.
Pour ceux qui connaissent GroupManager, vous allez me dire qu'il est mieux car il dispose d'un tas de commandes In-Game pour gérer les permissions sans devoir toucher au fichier physiquement. C'est vrai, c'est un défaut de Permissions. Cependant, vous pourrez parer à ce problème en utilisant le plugin PermissionsPlus, loin d'être aussi complet que GM mais il ajoute quelques commandes de base à Permissions, je n'en dirais pas plus, ne l'ayant jamais utilisé.
Erreurs fréquentes
Liens utiles
La page officielle de Permissions sur bukkit.org
Archive ZIP
Jar seulement
Conclusion
J'ai essayé de donner le maximum d'informations à propos de ce plugin plus qu'indispensable. Je connais surement pas tout, donc si quelqu'un à quelque chose à rajouter ou à corriger, n'hésitez pas.
Je précise que ce tuto ou présentation de ce plugin est de moi. J'espère en tout cas dans le futur, avoir moins de topic dans la section support à ce propos
Vous pouvez tout de même poster à la suite de ce topic tout problème relatif à Permissions et lui seul.
Version actuelle : 2.5.4
Introduction
Permissions est un plugin qui s'installe du coté serveur. Il vous sera indispensable dans le sens où il vous permettra de gérer des permissions regroupées en groupes que vous pourrez assigner à vos utilisateurs comme le ferait Windows ou un forum pour la comparaison.
Un gros pourcentage de plugins s'appuient sur Permissions afin d'autoriser ou non une partie de leurs fonctionnalités.
Prérequis
Avoir un serveur CraftBukkit, avec la dernière version si possible (pour éviter les problèmes).
Evitez aussi d'avoir tout autre plugin similaire à Permissions qui pourrait entré en conflit avec celui-ci ou même faire en sorte que Permissions soit complètement ignoré. Je pense notamment à GroupManager ou EssentialsGroupManager (et EssentialsGroupBridge).
Notepad++. Pourquoi Notepad++ ? Vous le saurez au moment de la configuration du plugin.
Installation
- Commencez par télécharger les fichiers du plugin via ce lien.
- Une fois que vous avez l'archive ZIP, extrayez le tout à la racine de votre dossier plugins/ dans votre dossier de serveur.
Si tout va bien, vous avez le fichier "Permissions.jar" et un dossier "Permissions" avec à l'interieur un fichier "RENAME-ME.yml".
Configuration
Si ce n'est pas déja fait, installez Notepad++. Lancez-le, allez dans le menu Paramétrage > Préférences... > onglet Menu langage/Tabulations, à droite dans Tabulations choisissez "yaml" dans la liste, décochez "Valeur par défaut" et cochez "Insérer des espaces" en vous assurant que "Taille" vaut '4', puis fermer.
Pourquoi faire cela ? Nous allons devoir editer un fichier de type Yaml (*.yml), un fichier particulier parce que toute son organisation se base sur l'indentation, donc si cela est mal respecté le fichier est invalide et donc le plugin Permissions ne fonctionnera jamais. Après ces quelques petits réglages, nous voilà enfin prêt à entrer dans le vif du sujet.
Sachez tout d'abord qu'il existe un fichier de configuration par monde, ainsi si votre monde s'appelle "World" alors votre fichier relatif à ce monde devra s'intituler "World.yml" et pas autrement. Dans le cas contraire, au démarrage du serveur, quand CraftBukkit chargera Permissions, il ne trouvera pas de configuration pour ce monde et le plugin deviendra inutile. C'est pour cela, dés maintenant, rendez vous dans le dossier plugins/Permissions/ et renommez desuite le fichier le fichier "RENAME-ME.yml" comme je viens de vous l'expliquer. Ensuite, ouvrez-le avec Notepad++.
Parlons un peu de la structure de ce document. 3 arborescences sont présentes : plugin, users et groups. Globalement, nous pourrons soit écrire une seule instruction, soit une liste d'instructions. Voici deux exemples :
Code:
default: true
Ici, après "default:" nous avons le choix entre deux valeurs, soit "true" ou soit "false". Soit l'un soit l'autre, pas les deux à la fois.
Code:
permissions:
- 'foo.bar'
- 'toto.manger'
- 'toto.dormir'
Il s'agit ici d'énumerer une liste de permissions, sous la forme "- 'ma_permission'" sur chaque ligne. Il y a d'autre façons de l'écrire mais pour l'instant nous restons sur ce format.
Biensur, une option (dans les exemples "default:" ou "permissions:") peut ne comporter aucune valeur, alors il suffit de ne rien écrire.
Tout ce qui est coloré en vert et précédé d'un '#' sont des commentaires, des notes pour vous et qui ne seront par interpreté lors de la lecture du fichier. Vous pouvez supprimer les commentaires de base pour un peu plus de lisibilité.
Bref, je ne vais pas m'eterneliser sur ce sujet, passons aux choses sérieuses. Commençons par le début.
Code:
plugin:
permissions:
system: default
copies:
Ne pas y toucher, sauf "Copies:" si votre serveur est multi-mondes. En effet, comme expliqué précédemment vous pouvez avoir plusieurs fichiers pour chacun de vos mondes, ou indiquer ici le nom de vos autres mondes qui auront cette configuration.
Groups
Enfin une partie intéressante, soyez attentifs, tout ou presque se joue au niveau des groupes.
Appliquer une à une des permissions aux joueurs c'est lourd, surtout quand il y en a beaucoup et que beaucoup reviennent souvent pour des utilisateurs différents. Les groupes permettent de nous soulager de ce fardeau en rassemblant toutes les permissions et autres propriétés sous une seule étiquette, mais je pense que vous avez déja saisi le principe.
Prenons un exemple : un joueur A va pouvoir construire, détruire, utilise telle commande etc... un joueur B va pouvoir faire la même chose que ce joueur A, un joueur C de même. Il est plus facile de créer un groupe du genre "citoyen" avec ces permissions et ensuite d'assigner ce groupe à chacun de vos joueurs plutôt que de tout faire individuellement, non ?
Analysons ce code :
Code:
groups:
Default:
default: true
info:
prefix: ''
suffix: ''
build: false
inheritance:
permissions:
- 'foo.bar'
Moderator:
default: false
info:
prefix: ''
suffix: ''
build: true
inheritance:
- Default
permissions:
- 'bar.foo'
Admins:
default: false
info:
prefix: ''
suffix: ''
build: true
inheritance:
permissions:
- '*'
Sous l'étiquette "groups:", nous repérons de suite 3 groupes : Default, Moderator et Admins. Regardons de plus près ce que compose le groupe Default, sachant que la structure des autres groupes est identique.
Code:
Default:
default: true
info:
prefix: ''
suffix: ''
build: false
inheritance:
permissions:
- 'foo.bar'
- default : Permet d'indiquer que ce groupe sera le groupe par défaut de tout nouveau joueur arrivant sur le serveur, sauf si celui-ci a déja été assigné à un groupe (voir partie users). Ici la valeur est à "true" donc oui, ce sera le cas, sinon mettre la valeur à "false".
- info : Propriétés propres au groupe, ici il y en a 3 dont une très importante.
- prefix : Permet d'insérer un préfixe avant le nom du joueur. Inutile si aucun plugin de chat tels que EssentialsChat, iChat ou Herochat (ou d'autres).
- suffix : Même chose sauf que ça insére un suffixe après le nom du joueur.
- build : Option très importante. Si cette valeur vaut "true" alors tous les joueurs de ce groupe pourront poser/détruire des blocs, dans le cas contraire si la valeur vaut "false", ce sera impossible. Je suis sûr que vous imaginez comment exploiter cette trouvaille
- inheritance : Permet d'hériter des permissions d'un autre groupe.
- permissions : Les permissions elles-mêmes. C'est à cet endroit que vous lister la permissions des autres plugins pour autoriser ou non les joueurs de ce groupe à utiliser des commandes, effectuer certaines actions etc...
Users
Et une autre partie importante. Ici sont listés tous les joueurs qui sont dans un groupe qui est autre celui que celui de base. En effet, le groupe Default ayant la propriété "default" à "true", tous les joueurs sauf ceux listés ici seront dans ce groupe, donc inutile de les inscrire dans cette partie.
Analysons le code d'un utilisateur :
Code:
TheNo1Yeti:
group: Admins
permissions:
- group : Le groupe auquel le joueur appartient, c'est assez explicite je trouve.
- permissions : Permissions supplémentaires, individuelles au joueur.
Pour donner une permission, que ce soit pour un groupe ou un utilisateur, vous devez écrire le nom de la permission suite à l'étiquette "permissions:" sous le format :
Code:
- 'le nom de la permission'
En respectant scrupuleusement la syntaxe et les espaces. Respectez l'indentation, grâce à la touche Tab, afin de marquer un retrait par rapport à l'étiquette "permissions".
Pour retirer une permission :
Code:
- '-le nom de la permission'
Pourquoi retirer une permission ? Ne suffit-il pas de ne l'omettre ? Si biensur, mais dans le cas d'un héritage de permissions, cela permet de retirer une permission de la liste de celles héritées. Ca évite de définir 2 groupes dont l'un contient toutes les permissions d'un autre avec celle(s) que l'on veut en moins.
Donner/retirer toutes les permissions, il suffit d'utiliser le caractère '*'.
En installant divers plugins qui nécéssiteront l'utilisation de Permissions, vous verrez que le nom des permissions sont sous ce format :
Code:
nom_du_plugin.permission1.sous_permission1
nom_du_plugin.permission1.sous_permission2
nom_du_plugin.permission1.sous_permission3
Il est souvent le cas d'autoriser toutes les sous permissions d'une permission parente et il serait très fastidieux de les écrire une à une. Dans ce cas, il suffit juste de marquer :
Code:
- 'nom_du_plugin.permission1.*'
De la même façon pour interdire :
Code:
- '-nom_du_plugin.permission1.*'
Il existe aussi un cas sépcial, permettant de donner toutes les permissions, sans pourtant connaitre le nom de celles-ci:
Code:
- '*'
Héritage
J'en ai déja un peu parlé, l'héritage ça sert à reprendre les permissions d'un autre groupe, tout simplement.
Exemple 1
On considère le code suivant :
Code:
groups:
A:
permissions:
- 'p1'
- 'p2'
- 'p3'
B:
inheritance: A
permissions:
- 'p4'
- 'p5'
Au final, le groupe B aura ses propres permissions + celles du groupe A soit p1, p2, p3, p4 et p5.
Exemple 2
On considère le code suivant :
Code:
groups:
A:
permissions:
- 'p1'
- 'p2'
B:
inheritance: A
permissions:
- '-p2'
- 'p3'
Le groupe B aura toutes les permissions du group A sans la permission p2 soit p1 et p3.
Evidemment, vous pouvez concevoir une hiérarchie de telle sorte qu'un groupe hérite d'un autre qui celui-ci hérite d'un autre et ainsi de suite.
Attention : Si un groupe possède la permission '*', ne pas l'hériter d'un autre groupe. De toute façon ce serait complètement inutile par logique mais ça ferait planter le plugin.
Voilà, je pense qu'en terme de configuration, on a fait le tour, en tout cas vous savez ce qu'il faut pour bien faire fonctionner votre serveur grâce à ce plugin.
Mise à jour
Si le plugin venait à être mis à jour, ne re-télécharger pas toute l'archive avec le fichier de configuration par défaut mais prenez uniquement le fichier *.jar (Permissions.jar) et écrasez l'ancien.
Commandes
Il en existe que 3 dont une la plus importante, permettant de recharger tous les fichiers de config de vos mondes si vous l'avez editer et que vous voulez appliquer les changements. Cela permet d'éviter de redémarrer le serveur.
Code:
/permissions -reload all
Pour ceux qui connaissent GroupManager, vous allez me dire qu'il est mieux car il dispose d'un tas de commandes In-Game pour gérer les permissions sans devoir toucher au fichier physiquement. C'est vrai, c'est un défaut de Permissions. Cependant, vous pourrez parer à ce problème en utilisant le plugin PermissionsPlus, loin d'être aussi complet que GM mais il ajoute quelques commandes de base à Permissions, je n'en dirais pas plus, ne l'ayant jamais utilisé.
Erreurs fréquentes
- Renommer le fichier de configuration avec le nom de son monde. C'est bête, mais lorsqu'on voit une grosse erreur java au chargement du plugin, c'est souvent dû à cet oubli.
- Ne pas avoir configurer Notepad++ pour indenter correctement son code YAML.
Astuce : Allez dans le menu Langage > choisissez YAML. Si votre code est faux au niveau de l'indentation, il sera coloré en rouge. De plus, pour une vérification approfondie, coller votre code dans ce Parser Yaml et lancer la conversion. A droite, vous verrez le résultat et dans le cas contraire une erreur, n'allez pas plus loin corrigez là sinon le plugin de fonctionnera jamais. - Faites attention à la casse de vos noms de groupes et permissions. En effet, si vous avez un groupe "Admins" et que vous mettez "group: admins", ça ne fonctionnera pas.
- Ne pas avoir supprimer les plugins qui ont la même fonction que Permissions comme GroupManager. Dans ce cas là, GroupManager prendra le dessus et cous comprendrez jamais pourquoi Permissions ne fonctionne pas alors qu'il n'y a aucune erreur apparente (dans la console).
Liens utiles
La page officielle de Permissions sur bukkit.org
Archive ZIP
Jar seulement
Conclusion
J'ai essayé de donner le maximum d'informations à propos de ce plugin plus qu'indispensable. Je connais surement pas tout, donc si quelqu'un à quelque chose à rajouter ou à corriger, n'hésitez pas.
Je précise que ce tuto ou présentation de ce plugin est de moi. J'espère en tout cas dans le futur, avoir moins de topic dans la section support à ce propos
Vous pouvez tout de même poster à la suite de ce topic tout problème relatif à Permissions et lui seul.