Je voudrais construire un programme Mon application doit créer des utilisateurs afin de donner accès à SSH. p>
Le programme sera exécuté en utilisant sudo strong>. J'ai lu qu'il devrait être écrit en C ou C ++ au lieu de scripts car les scripts pouvaient être facilement exploités. P>
Je connais C / C ++ et exécuté Ubuntu lucide. P>
L'utilisateur n'aura qu'un accès SUDO à exécuter cette commande spécifique, je ne souhaite pas qu'il soit capable d'exécuter une coquille ou de contourner certains programmes (en changeant l'environnement de chemin, par exemple). P>
En conséquence, par exemple, je devrai remplacer le chemin fort>,
3 Réponses :
Votre meilleur pari est probablement d'invoquer userAddd; Il fera les bonnes choses (données données). P>
essayer de créer une manuellement en appelant les API appropriées est possible mais pas souhaitable. P>
Cela me semble beaucoup plus souhaitable pour moi. Mettre en place un script Perl puis appeler userAdd est comment i i> penserait à résoudre ce problème.
Il n'y a pas de "API appropriées" dans la bibliothèque Linux C.
Il n'y a pas d'API pour cela. Vous venez d'écrire dans / etc / passwd code> et / etc / groupe code> (et éventuellement les versions de l'ombre également) à l'aide d'appels de système d'accès au fichier normal. P>
N'oubliez pas qu'avant de modifier ces valeurs, vous devez toujours acquérir une serrure exclusive sur les fichiers (toutes les commandes système qui modifient ces fichiers font cela). Sinon, il y a la possibilité de corruption de fichier et vous êtes en très mauvais état.
Je pense que c'est le "seul moyen" si votre / etc / passwd est vide et que vous ne pouvez donc pas ajouter des utilisateurs à des groupes à l'aide d'Adduserer
En réalité, il existe une méthode C API C pour créer un utilisateur Linux. C'est dans le fichier pwd.h include le fichier.
Vous avez un exemple de test: p>
Vous voulez dire comme
adduser code> ouuserAdd code>? Essayez de regarder leur code source.Pourquoi un script est-il plus facile à exploiter qu'un exécutable? Si vous avez un accès root, vous avez un accès root et leur n'est rien que vous ne pouvez rien faire. Faites-le la solution simple et utilisez un script qui utilise les commandes Linux normales (et a donc été complètement testée).
L'utilisateur n'aura qu'un accès SUDO à exécuter cette commande spécifique, je ne souhaite pas qu'il soit capable d'exécuter une coquille ou de contourner certains programmes (en modifiant l'environnement de chemin, par exemple).