Bonjour je débute dans la programmation sous linux et je cherche comment ajouter un utilisateur et lui donner toute les permissions en C++.j'ai besoin d'avoir accès a tous les fichiers du pc Sous Linux.C pour un explorateur multimédia
Merci
Version imprimable
Bonjour je débute dans la programmation sous linux et je cherche comment ajouter un utilisateur et lui donner toute les permissions en C++.j'ai besoin d'avoir accès a tous les fichiers du pc Sous Linux.C pour un explorateur multimédia
Merci
Le soucis que pour créer un utilisateur, il faut être root ou que le programme est un suid. Donc le programme doit être très bien fait, sinon il y a risque de corruption du système.
Généralement pour créer un utilisateur, on fait appelle au programme adduser ou useradd. Tu peux appellé un programme avec exec ou system.
Ensuite tu demande que cet utilisateur est tout les droits. Le seul qui l'est c'est uniquement root.
Pour un explorateur multimédia, tu n'as pas besoin de tout ça. Tu exécute ton explorateur dans la session de l'utilisateur qui exécute le programme (donc ces droits).
Tu n'aurai pas un exemple de code?
Et j'aimerai pouvoir l'executer en ayant tous les droits.
Comme celà tous le monde pourra l'utiliser.
Donc ce sera une machine sans droit (enfin si, tout le monde aura tous les droits).
Une autre solution : "chmod -R 777 /", et là, pas de code à développer, tu passes la commande une seule fois et tous les utilisateurs ont accès à tous les fichiers et répertoires :cry:.
Oui mais c'est fixe?
Je voudrai seulement avoir les droits le temps que le programme tourne et supprimer ces droits quand le programme se ferme. De façon a ne pas modifier le système.
Arf, je croyais que tu parlais de tout les droits pour l'utilisateur. Alors que tu parlais du programme.
Pour ajouter un utilisateur :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <errno.h> extern char ** environ; int main (void) { char * argv[] = {"useradd", "-m" , "my_user"}; // Les arguments a transmettre au programme fprintf(stdout, "Ajout de l'utilisateur"); execve("/usr/sbin/useradd", argv, environ); // Execution du programme fprintf(stdout, "Raté : erreur = %d\n", errno); // Affiche l'erreur return 0; }
Pour changer les droits d'un programme :
int chmod (const char * nom_fichier, mode_t mode); // Changer le mode
int access (const char * nom_fichier, int mode); // Pour vérifier les droits
F_OK Le fichier existe-t-il ?
R_OK Puis-je lire le contenu du fichier ?
W_OK Puis-je écrire dans le fichier ?
X_OK Puis-je exécuter le fichier ?
Exemple :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 #include <stdlib.h> #include <stdio.h> #include <unistd.h> #include <errno.h> #include <sys/stat.h> int main() { if (!chmod ("/tmp/exemple.c", 0777)) printf("OK"); else fprintf(stdout, "Raté : erreur = %d\n", errno); // Affiche l'erreur }
Alors, il faut que ce programme ait le bit setuid root positionné comme cela, il s'exécutera toujkours en tant que root
@ram-0000 : Niveau sécurité c'est zéro... Son projet ne nécessite nullement les droits root!
Il vaut mieux créer un groupe du aura accès a fichier utile avec les droits voulu. Et mettre un suid d'un utilisateur qui appartient au groupe