« LINUX:SELinux-Exercice de création d'un module personnel » : différence entre les versions
Page créée avec « __FORCETOC__ ---- ''→ retour à SELinux'' ---- =But= J'ai voulu essayer de créer à module pour une application personnelle élémentaire. ---- ''→ retour à SELinux'' ---- __NOEDITSECTION__ Category:LINUX » |
Aucun résumé des modifications |
||
Ligne 5 : | Ligne 5 : | ||
=But= | =But= | ||
J'ai voulu essayer de créer à module pour une application personnelle élémentaire. | J'ai voulu essayer de créer à module pour une application personnelle élémentaire. | ||
Elle est basée sur deux programmes effectuant le même type de tâche mais écrits dans deux langages différents. L'un utilisera les droits SUID et SGID. | |||
La tâche consiste à lire un fichier texte et d'en ajouter le contenu à un autre fichier. | |||
=Python= | |||
Le premier programme est écrit en Python qui est un langage interprété. | |||
Voici la source mise dans le fichier "lireecrire.py": | |||
---- | |||
#!/usr/bin/python3 | |||
| |||
def main(): | |||
filein = open("/gestion/data/data.in","rt") | |||
fileout = open("/gestion/data/data.out","at") | |||
| |||
ligne = filein.readline() | |||
while ligne != "": | |||
fileout.write(ligne) | |||
ligne = filein.readline() | |||
| |||
filein.close() | |||
fileout.close() | |||
| |||
main() | |||
---- | |||
On remarque la première ligne qui permet de lancer directement ce fichier pour autant qu'il soit exécutable. | |||
=C= | |||
Le second programme est écrit en C; il sera compilé. | |||
Voici la source mise dans le fichier "readwrite.c": | |||
---- | |||
#include <stdio.h> | |||
#include <stdlib.h> | |||
#include <ctype.h> | |||
#include <string.h> | |||
| |||
void main() | |||
{ | |||
char nomfichin[50]; | |||
char nomfichout[50]; | |||
char ligne[500]; | |||
FILE *fpti; | |||
FILE *fpto; | |||
| |||
strcpy(nomfichin,"/gestion/data/datac.in"); | |||
strcpy(nomfichout,"/gestion/data/datac.out"); | |||
| |||
fpti=fopen(nomfichin,"rt"); | |||
fpto=fopen(nomfichout,"at"); | |||
| |||
while(fgets(ligne, sizeof(ligne), fpti) != NULL) | |||
{ | |||
fputs(ligne, fpto); | |||
} | |||
| |||
fclose(fpto); | |||
fclose(fpti); | |||
| |||
exit(0); | |||
} | |||
---- | |||
Les fichiers d'entrée et de sortie portent des noms différents de ceux du programme fait en Python. | |||
On doit compiler ce programme avec la commande suivante: | |||
cc readwrite.c -lm -o readwrite.exe | |||
L'exécutable porte le nom "readwrite.exe". | |||
Il faut évidemment avoir installé le nécessaire minimum pour le développement en C. | |||
Version du 16 janvier 2024 à 12:00
But
J'ai voulu essayer de créer à module pour une application personnelle élémentaire.
Elle est basée sur deux programmes effectuant le même type de tâche mais écrits dans deux langages différents. L'un utilisera les droits SUID et SGID. La tâche consiste à lire un fichier texte et d'en ajouter le contenu à un autre fichier.
Python
Le premier programme est écrit en Python qui est un langage interprété.
Voici la source mise dans le fichier "lireecrire.py":
#!/usr/bin/python3 def main(): filein = open("/gestion/data/data.in","rt") fileout = open("/gestion/data/data.out","at") ligne = filein.readline() while ligne != "": fileout.write(ligne) ligne = filein.readline() filein.close() fileout.close() main()
On remarque la première ligne qui permet de lancer directement ce fichier pour autant qu'il soit exécutable.
C
Le second programme est écrit en C; il sera compilé.
Voici la source mise dans le fichier "readwrite.c":
#include <stdio.h> #include <stdlib.h> #include <ctype.h> #include <string.h> void main() { char nomfichin[50]; char nomfichout[50]; char ligne[500]; FILE *fpti; FILE *fpto; strcpy(nomfichin,"/gestion/data/datac.in"); strcpy(nomfichout,"/gestion/data/datac.out"); fpti=fopen(nomfichin,"rt"); fpto=fopen(nomfichout,"at"); while(fgets(ligne, sizeof(ligne), fpti) != NULL) { fputs(ligne, fpto); } fclose(fpto); fclose(fpti); exit(0); }
Les fichiers d'entrée et de sortie portent des noms différents de ceux du programme fait en Python.
On doit compiler ce programme avec la commande suivante:
cc readwrite.c -lm -o readwrite.exe
L'exécutable porte le nom "readwrite.exe".
Il faut évidemment avoir installé le nécessaire minimum pour le développement en C.