La commande linux 'id' rapporte les groupes = auxquels ce processus appartient. Quand et comment cela est-il rempli? J'écris un programme suid/sgid et il semble que les groupes ne sont jamais remplis pour mon processus et peut-être juste de manière coïncidente, mais les permissions en ce qui concerne un système de fichiers monté nfs ne fonctionnent pas correctement pour cela (d'ailleurs, j'ai joué avec no_root_squash et cela n'a pas aidé)id linux no_squash_root
Répondre
Dans la plupart des cas, les groupes supplémentaires sont définis par login
.
Si vous voulez les mettre vous-même, vous aurez besoin des fonctions getgrouplist()
et setgroups()
de <grp.h>
- notez que vous devrez être root pour appeler setgroups()
avec succès.
Notez que ces fonctions - et initgroups() - sont toutes en dehors de la portée de la norme POSIX. Ils ne sont pas tous universellement disponibles sur toutes les plates-formes Unix-like; en particulier, la fonction 'getgrouplist()' n'est pas disponible sur Solaris, par exemple. Aussi, pirater votre propre 'getgrouplist()' est cher; vous devez lire le fichier 'groupe' entier (base de données) parce que le fichier brut/etc/group ne fournit pas la structure 'index inversé' nécessaire pour répondre à la question 'quels groupes l'utilisateur X appartient' plus efficacement. –
L'appartenance à plusieurs groupes est normalement définie lors de la connexion mais n'est pas beaucoup utilisée. SOP est souvent de donner à chaque utilisateur son propre groupe.
Les systèmes de fichiers réseau ne respectent généralement pas les privilèges de racine client locaux.
Merci, le setgroups() était à peu près la réponse. Cependant, j'ai fini par utiliser initgroups() qui fonctionnait très bien. L'appel a été fait avant que je fasse le setuid loin de la racine.
trouvé cela dans les pages de manuel NOM initgroups - initialiser la liste d'accès de groupe supplémentaire
SYNOPSIS #include #include
int initgroups(const char *user, gid_t group);
Apparemment, si les groupes viennent de LDAP, vous devez faites ceci afin de les remplir correctement.
- 1. linux id et setuid/setgid
- 2. URL id Bar = 1 Dans ID jQuery
- 3. Sous-id, le suivi-id ou id site dans http://cj.com buyUrl
- 4. IIS 7 - ID d'événement 5 d'erreur
- 5. Id ou [TableName] Id comme clé primaire/identifiant d'entité
- 6. obtenir un ID d'attribut, défini comme un autre attribut ID
- 7. Linux débutant: manuel Linux vs POSIX
- 8. Hibernate ID Generator
- 9. JQuery sélection par ID
- 10. GQL obtenir champ ID
- 11. ID d'appel TAPI 3.0?
- 12. propriété Id non peuplée
- 13. Javascript id obtenir
- 14. Renommer des ID volumineux
- 15. Google gadget ID unique
- 16. Alternatives à ID Selector?
- 17. Id dupliqué JSF
- 18. Mappage NHibernate sans ID
- 19. jQuery ID attr
- 20. Nhibernate mapping sans ID
- 21. E-mail id stocker
- 22. jQuery clone ID dupliqués
- 23. jquery clone id
- 24. SPARQL select RDF: ID
- 25. Gamme GROUP BY ID?
- 26. désassembleur linux
- 27. Existe-t-il une syntaxe plus propre pour WHERE id! = 1 ET id! = 2 AND id! = 7
- 28. Ruby On Rails ID personnalisé
- 29. jolis liens avec NO id
- 30. Flex DataGridColumn id est manquant?
Peut-être pourriez-vous poster du code et/ou une transcription de shell montrant exactement ce que vous voyez qui est différent de ce à quoi vous vous attendez? Votre programme fonctionne-t-il correctement s'il n'est pas sur un système de fichiers NFS? –