#1 Le 02/06/2015, à 00:10
- LiloMai
Un script shell pour afficher les droits d'acces d'un fichier
Bonsoir, j'ai crée un script shell pour afficher les droits d'acces d'un fichier passé en parametre sous la forme suivante
read write execute
user oui non oui
groupe oui non non
others oui non non
En fait voila mon script, j'ai just récupéré les droits, et je n'ai aucune idée concernant l'affichage
#!/bin/bash
droits=$(ls -l $1 | cut -d ' ' -f1)
user=$(ls -l $1 | cut -d ' ' -f3)
groupe=$(ls -l $1 | cut -d ' ' -f4)
echo "-------------Les droits d'acces de $1---------------------"
n=1
for u in "Le user " " $groupe" "Les autres"
do
d=${droits:n:3}
if [ "$d" = "---" ]
then
var1="Non"
var2="Non"
var3="Non"
elif [ "$d" = "r--" ]
then
var1="Oui"
var2="Non"
var3="Non"
elif [ "$d" = "rwx" ]
then
var1="Oui"
var2="Oui"
var3="Oui"
elif [ "$d" = "-wx" ]
then
var1="Non"
var2="Oui"
var3="Oui"
elif [ "$d" = "--x" ]
then
var1="Non"
var2="Non"
var3="Oui"
elif [ "$d" = "r-x" ]
then
var1="Oui"
var2="Non"
var3="Oui"
elif [ "$d" = "rw-" ]
then
var1="Oui"
var2="Oui"
var3="Non"
else
var1="Non"
var2="Oui"
var3="Non"
fi
echo " $var1 $var2 $var3"
n=$((n+3))
done
Modération : merci à l'avenir d'utiliser les balises code (explications ici).
Attention ! Les doublons sont interdits.
Dernière modification par cqfd93 (Le 02/06/2015, à 07:09)
Hors ligne
#2 Le 02/06/2015, à 06:25
- pingouinux
Re : Un script shell pour afficher les droits d'acces d'un fichier
Bonjour,
Ton script fait presque ce que tu veux. Sur les lignes 2 à 4, remplace ls -l $1 par ls -ld "$1" (utile si le nom du fichier contient des espaces, et pour ne pas lister le contenu des répertoires).
Remplace la ligne 7 par
for u in "user " "groupe" "others"
et la ligne 51 par
echo "$u $var1 $var2 $var3"
Ajoute enfin cette ligne après la ligne 5
echo " read write execute"
Remarque : Tu as lancé 2 fois la même discussion
Édité : Réponse complétée
Il y a des cas qui ne seront pas traités correctement (lorsque les permissions sont autre chose que -, r, w ou x, comme par exemple s, S, t, ou T).
Dernière modification par pingouinux (Le 02/06/2015, à 06:46)
Hors ligne
#3 Le 03/06/2015, à 09:28
- LiloMai
Re : Un script shell pour afficher les droits d'acces d'un fichier
C'est la premiere fois que je lance une discussion sur le forum et je ne savais pas comment... D'où les deux discussions,
Je viens de le tester, il marche comme il faut !
Merci bcp
Hors ligne
#4 Le 03/06/2015, à 09:37
- pingouinux
Re : Un script shell pour afficher les droits d'acces d'un fichier
Voici une autre façon de faire, complètement différente, qui utilise la commande stat pour récupérer les permissions en octal. Il n'y a plus les restrictions que j'indique à la fin de mon message #2.
#!/bin/bash
trace() {
printf "%-11s" "$1"
for n in 4 2 1;do (($2&$n)) && printf " %7s" oui || printf " %7s" non;done
printf "\n"
}
perms=$(stat -c %a "$1") || exit 1
o=$((perms%10)); ((perms/=10))
g=$((perms%10)); ((perms/=10))
u=$((perms%10))
printf "%11s Les droits d'accès de %s\n" "" "$1"
printf "%11s %7s %7s %7s\n" "" read write execute
trace 'Utilisateur' $u
trace 'Groupe' $g
trace 'Autres' $o
Hors ligne