Les utilisateurs peuvent supprimer des privilèges de base à partir de demandes à l'aide de la stratégie de privilège étendue. La stratégie empêche l'accès aux répertoires auxquels les applications ne devraient pas accéder.
Cet exemple illustre la façon dont les utilisateurs peuvent exécuter le navigateur Firefox dans un environnement protégé. Dans cette configuration, le répertoire Documents de l'utilisateur est masqué pour Firefox.
A l'aide de la commande suivante, l'utilisateur supprime des privilèges de base de la commande. /usr/bin/firefox Les arguments de privilèges étendus de la commande ppriv -r limitent le navigateur Web à la lecture et l'écriture uniquement dans les répertoires spécifiés par l'utilisateur. L'option –e et ses arguments ouvrent le navigateur avec la stratégie de privilèges étendus.
% ppriv -r "\ {file_read}:/dev/*,\ {file_read}:/etc/*,\ {file_read}:/lib/*,\ {file_read}:/usr/*,\ {file_read}:/var/*,\ {file_read}:/proc,\ {file_read}:/proc/*,\ {file_read}:/system/volatile/*,\ {file_write}:$HOME,\ {file_read}:$HOME/.*,\ {file_read,file_write}:$HOME/.mozill*,\ {file_read,file_write}:$HOME/.gnome*,\ {file_read,file_write}:$HOME/Downloa*,\ {file_read,file_write}:/tmp,\ {file_read,file_write}:/tmp/*,\ {file_read,file_write}:/var/tmp,\ {file_read,file_write}:/var/tmp/*,\ {proc_exec}:/usr/*\ " -e /usr/bin/firefox file:///$HOME/Desktop
Lorsque les privilèges file_read et file_write sont utilisés dans une stratégie étendue, il est nécessaire d'accorder un accès explicite à chaque fichier dans lequel il doit être possible de lire ou d'écrire. L'utilisation du caractère générique * est essentielle dans des stratégies de ce type.
Pour gérer des répertoires d'accueil montés automatiquement, l'utilisateur ajoute une entrée explicite au chemin de montage automatique, par exemple :
{file_read,file_write}:/export/home/$USER
Si le site n'utilise pas automount, la liste initiale des répertoires protégés est suffisante.
Les utilisateurs peuvent automatiser ce navigateur Web par ligne de commande en créant un interpréteur de commandes protégé par un script. Pour lancer un navigateur, l'utilisateur appelle alors le script et non pas la commande. /usr/bin/firefox.
Exemple 4-5 Protection du système à partir de répertoires sur les processus d'applicationDans cet exemple, un utilisateur standard crée un modèle d'environnement restreint pour les applications wrapper à l'aide d'un script shell. La première partie du script quelques répertoires les limites des infos de paramétrage d'applications. Les exceptions, tels que Firefox, sont traitées plus loin dans le script. Script des commentaires sur suivez les parties du script.
1 #!/bin/bash 2 3 # Using bash because ksh misinterprets extended policy syntax 4 5 PATH=/usr/bin:/usr/sbin:/usr/gnu/bin 6 7 DENY=file_read,file_write,proc_exec,proc_info 8 9 SANDBOX="\ 10 {file_read}:/dev/*,\ 11 {file_read}:/etc/*,\ 12 {file_read}:/lib/*,\ 13 {file_read,file_write}:/usr/*,\ 14 {file_read}:/proc,\ 15 {file_read,file_write}:/proc/*,\ 16 {file_read}:/system/volatile/*,\ 17 {file_read,file_write}:/tmp,\ 18 {file_read,file_write}:/tmp/*,\ 19 {file_read,file_write}:/var/*,\ 20 {file_write}:$HOME,\ 21 {file_read}:$HOME/.*,\ 22 {file_read,file_write}:$PWD,\ 23 {file_read,file_write}:$PWD/*,\ 24 {proc_exec}:/usr/*\ 25 " 26 27 # Default program is restricted bash shell 28 29 if [[ ! -n $1 ]]; then 30 program="/usr/bin/bash --login --noprofile --restricted" 31 else 32 program="$@" 33 fi 34 35 36 # Firefox needs more file and network access 37 if [[ "$program" =~ firefox ]]; then 38 SANDBOX+=",\ 39 {file_read,file_write}:$HOME/.gnome*,\ 40 {file_read,file_write}:$HOME/.mozill*,\ 41 {file_read,file_write}:$HOME/.dbu*,\ 42 {file_read,file_write}:$HOME/.puls*\ 43 " 44 45 else 46 DENY+=",net_access" 47 fi 48 49 echo Starting $program in sandbox 50 ppriv -s I-$DENY -r $SANDBOX -De $program
La stratégie peuvent être modifiés de façon à autoriser l'accès des applications spécifiques plus ou moins. Un ajustement aux lignes 38 à 42, où Firefox a des droits d'accès en écriture à plusieurs fichiers points qui conservent les informations de session dans le répertoire de l'utilisateur. En outre, Firefox n'est pas soumis à la ligne 46, ce qui supprimer l'accès au réseau. Toutefois, Firefox est toujours limitée de lire des fichiers arbitraires sur le répertoire personnel de l'utilisateur et peut enregistrer des fichiers uniquement dans son répertoire en cours.
En tant que niveau supplémentaire de protection, le programme par défaut, à la ligne 30, est un shell Bash limité. Un shell restreint n'est plus possible de changer son répertoire en cours ou cliquez sur le point de l'utilisateur des fichiers. Par conséquent, toutes les commandes qui s'y trouvent sont aussi démarrées à partir du verrouillé dans le shell le modèle d'environnement restreint.
Dans la dernière ligne du script, la commande ppriv reçoit en argument deux jeux de privilèges sous forme de variables de shell, $DENY et $SANDBOX.
Le premier ensemble, $DENY, empêche le processus de lire ou d'écrire dans un fichier, d'exécuter un sous-processus, d'observer les processus d'autres utilisateurs et, de manière conditionnelle, d'accéder au réseau. Ces restrictions sont trop importantes, c'est pourquoi dans le second jeu, $SANDBOX, la stratégie est affinée en énumérant des répertoires qui sont disponibles pour la lecture, l'écriture et l'exécution.
En outre, l'option de débogage –D est spécifiée à la ligne 50. Les défaillances d'accès s'affichent dans la fenêtre de terminal en temps réel et inclure le privilège objet nommé et correspondant, ce dernier étant requis pour indiquer la réussite. Cette des informations de débogage pour aider l'utilisateur à personnaliser la stratégie destinée à d'autres applications.