Je veux savoir comment un processus de Linux décide quels privilèges il a? supposons qu'il existe un programme binaire "Read_File" qui lit le fichier /home/myname/data.txt et affiche le contenu de celui-ci dans la sortie STD, maintenant comment Read_File décide s'il a ou non l'autorisation de lire data.txt, Quel type d'ID vérifie-t-il pour décider des privilèges?comment un processus dans linux décide-t-il des privilèges qui lui sont attribués?
Répondre
D'abord, un peu de fond:
Le processus est généralement exécuté par un utilisateur spécifique. Ainsi, par exemple, si vous vous connectez et exécutez le programme, il fonctionnera avec les mêmes privilèges que vous. Vous pouvez vérifier les autorisations sur le fichier avec stat
ou ls -l
.
En utilisant stat
[email protected]:/tmp$ stat foo
File: `foo'
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fb00h/64256d Inode: 618 Links: 1
Access: (0644/-rw-r--r--) Uid: (11204/ malbert) Gid: (10513/domain users)
Access: 2011-06-10 13:03:27.181227226 +0200
Modify: 2011-06-10 13:03:27.181227226 +0200
Change: 2011-06-10 13:03:27.181227226 +0200
Les infos importantes ici sont:
Access: (0644/-rw-r--r--) Uid: (11204/ malbert) Gid: (10513/domain users)
Cela vous indique les autorisations pour le propriétaire (rw-
), groupe (r--
) et tout le monde (r--
). Il affiche également l'ID du propriétaire actuel (Uid
) et l'ID du groupe actuel (Gid
).
Les abréviations signifient:
r
= accès en lecturew
= accès en écriturex
= exécuter/déplacement accès au répertoire
En utilisant ls -l
ls -l
vous donne un résumé rapide:
[email protected]:/tmp$ ls -l /tmp
total 48
drwx------ 2 malbert domain users 4096 2011-06-10 08:51 akonadi-malbert.zOSngu
-rw-r--r-- 1 malbert domain users 0 2011-06-10 13:03 foo
drwx------ 2 kdm nogroup 4096 2011-06-10 08:51 kde-kdm
drwx------ 3 malbert domain users 4096 2011-06-10 08:51 kde-malbert
[snip]
Ici vous pouvez voir la même information qu'avec stat
, mais comme un résumé. En outre, les uid et les gid sont résolus en noms (dans ce cas malbert
et domain users
). Vous pouvez utiliser ls -u
pour les voir en tant que valeurs numériques.
Si vous voulez exécuter l'application en tant que différent comme toi-même, vous pouvez utiliser su
, sudo
ou votre application utilisateur lui-même peut déposer et changer priviledges l'utilisateur, il est en cours d'exécution comme. C'est généralement la façon dont les démons du système font les choses.
ACLs/attributs étendus
Soyez prudent sur les attributs étendus. Lors de la liste des fichiers utilisant ls -l
, ils sont visibles avec un signe +
ajouté. Par exemple:
[email protected]:/tmp$ ls -l
total 48
drwx------ 2 malbert domain users 4096 2011-06-10 08:51 akonadi-malbert.zOSngu
-rw-rwxr--+ 1 malbert domain users 0 2011-06-10 13:03 foo
drwx------ 2 kdm nogroup 4096 2011-06-10 08:51 kde-kdm
drwx------ 3 malbert domain users 4096 2011-06-10 08:51 kde-malbert
[snip]
Notez la ligne suivante:
-rwxr--+ 1 malbert domain users 0 2011-06-10 13:03 foo
Le signe +
dans -rwxr--+
des points aux attributs étendus. Il est possible que ce sont des ACL. Il y a an excellent document on ACLs dans la documentation SuSE. Allez y jeter un oeil si vous en avez besoin. Expliquer les ACL ferait certainement exploser cet article, donc je n'en parlerai pas.
Les attributs étendus peuvent également être liés au système de fichiers. Voir the man page of chattr pour plus d'informations à ce sujet.
Maintenant, en tant que sidenote: c'est StackOverflow. Les questions devraient être liées au développement. Pour des questions comme celle-ci, il y a http://www.serverfault.com. Mais comme vous n'étiez pas au courant, que ce n'est pas un problème de développement, mais plus lié à l'OS, je pensais que je devrais répondre de toute façon;)
Bonne chance, et amusez-vous!
Le processus ne décide de rien; Chaque fois qu'il essaie une opération, le système d'exploitation vérifie son EUID et décide s'il possède les privilèges requis.
Par exemple, lorsqu'il tente d'accéder à un fichier, le propriétaire et les autorisations du fichier sont vérifiés. Si l'EUID du processus n'a pas assez de privilèges pour une opération, cette opération échouera (généralement avec EPERM
).
- 1. Comment faire un programme pour redémarrer lui-même? (Processus Linux)
- 2. comment créer une application qui est approuvée et lui accorder des privilèges d'administrateur dans Dot net
- 3. Comment les threads IIS7 sont-ils attribués?
- 4. Comment déterminer si des privilèges élevés sont requis pour démarrer un processus sans vérification par échec
- 5. Comment donner des privilèges spécifiques de processus dans Windows
- 6. Comment démarrer un processus fils d'un processus démon qui n'est pas lui-même démon
- 7. Comment afficher un bloc dans Twig s'il y a des données qui lui sont transmises?
- 8. Tuer un processus dans Linux
- 9. Comment vérifier si un processus a des privilèges élevés dans Windows 7 en utilisant C++ natif?
- 10. Comment lister tous les processus qui utilisent/accèdent à un pilote de noyau Linux donné
- 11. Comment les noms de registres de mémoire sont-ils attribués?
- 12. Détecter les privilèges de débogage sur un processus (Windows, C)
- 13. Comment renommer un processus sous Linux?
- 14. Trouver les problèmes qui m'ont été attribués
- 15. si je fais sched_setaffinity dans un processus, les threads engendrés par lui sont affectés
- 16. débogage processus Linux avec suid
- 17. Puis-je partager un descripteur de fichier avec un autre processus sous Linux ou sont-ils locaux au processus?
- 18. Apprentissage par renforcement - Optimisation des poids attribués
- 19. Création d'un enregistrement et l'ajout d'enregistrements qui lui sont associés
- 20. JQuery. Trouver div qui a des données spécifiques() qui lui sont associés
- 21. Django Forms: Comment éditer des champs qui ne sont pas sur le modèle lui-même
- 22. comment tuer 2 processus dans Linux
- 23. Comment obtenir ATTRIBUÉS dans l'attribut to_json
- 24. Comment les modèles d'éditeur et les modèles d'affichage peuvent-ils reconnaître les attributs qui leur sont attribués?
- 25. Pourquoi les privilèges d'administrateur sont-ils requis?
- 26. Comment puis-je savoir dans quels cours un utilisateur de Desire2Learn LE a des privilèges, et quels sont leurs rôles dans ces cours?
- 27. Obtention des objets hérités lorsqu'ils ne sont pas attribués en tant qu'exportations dans MEF
- 28. Outil qui me montre quels fichiers sont écrits sous Linux?
- 29. Bloc de contrôle des processus sous Linux
- 30. Quand les ID d'entité LinqToSql sont-ils attribués?
Est-ce que UID joue un rôle? – Yadnesh
@Yadnesh Lire http://en.wikipedia.org/wiki/User_identifier – cnicutar