Droits daccès
- Essayer de supprimer ou de modifier le fichier /etc/passwd. Que se passe-t-il?
Expliquer la situation à laide de la commande ls -l.
Il est impossible de supprimer le fichier /etc/passwd. Seul le propriétaire (root) du fichier peut le supprimer.
ls -l /etc/passwd
-rw-r--r-- 1 root root 1705 2004-12-09 09:55 /etc/passwd
id
uid=1000(toto) gid=1000(toto) groupes=1000(toto)
touch Lecture
chmod 444 Lecture
-r--r--r-- 1
toto toto
3 2004-12-09 09:55 Lecture
mkdir Secret
chmod 700 Secret
drwx------ 2 toto toto 4096 2004-12-09 09:55 Secret
mkdir Connaisseurs
chmod 711 Connaisseurs
/usr/bin/passwd pour modifier son mot de passe
/usr/bin/gpasswd pour administrer le fichier /etc/group
/usr/bin/readcd pour lire et écrire des cd
Ces commandes "travaillent" en tant que root mais peuvent être endossées par d'autres utilisateurs
Les utilisateurs
- Votre compte d'utilisateur est-il défini dans le fichier /etc/passwd? Pourquoi?
Non, car les comptes sont définis globalement au sein d'un "domaine" NIS.
- Quel est le répertoire de connexion de lutilisateur root?
Le répertoire de connexion de root est /root.
Le shell est /bin/bash.
L'utilisateur Nobody n'a pas de home valide, son home devient /.
sync, postfix, sshd, partimag et distccd.
Redirections, méta-caractères
Le répertoire /usr/include contient les fichiers dentête standards en langage C (stdlib.h, ...).
- Créer un répertoire nommé inc dans votre répertoire de connexion (HOME).
En utilisant une seule commande, y copier les fichiers du répertoire /usr/include dont le nom commence par std.
mkdir inc
cp /usr/include/std* $HOME/inc
find /usr/include/ \( -name 'a*' -o -name 'b*' -o -name 'c*' \)
ou
find /usr/include/ -name [abc]*
find /usr/include/ \( -name 'a*' -o -name 'b*' -o -name 'c*' \) >$HOME/Abc.list
cat Abc.list > copie
wc Abc.list
450 450 14861 Abc.list
cat Abc.list copie >double
wc double
900 900 29722 double
touch Temp
cat >> temp
The end
CTRL-d
ls /usr/include/[t]* | wc
14 14 306
find
- Afficher la liste des fichiers h situés sous le répertoire /usr/include.
find /etc -name "*.conf"
- Afficher la liste des fichiers plus vieux que 3 jours situés sous votre répertoire de connexion.
find $HOME -ctime +3
head, tail, tubes
- Afficher les 5 premières, puis les 5 dernières lignes du fichier /etc/passwd.
head -5 /etc/passwd
tail -5 /etc/passwd
- Afficher la 7ième ligne de ce fichier (et elle seule), en une seule ligne de commande.
head -n7 passwd | tail -n1
tr, more, tubes
- Afficher le fichier /etc/passwd en remplaçant les caractères / par des X.
cat /etc/passwd | tr / X
- Obtenir le résultat précédent page par page.
cat /etc/passwd | tr / X | more
Contrôles d'accès
Un administrateur désire sassurer chaque matin que tous les fichiers placés sous $REPERTOIRE sont lisibles
par tout le monde, mais non modifiables excepté par leur propriétaire.
- Quel doit être le mode de ces fichiers et répertoires?
fichiers: rwxr-xr-x
répertoires: rwxr-xr-x
- Écrire un script permettant dafficher la liste des fichiers d'un répertoire et le type de chacun (utilisation de
file et sort ) trié par type.
#! /bin/bash
for i in `ls`
do
file $i >>text
done
more text| sort -t: +1
rm text
Flux dE/S standards
- Écrire une commande qui affiche "Bonjour" à lécran et en même temps crée un fichier nommé "Salutation.txt"
dont le contenu est le même message.
echo "Bonjour" |tee salutation.txt
- Ecrire un script qui lise une ligne de caractères sur son entrée standard et lécrive sur sa sortie, en passant tous
les caractères en majuscules.
#! /bin/bash
read a
echo $a|tr "[a-z]" "[A-Z]"
- Modifiez votre script pour quil affiche le nombre de caractères traités sur sa sortie derreur.
read a
echo $a|tr "[a-z]" "[A-Z]"|tee text1
- Créer un fichier texte quelconque. Écrire une seule commande shell qui recopie le contenu passé en majuscule de ce fichier
dans un nouveau fichier nommé "Titre.txt" et affiche à lécran le nombre de caractères traités.
cat salutation.txt|tr "[a-z]" "[A-Z]"|tee text1|wc -c
grep, cut, uniq, sort et tubes
Étudier la documentation des commandes cut et uniq.
- Afficher la liste des répertoires de connexion des utilisateurs déclarés dans le fichier /etc/passwd.
cut -d: -f 6 passwd
- On rappelle quà chaque utilisateur est associé un interpréteur de commandes (shell) lancé lors de son login. La
commande correspondante est indiquée dans le 7ième champ du fichier /etc/passwd.
Afficher en une ligne de commande le nombre dinterpréteurs de commandes différents mentionnés dans /etc/passwd.
cut -d: -f 7 passwd|sort|uniq|wc -l
- On dispose d'un fichier texte telephone.txt contenant un petit carnet dadresses.
Chaque ligne est de la forme "nom prenom numerotelephone" les champs étant séparés par des tabulations.
Répondre aux questions suivantes en utilisant à chaque fois une ligne de commande shell:
- Afficher le carnet dadresse trié par ordre alphabétique de noms.
sort
telephone.txt
- Afficher le nombre de personnes dans le répertoire.
wc -l telephone.txt
- Afficher toutes les lignes concernant les Dupond.
grep Dupond
telephone.txt
- Afficher toutes les lignes ne concernant pas les Dupond.
cat telephone.txt | grep -v "Dupond"
- Afficher le numéro de téléphone (sans le nom) du premier Dupond apparaissant dans le répertoire.
grep Dupond telephone.txt|uniq -f 1|cut -d\; -f 3
- Afficher le numéro de téléphone (sans le nom) du premier Dupond dans lordre alphabétique (ordre basé
sur les prénoms).
sort telephone.txt|grep Dupond |uniq -f 1|cut -d\; -f 3
RETOUR
|