svp les freres je suis un debutant en linux, aidez moi à trouver une solution à ces exercices. EXO1: ecrire un script qui détruit tous les fichiers orphelins d'un repertoire fourni en arguments. N'oublier pas d'afficher un message d'avertissement avec une durée maximale de 10 seconde.
EXO2: ecrire un script shell qui permet de faire en sorte qu'aucun utilisateur sauf le propriétaire, ne puisse avoir accès à un fichier dont le nom est fourni en argument ou saisie au clavier (en cas d'absence d'arguments).
EXO3: Creer un script d'automatisation de la creation des comptes utilisateurs dont la liste est fournis en arguments.
| Ce n'est pas possible avec les systèmes Unix ça. Un fichier a forcément un groupe et un utilisateur associé.
sauf si lors de la suppression d'un compte, on ne supprime pas le $HOME, ou si on modifie l'UID d'un utilisateur directement dans le fichier de configuration;
les (ug)id affichés ne correspondent alors pas à des id présents dans /etc/passwd.
quant à afficher un message pendant n secondes max., il faudrait connaître un peu mieux le contexte, car dans un terminal, a priori, les messages restent affichés.
- Edité par dantonq 9 mars 2015 à 16:12:42
Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique
| Ce n'est pas possible avec les systèmes Unix ça. Un fichier a forcément un groupe et un utilisateur associé.
sauf si lors de la suppression d'un compte, on ne supprime pas le $HOME, ou si on modifie l'UID d'un utilisateur directement dans le fichier de configuration;
les (ug)id affichés ne correspondent alors pas à des id présents dans /etc/passwd.
S'il y a un uid il a un utilisateur alors.
Pour les 10 secondes on peut utiliser timeout.
Du style :
echo "Confirmer en appuyant sur une touche ou attendre 10s"
timeout 10 read >/dev/null --
Edit : En faite il y a plus simple la commande read accepte un timeout avec l'option -t.
crée un utilisateur avec un $HOME, où seront créés les fichiers de configuration du shell à partir de /etc/skel, puis supprime l'utilisateur sans supprimer le $HOME, les fichiers demeurent avec les (GU)ID de l'utilisateur qui a été supprimé !
- Edité par dantonq 9 mars 2015 à 22:40:03
Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique
crée un utilisateur avec un $HOME, où seront créés les fichiers de configuration du shell à partir de /etc/skel, puis supprime l'utilisateur sans supprimer le $HOME, les fichiers demeurent avec les (GU)ID de l'utilisateur qui a été supprimé !
- Edité par dantonq il y a environ 10 heures
Oui mais le fichier appartient toujours au même groupe et utilisateur c'est juste la correspondance avec un nom de groupe et d'utilisateur qui est perdu.
Non leurs créateur existe toujours c'est juste qu'il n'y a pas de correspondance entre l'uid et un nom.
J'insiste car dans la norme POSIX et doncsous Linux il existe un uid et gid spéciale (le 65535 de mémoire voir plus si l'uid est coder sur 32 bits) pour les fichiers donc on a perdu leurs utilisateurs et groupes (après restauration par exemple).
Je ne peux pas te donner les références POSIX car l'accès n'est pas en libre service (il faut payer).
Je comprend la définition de fichier orphelin que vous avez donné mais pour moi la formulation ("un fichier orphelin c'est un fichier qui n'a pas de propriétaire") est fausse.
Un fichier à toujours un propriétaire puisqu'il forcément un uid et gid qui soit soient rattacher à un utilisateur ou un groupe importe peut.
Une meilleur définition serait de dire qu'un fichier orphelin est un fichier pour lequel on ne peut pas faire la correspondance avec un nom d'utilisateur à l'uid du fichier (comme utiliser dans le man de find pour décrire les options nogoup et nouser).
Au passage supprimé un utilisateur (à savoir en pratique enlever toutes les occurrences de l'utilisateur dans le fichier /etc/passwd, /etc/group /etc/shadow /etc/gshadow) ne fait qu'enlever le nom de l'utilisateur.
Mais on peut toujours lancer des processus avec l'uid de l'utilisateur supprimé voir même lancer une session graphique entière.
Au passage supprimé un utilisateur (à savoir en pratique enlever toutes les occurrences de l'utilisateur dans le fichier /etc/passwd, /etc/group /etc/shadow /etc/gshadow) ne fait qu'enlever le nom de l'utilisateur.
Mais on peut toujours lancer des processus avec l'uid de l'utilisateur supprimé voir même lancer une session graphique entière.
autant dire qu'on peut se connecter avec n'importe quel uid généré par RANDOM !
Je ne peux pas te donner les références POSIX car l'accès n'est pas en libre service (il faut payer).
cherche encore l'opengroup a ouvert les sources, elle sont accessibles librement (parfois ils demandent un email).
- Edité par dantonq 10 mars 2015 à 18:36:50
Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique
Au passage supprimé un utilisateur (à savoir en pratique enlever toutes les occurrences de l'utilisateur dans le fichier /etc/passwd, /etc/group /etc/shadow /etc/gshadow) ne fait qu'enlever le nom de l'utilisateur.
Mais on peut toujours lancer des processus avec l'uid de l'utilisateur supprimé voir même lancer une session graphique entière.
autant dire qu'on peut se connecter avec n'importe quel uid généré par RANDOM !
Ce connecter par procédure de login classique non car elles sont justement conçu pour restreindre la connexion. Mais lancer un process avec un uid random oui on peut (je peux même te faire un code d'exemple).
dantonq a écrit:
Je ne peux pas te donner les références POSIX car l'accès n'est pas en libre service (il faut payer).
cherche encore l'opengroup a ouvert les sources, elle sont accessibles librement (parfois ils demandent un email).
Non il s'agit de Unix là. Mais cela doit y être aussi du coup. Sinon tu peux trouver ça dans le code source de Linux. Cette uid s'appel dans les source de Linux hightuid ou overflowuid (car il est également utiliser pour représenter les uid étant plus grand que l'uid max du système).
en faite jai chercher à proceder de cette maniere pour le 1er exo:
#! /bin/bash
echo "suppression des fichiers n'ayant pas de proprietaire: tapez y= yes; n=no; "
Read -t 10 -n 1 choix
if [ "$choix"="y" ]
then
find $1 -nouser -type f -print | xargs rm -f
else
echo -e "suppression annulée"
fi
au debut le programme va demander a l'utilisateur s'il veut supprimer les fichiers orphelins, taper y pour confirmer ou n pour annuler
et s'il ne confirm pas dans les 1Os le program quitte directement sans supprimer
- Edité par Dantary 28 mars 2015 à 22:07:16
Exos shell bash linux
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique
Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique
Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique
Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique
Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique
Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique
Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique