Man page - path_resolution(7)
Packages contains this manual
- shm_overview(7)
- nss(5)
- proc_mtrr(5)
- intro(7)
- tcp(7)
- iso_8859-9(7)
- armscii-8(7)
- proc_kpagecount(5)
- initrd(4)
- mouse(4)
- proc_stat(5)
- x25(7)
- proc_interrupts(5)
- fifo(7)
- repertoiremap(5)
- icmp(7)
- futex(7)
- feature_test_macros(7)
- lp(4)
- bpf-helpers(7)
- epoll(7)
- proc_sys_dev(5)
- namespaces(7)
- proc_sysrq-trigger(5)
- proc_bus(5)
- cp1251(7)
- proc_pid_maps(5)
- proc_sys_vm(5)
- proc_pid_projid_map(5)
- st(4)
- proc_pid(5)
- issue(5)
- pid_namespaces(7)
- unicode(7)
- inode(7)
- hosts.equiv(5)
- iso-8859-13(7)
- proc_fb(5)
- proc_modules(5)
- proc_pid_autogroup(5)
- keyrings(7)
- sysvipc(7)
- proc_kmsg(5)
- cgroups(7)
- latin6(7)
- proc_pid_uid_map(5)
- unix(7)
- proc_pid_io(5)
- pts(4)
- packet(7)
- ld-linux.so(8)
- tzselect(8)
- iconv(1)
- proc_pid_syscall(5)
- proc_pid_net(5)
- proc_pid_pagemap(5)
- tty(4)
- proc_profile(5)
- standards(7)
- proc_pid_mounts(5)
- filesystems(5)
- iso-8859-15(7)
- locale(5)
- iso_8859_3(7)
- xattr(7)
- iso-8859-2(7)
- proc_uptime(5)
- persistent-keyring(7)
- credentials(7)
- proc_pid_timers(5)
- utmpx(5)
- vcsa(4)
- proc_pid_exe(5)
- proc_net(5)
- proc_timer_stats(5)
- ip(7)
- proc_pid_fd(5)
- ptmx(4)
- user_namespaces(7)
- resolv.conf(5)
- url(7)
- iso_8859_5(7)
- iso_8859-8(7)
- urn(7)
- process-keyring(7)
- proc_pid_auxv(5)
- proc_ksyms(5)
- proc_ide(5)
- veth(4)
- ldd(1)
- proc_swaps(5)
- landlock(7)
- proc_vmstat(5)
- system_data_types(7)
- cp1252(7)
- lirc(4)
- proc_kpageflags(5)
- random(7)
- precedence(7)
- cpuset(7)
- proc_pid_ns(5)
- acct(5)
- latin4(7)
- proc_pid_cgroup(5)
- proc_cpuinfo(5)
- iso_8859-2(7)
- proc_keys(5)
- charsets(7)
- pldd(1)
- proc_pid_stat(5)
- rtnetlink(7)
- netlink(7)
- ram(4)
- mem(4)
- iso-8859-6(7)
- proc_key-users(5)
- iso_8859_15(7)
- fanotify(7)
- proc_sys_net(5)
- sysfs(5)
- math_error(7)
- latin1(7)
- proc_pid_root(5)
- nptl(7)
- proc_cgroups(5)
- proc_iomem(5)
- proc_pid_statm(5)
- sem_overview(7)
- hier(7)
- full(4)
- proc_pid_status(5)
- proc_pid_cwd(5)
- proc_pid_cpuset(5)
- proc_scsi(5)
- uri(7)
- proc_diskstats(5)
- iso_8859_6(7)
- latin2(7)
- latin5(7)
- man-pages(7)
- ld.so(8)
- uts_namespaces(7)
- proc_pid_mountstats(5)
- intro(3)
- proc_pid_seccomp(5)
- proc_pid_wchan(5)
- attributes(7)
- symlink(7)
- mount_namespaces(7)
- charmap(5)
- tis-620(7)
- iso-8859-10(7)
- getent(1)
- proc_buddyinfo(5)
- ttytype(5)
- rtc(4)
- proc_malloc(5)
- suffixes(7)
- sln(8)
- signal(7)
- proc_sys_abi(5)
- signal-safety(7)
- time_namespaces(7)
- proc_pid_comm(5)
- raw(7)
- gai.conf(5)
- proc_crypto(5)
- locale(1)
- iso-8859-3(7)
- motd(5)
- proc_meminfo(5)
- iso-8859-8(7)
- protocols(5)
- proc_pid_map_files(5)
- pthreads(7)
- null(4)
- proc(5)
- zdump(8)
- socket(7)
- proc_sys_kernel(5)
- ddp(7)
- memusagestat(1)
- hd(4)
- iso-8859-14(7)
- shells(5)
- pipe(7)
- glob(7)
- proc_self(5)
- network_namespaces(7)
- utmp(5)
- proc_kcore(5)
- nsswitch.conf(5)
- sd(4)
- iso-8859-5(7)
- iso_8859_16(7)
- man(7)
- iso_8859-6(7)
- dir_colors(5)
- mq_overview(7)
- vsock(7)
- ascii(7)
- thread-keyring(7)
- fs(5)
- proc_pid_attr(5)
- proc_sys_debug(5)
- proc_sys(5)
- proc_pid_cmdline(5)
- pty(7)
- services(5)
- cgroup_namespaces(7)
- securetty(5)
- netdevice(7)
- iso_8859_13(7)
- host.conf(5)
- proc_pid_setgroups(5)
- proc_slabinfo(5)
- sock_diag(7)
- iso_8859-14(7)
- iso-8859-11(7)
- iso_8859_11(7)
- operator(7)
- regex(7)
- wavelan(4)
- proc_sys_fs(5)
- nologin(5)
- proc_pci(5)
- koi8-r(7)
- erofs(5)
- intro(2)
- utf8(7)
- proc_kallsyms(5)
- proc_sysvipc(5)
- queue(7)
- proc_sys_sunrpc(5)
- intro(5)
- latin8(7)
- mtrace(1)
- ipc_namespaces(7)
- dsp56k(4)
- iso_8859_4(7)
- proc_pid_smaps(5)
- proc_cmdline(5)
- rpc(5)
- proc_tty(5)
- proc_version(5)
- smartpqi(4)
- proc_pid_timerslack_ns(5)
- aio(7)
- session-keyring(7)
- resolver(5)
- slabinfo(5)
- wtmp(5)
- iso_8859_9(7)
- proc_locks(5)
- mailaddr(7)
- proc_pid_oom_score(5)
- kmem(4)
- iconvconfig(8)
- iso_8859-7(7)
- glibc(7)
- hostname(7)
- proc_thread-self(5)
- ipv6(7)
- iso_8859_7(7)
- proc_kpagecgroup(5)
- core(5)
- time(7)
- units(7)
- proc_dma(5)
- loop(4)
- address_families(7)
- zero(4)
- intro(4)
- procfs(5)
- iso_8859-4(7)
- vdso(7)
- tmpfs(5)
- iso-8859-16(7)
- iso_8859_10(7)
- user-session-keyring(7)
- libc(7)
- proc_fs(5)
- koi8-u(7)
- latin3(7)
- proc_tid_children(5)
- proc_pid_limits(5)
- proc_pid_coredump_filter(5)
- iso_8859-15(7)
- arp(7)
- urandom(4)
- iso_8859-10(7)
- hpsa(4)
- proc_pid_environ(5)
- boot(7)
- ftm(7)
- ld-linux(8)
- proc_driver(5)
- loop-control(4)
- iso_8859-16(7)
- proc_filesystems(5)
- tzfile(5)
- sprof(1)
- proc_pid_task(5)
- proc_pid_oom_score_adj(5)
- proc_mounts(5)
- iso-8859-4(7)
- iso_8859-1(7)
- utf-8(7)
- iso_8859-13(7)
- intro(6)
- proc_timer_list(5)
- rtld-audit(7)
- iso_8859-3(7)
- group(5)
- sched(7)
- proc_pid_clear_refs(5)
- hosts(5)
- iso_8859-11(7)
- numa(7)
- iso_8859_2(7)
- locale(7)
- iso-8859-1(7)
- fuse(4)
- proc_tid(5)
- proc_execdomains(5)
- proc_pid_mountinfo(5)
- intro(8)
- iso_8859_8(7)
- proc_loadavg(5)
- proc_pid_oom_adj(5)
- re_format(7)
- iso_8859_14(7)
- zic(8)
- bootparam(7)
- inotify(7)
- posixoptions(7)
- proc_partitions(5)
- iso-8859-9(7)
- proc_pid_mem(5)
- networks(5)
- proc_sys_user(5)
- udp(7)
- proc_zoneinfo(5)
- latin10(7)
- proc_pid_fdinfo(5)
- proc_pid_stack(5)
- memusage(1)
- spufs(7)
- pkeys(7)
- path_resolution(7)
- proc_ioports(5)
- intro(1)
- ldconfig(8)
- msr(4)
- svipc(7)
- port(4)
- proc_pid_personality(5)
- cciss(4)
- latin9(7)
- capabilities(7)
- localedef(1)
- vcs(4)
- iso_8859-5(7)
- elf(5)
- proc_sys_proc(5)
- console_codes(4)
- random(4)
- iso-8859-7(7)
- termcap(5)
- cpuid(4)
- environ(7)
- string_copying(7)
- proc_pid_gid_map(5)
- queue(3)
- termio(7)
- user-keyring(7)
- complex(7)
- latin7(7)
- proc_config.gz(5)
- udplite(7)
- kernel_lockdown(7)
- proc_devices(5)
- proc_apm(5)
- iso_8859_1(7)
- proc_pid_numa_maps(5)
apt-get install manpages
Available languages:
en fr pl ja ro deManual
path_resolution
NOMDESCRIPTION
Ătape 1 : dĂ©marrer le processus de rĂ©solution
Ătape 2Â : parcourir le chemin
Ătape 3 : trouver lâentrĂ©e finale
. et ..
Points de montage
Barres obliques de fin
Lien symbolique final
Limite de longueur
Nom de chemin vide
Permissions
Contourner les vérifications de permissions : superutilisateur et capacités
VOIR AUSSI
TRADUCTION
NOM
path_resolution â Trouver le fichier auquel un chemin fait rĂ©fĂ©rence
DESCRIPTION
Certains appels systÚme UNIX/Linux ont pour paramÚtre un ou plusieurs noms de fichier. Un nom de fichier (ou chemin) est résolu de la maniÚre suivante.
Ătape 1 : dĂ©marrer le processus de rĂ©solution
Si le chemin dĂ©bute par le caractĂšre « / », le rĂ©pertoire de recherche de dĂ©part est le rĂ©pertoire racine du processus appelant. Un processus hĂ©rite son rĂ©pertoire racine de son parent. Habituellement, câest le rĂ©pertoire racine de la hiĂ©rarchie des fichiers. Un processus peut avoir un rĂ©pertoire racine diffĂ©rent avec lâutilisation de lâappel systĂšme chroot (2) ou peut temporairement utiliser un rĂ©pertoire racine diffĂ©rent en utilisant openat2 (2) avec lâattribut RESOLVE_IN_ROOT dĂ©fini.
Un processus peut obtenir un espace de noms montage complĂštement privĂ© dans le cas ou il â ou un de ses ancĂȘtres â a Ă©tĂ© dĂ©marrĂ© par une invocation de lâappel systĂšme clone (2) dont lâattribut CLONE_NEWNS est dĂ©fini. Cela gĂšre la partie « / » du chemin.
Si le chemin ne dĂ©bute pas par le caractĂšre « / », le rĂ©pertoire de recherche de dĂ©part du processus de rĂ©solution est le rĂ©pertoire courant du processus â ou dans le cas dâappel systĂšme du style openat (2), lâargument dfd (ou le rĂ©pertoire courant de travail si AT_FDCWD est passĂ© en tant quâargument dfd ). Le rĂ©pertoire courant de travail est hĂ©ritĂ© du parent et peut ĂȘtre modifiĂ© avec lâappel systĂšme chdir (2).
Les chemins débutant par le caractÚre « / » sont appelés chemins absolus. Les chemins ne débutant pas par le caractÚre « / » sont appelés chemins relatifs.
Ătape 2Â : parcourir le chemin
DĂ©finir le rĂ©pertoire courant de recherche au rĂ©pertoire de dĂ©marrage de recherche. Puis pour chaque composant non terminal du chemin, oĂč un composant est une sous-chaine dĂ©limitĂ©e par des caractĂšres « / », ce composant est recherchĂ© dans le rĂ©pertoire courant de recherche.
Si le processus nâa pas les permissions nĂ©cessaires pour effectuer la recherche dans le rĂ©pertoire de recherche courant, une erreur EACCES est renvoyĂ©e (« Permission denied » : « Permission non accordĂ©e »).
Si le composant nâest pas trouvĂ©, une erreur ENOENT est renvoyĂ©e (« No such file or directory » : « Aucun fichier ou rĂ©pertoire de ce type »).
Si le composant est trouvĂ©, mais nâest ni un rĂ©pertoire ni un lien symbolique, une erreur ENOTDIR est renvoyĂ©e (« Not a directory » : « Nâest pas un rĂ©pertoire »).
Si le composant est trouvé et est un répertoire, le répertoire de recherche courant devient ce répertoire et on passe au composant suivant.
Si le composant est trouvĂ© et est un lien symbolique, on rĂ©sout dâabord ce lien (avec le rĂ©pertoire de recherche courant comme rĂ©pertoire de recherche de dĂ©part). Si une erreur survient, cette erreur est renvoyĂ©e. Si le rĂ©sultat de la rĂ©solution nâest pas un rĂ©pertoire, une erreur ENOTDIR est renvoyĂ©e. Si la rĂ©solution du lien symbolique est couronnĂ©e de succĂšs et renvoie un rĂ©pertoire, le rĂ©pertoire de recherche courant devient ce rĂ©pertoire et on passe au composant suivant. Veuillez noter que le processus de rĂ©solution peut impliquer une rĂ©cursivitĂ© si le composant prĂ©fixe (« dirname ») du chemin contient un nom de fichier qui est un lien symbolique qui mĂšne Ă un rĂ©pertoire (oĂč le composant prĂ©fixe de ce rĂ©pertoire peut contenir un lien symbolique, et ainsi de suite). Afin de protĂ©ger le noyau dâun dĂ©bordement de pile et Ă©galement dâun dĂ©ni de service, il y a des limites Ă la profondeur maximale de rĂ©cursivitĂ© et au nombre maximal de liens symboliques suivis. Une erreur ELOOP est renvoyĂ©e lors ces maxima sont atteints (« Too many levels of symbolic links » : « Trop de niveaux de liens symboliques »).
Tel que mis en Ćuvre dans Linux, le nombre maximal de liens symboliques pouvant ĂȘtre suivis pour la rĂ©solution de chemin est 40. Avant Linux 2.6.18, la limite de profondeur de rĂ©cursion Ă©tait 5. Depuis Linux 2.6.18, cette limite a Ă©tĂ© relevĂ©e Ă Â 8. Dans Linux 4.2, le code du noyau pour la rĂ©solution de chemin a Ă©tĂ© retravaillĂ© pour Ă©liminer lâutilisation de la rĂ©cursion, aussi la seule limite qui demeure est le maximum de 40 rĂ©solutions pour le chemin complet.
La rĂ©solution de liens symboliques dans cette Ă©tape peut ĂȘtre bloquĂ©e en utilisant openat2 (2), avec lâattribut RESOLVE_NO_SYMLINKS Ă©tabli.
Ătape 3 : trouver lâentrĂ©e finale
La recherche du dernier composant du nom de chemin sâeffectue de la mĂȘme maniĂšre que pour les autres composants, comme dĂ©crit dans lâĂ©tape prĂ©cĂ©dente, avec deux diffĂ©rences : (1) le composant final nâa pas besoin dâĂȘtre un rĂ©pertoire (du moins tant que le processus de rĂ©solution du chemin est concernĂ© â il peut ĂȘtre ou ne pas ĂȘtre un rĂ©pertoire, suivant les exigences de lâappel systĂšme concernĂ©), et (2) ce nâest peut-ĂȘtre pas une erreur si le composant nâest pas trouvĂ© â peut-ĂȘtre vient-il juste dâĂȘtre créé. Les dĂ©tails du traitement du composant final sont dĂ©crits dans les pages de manuel des appels systĂšme concernĂ©s.
. et ..
Par convention, chaque rĂ©pertoire possĂšde les entrĂ©es . et .. qui se rapportent, respectivement, au rĂ©pertoire lui-mĂȘme et Ă son rĂ©pertoire parent.
Le processus de résolution de chemin considÚre que ces entrées ont leurs sens conventionnels, sans considération de leur existence ou non sur le systÚme de fichiers physique.
Il nâest pas possible de remonter au-dessus de la racine : /.. est identique Ă / .
Points de montage
AprĂšs une commande mount pĂ©riphĂ©rique chemin , le nom de chemin chemin fait rĂ©fĂ©rence Ă la racine de la hiĂ©rarchie du systĂšme de fichiers sur le pĂ©riphĂ©rique , et plus du tout Ă ce quâil rĂ©fĂ©rençait prĂ©cĂ©demment.
On peut sortir dâun systĂšme de fichiers monté : chemin/.. fait rĂ©fĂ©rence au rĂ©pertoire parent de chemin , en dehors de la hiĂ©rarchie du systĂšme de fichiers sur pĂ©riphĂ©rique .
Le parcours de points de montage peut ĂȘtre bloquĂ© en utilisant openat2 (2) avec lâattribut RESOLVE_NO_XDEV Ă©tabli (remarquez cependant que cela restreint le parcours de montage « bind »).
Barres obliques de fin
Si un nom de chemin se termine par un « / », cela force la rĂ©solution du composant qui le prĂ©cĂšde comme dĂ©crit dans lâĂ©tape 2 : le composant avant lâoblique finale doit soit exister et ĂȘtre rĂ©solu comme rĂ©pertoire, soit Ă©voquer un rĂ©pertoire devant ĂȘtre créé immĂ©diatement aprĂšs la rĂ©solution du chemin. Autrement, un « / » final est ignorĂ©.
Lien symbolique final
Si le dernier composant dâun nom de chemin est un lien symbolique, cela dĂ©pend de lâappel systĂšme si le fichier rĂ©fĂ©rencĂ© sera le lien symbolique ou bien le rĂ©sultat de la rĂ©solution de chemin sur son contenu. Par exemple, lâappel systĂšme lstat (2) agit sur le lien symbolique alors que stat (2) agit sur le fichier pointĂ© par le lien symbolique.
Limite de longueur
Il existe une longueur maximale pour les noms de chemin. Si le chemin (ou un chemin intermédiaire obtenu en résolvant un lien symbolique) est trop long, une erreur ENAMETOOLONG est renvoyée (« Filename too long » : « Nom de fichier trop long »).
Nom de chemin vide
Dans lâUNIX dâorigine, un nom de chemin vide faisait rĂ©fĂ©rence au rĂ©pertoire courant. Aujourdâhui, POSIX dĂ©crĂšte quâun nom de fichier vide ne doit pas ĂȘtre rĂ©solu avec succĂšs. Linux renvoie ENOENT dans ce cas.
Permissions
Les bits de permissions dâun fichier consistent en trois groupes de trois bits, cf. chmod (1) et stat (2). Le premier de ces groupes est utilisĂ© lorsque lâUID effectif du processus appelant est Ă©gal Ă lâID du propriĂ©taire du fichier. Le deuxiĂšme de ces groupes est utilisĂ© lorsque le GID du fichier est soit Ă©gal au GID effectif du processus appelant, soit est un des GID supplĂ©mentaires du processus appelant (comme configurĂ© avec setgroups (2)). Lorsquâaucun ne correspond, le troisiĂšme groupe est utilisĂ©.
Des trois bits utilisĂ©s, le premier dĂ©termine la permission de lecture, le deuxiĂšme la permission dâĂ©criture et le dernier la permission dâexĂ©cution dans le cas dâun fichier ordinaire ou la permission de recherche dans le cas dâun rĂ©pertoire.
Linux utilise le fsuid Ă la place de lâUID effectif lors de la vĂ©rification des permissions. Dâordinaire, le fsuid est Ă©gal Ă lâUID effectif, mais le fsuid peut ĂȘtre modifiĂ© avec lâappel systĂšme setfsuid (2).
Ici, « fsuid » signifie quelque chose comme « ID utilisateur du systĂšme de fichiers » (« filesystem user ID »). Le concept Ă©tait requis pour lâimplĂ©mentation dâun serveur NFS en espace utilisateur lorsque les processus pouvaient envoyer un signal Ă un processus qui avait le mĂȘme UID effectif. Il est aujourdâhui obsolĂšte. Personne ne devrait utiliser setfsuid (2).
De la mĂȘme maniĂšre, Linux utilise le fsgid (ID de groupe du systĂšme de fichiers) Ă la place du GID effectif. Consultez setfsgid (2).
Contourner les vérifications de permissions : superutilisateur et capacités
Sur un systĂšme UNIX traditionnel, le superutilisateur ( root , dâidentifiant 0) est tout-puissant et contourne toutes les restrictions de permissions lorsquâil accĂšde Ă des fichiers.
Sous Linux, les privilĂšges du superutilisateur sont divisĂ©s en capacitĂ©s (consultez capabilities (7)). Deux de ces capacitĂ©s sont liĂ©es aux vĂ©rifications dâaccĂšs aux fichiers : CAP_DAC_OVERRIDE et CAP_DAC_READ_SEARCH . (Un processus a ces capacitĂ©s si son fsuid est 0.)
La capacitĂ© CAP_DAC_OVERRIDE Ă©crase toutes les vĂ©rifications de permission, mais nâassurera la permission dâexĂ©cution que si au moins un des trois bits de permission dâexĂ©cution de fichier est Ă©tabli.
La capacité CAP_DAC_READ_SEARCH accorde la permission de lecture et de recherche sur les répertoires et la permission de lecture sur les fichiers ordinaires.
VOIR AUSSI
readlink (2), capabilities (7), credentials (7), symlink (7)
TRADUCTION
La traduction française de cette page de manuel a été créée par Christophe Blaess <https://www.blaess.fr/christophe/>, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org>, David Prévot <david@tilapin.org> et Jean-Paul Guillonneau <guillonneau.jeanpaul@free.fr>
Cette traduction est une documentation libre ; veuillez vous reporter Ă la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il nây a aucune RESPONSABILITĂ LĂGALE.
Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à debian-l10n-french@lists.debian.org .