# Tab+complétion nom de fichier+sudo+droits

**URL:** <https://www.debian-fr.org/t/tab-completion-nom-de-fichier-sudo-droits/87865>\
**Category:** Support Debian\
**Created:** [Février 14, 2023, 1:31 UTC](https://www.debian-fr.org/t/tab-completion-nom-de-fichier-sudo-droits/87865 "2023-02-14T13:31:44Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![zao](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/z/ce7236/32.png) [@zao](https://www.debian-fr.org/u/zao)\
**Post date:** [Février 14, 2023, 1:31 UTC](https://www.debian-fr.org/t/tab-completion-nom-de-fichier-sudo-droits/87865/1 "2023-02-14T13:31:44Z")

</div>

bonjour ,

j’aimerais avoir un avis sur mon interprétation d’une erreur que j’ai commise sans en comprendre l’origine à propos de la lecture de **/root/.selected\_editor** = comme la complétion ( avec sudo cat … ) du nom de ce fichier ne fonctionnait pas j’en avais déduit qu’il n’existait pas , et pourtant en utilisant un terminal root je l’ai bien trouvé .

- hypothèse de départ que je faisais jusqu’à ce matin : si la complétion du nom d’un fichier n’aboutit pas c’est que le fichier n’existe pas . Avec l’utilisation très fréquente que je fais de sudo je viens d’en voir une limite : il faut penser aux droits

```nohighlight
mm@Xfce:~$ sudo ls -l /root/.selected_editor
-rw-r--r-- 1 root root 75 14 févr. 01:35 /root/.selected_editor

root@Xfce:~# cat .se(lected_editor) ---> completion OK
mm@Xfce:~$ sudo cat /ro(ot/) ---> completion OK 
mm@Xfce:~$ sudo cat /root/.se( ) ---> la completion ne marche plus

```

apparemment les droits de lecture de l’utilisateur ne suffisent pas pour la complétion et comme la complétion dans un terminal root fonctionne il faut donc aussi les droits d’écriture . Est-ce correct ? C’est la question la plus importante .

Ensuite vient la question pourquoi ? Un lien vers une explication claire de "comment fonctionne la complétion avec Tab et sous linux " devrait suffire . Je vais essayer de trouver ça mais si une âme charitable était encline à me faciliter la tâche …

---

<div class="post-metadata">

**Author:** ![anon29980398](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/f4b2a3/32.png) [@anon29980398](https://www.debian-fr.org/u/anon29980398)\
**Post date:** [Février 14, 2023, 2:07 UTC](https://www.debian-fr.org/t/tab-completion-nom-de-fichier-sudo-droits/87865/2 "2023-02-14T14:07:05Z")

</div>

Bonjour

```nohighlight
mic@deb116:~$ ls -ld /root/
drwx------ 7 root root 4096 14 févr. 14:10 /root/
mic@deb116:~$ 

```

Les _bits mode_ pour un répertoire :  
**`r`** Lister le contenu du répertoire  
**`w`** Créer et supprimer des fichiers dans le répertoire  
**`x`** Accéder aux fichiers contenus dans le répertoire

Le propriétaire de ce répertoire est le compte `root`  
Donc, seul le propriétaire (donc `root`) de ce répertoire a le droit  
d’en lister le contenu, d’y créer/supprimer un fichier, et d’accéder aux fichiers qu’il contient.

* * *

Si la ligne de commandes est rédigée depuis le compte `mm`  
la complétion ne sera exécutée qu’avec les privilèges du compte `mm`  
qui n’a donc pas accès au contenu du répertoire `/root/`  
et donc ne peut pas savoir quels fichiers existeraient dans ce répertoire

* * *

Je te laisse appliquer le même raisonnement à la racine du système,  
sachant que les _bits mode_ de la racine sont :

```nohighlight
mic@deb116:~$ ls -ld /
drwxr-xr-x 19 root root 4096 29 sept. 2014 /
mic@deb116:~$ 

```

---

<div class="post-metadata">

**Author:** ![zao](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/z/ce7236/32.png) [@zao](https://www.debian-fr.org/u/zao)\
**Post date:** [Février 14, 2023, 2:21 UTC](https://www.debian-fr.org/t/tab-completion-nom-de-fichier-sudo-droits/87865/3 "2023-02-14T14:21:08Z")

</div>

> [@anon29980398](#):
>
> Donc, seul le propriétaire (donc `root` ) de ce répertoire a le droit  
> d’en lister le contenu

voilà donc la vraie raison du refus de complétion : j’étais sur la bonne voie mais je ne regardais pas là où il fallait = les droits associés au répertoire et non au fichier . Merci bien . De plus je viens d’apprendre une nouvelle option qui concerne les répertoires .

Tant qu’on est dans les répertoires , en abusant un peu :

```plaintext
mm@Xfce:~$ ls -ld /root
drwx------ 8 root root 4096 14 févr. 01:36 /root
mm@Xfce:~$ ls -ld /root/
drwx------ 8 root root 4096 14 févr. 01:36 /root/

```

je sais que /root = le home de root . Que désigne /root/ ? Je ne vois pas de différence même pour leur contenu:

```plaintext
root@Xfce:~# ls -a ; ls -a /root/
. .bash_aliases .cache .gnupg .profile .synaptic
.. .bash_history .config .lesshst .selected_editor .vim
20-intel.com .bashrc file .local sudo .viminfo
. .bash_aliases .cache .gnupg .profile .synaptic
.. .bash_history .config .lesshst .selected_editor .vim
20-intel.com .bashrc file .local sudo .viminfo

```

---

<div class="post-metadata">

**Author:** ![anon29980398](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/f4b2a3/32.png) [@anon29980398](https://www.debian-fr.org/u/anon29980398)\
**Post date:** [Février 14, 2023, 2:45 UTC](https://www.debian-fr.org/t/tab-completion-nom-de-fichier-sudo-droits/87865/4 "2023-02-14T14:45:55Z")

</div>

Dans le cas que tu présentes, il n’y a pas de différence,  
mais dans certains cas :

```nohighlight
mic@deb116:~$ ls -l ~/partage
lrwxrwxrwx 1 root root 23 5 janv. 13:28 /home/mic/partage -> /donnees/michel/partage
mic@deb116:~$ 

```

Ci-dessus, on voit que le nom de fichier listé est un fichier de type `l`ien (voir la lettre `l` au début de ligne retournée) et que ce fichier est lié au fichier nommé `/donnees/michel/partage`

```nohighlight
mic@deb116:~$ ls -ld ~/partage
lrwxrwxrwx 1 root root 23 5 janv. 13:28 /home/mic/partage -> /donnees/michel/partage
mic@deb116:~$ 

```

Ci-dessus, même si j’ai utilisé l’option `d`, le retour est exactement le même que précédement.

```nohighlight
mic@deb116:~$ ls -ld ~/partage/
drwxr-xr-t 2 mic mic 4096 20 déc. 2021 /home/mic/partage/
mic@deb116:~$ 

```

Ci-dessus, j’ai ajouté un / à la fin du nom à lister  
et on voit que le retour n’est plus du tout le même :  
les bits mode, la date/heure, etc. ne sont plus les mêmes  
car ce ne sont plus les ceux du lien, mais du fichier lié  
et ce fichier lié est d’ailleurs un fichier de type répertoire  
vu la première lettre retournée qui est un `d`

```nohighlight
mic@deb116:~$ ls -l ~/partage/
total 4
-rw-r--r-- 1 mic mic 88 6 janv. 2022 monFichierPartagé
mic@deb116:~$ 

```

Ci-dessus, on voit le contenu du répertoire lié  
alors que sans le / à la fin du nom, comme dans la première ligne de commande donnée dans ces exemples, on ne verrait que le nom du lien .

* * *

Voici les deux lignes de commande l’une après l’autre,  
avec pour seule différence, ce caractère / en plus à la fin du nom

```nohighlight
mic@deb116:~$ ls -l ~/partage
lrwxrwxrwx 1 root root 23 5 janv. 13:28 /home/mic/partage -> /donnees/michel/partage
mic@deb116:~$ 

```

```nohighlight
mic@deb116:~$ ls -l ~/partage/
total 4
-rw-r--r-- 1 mic mic 88 6 janv. 2022 monFichierPartagé
mic@deb116:~$ 

```

---

<div class="post-metadata">

**Author:** ![zao](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/z/ce7236/32.png) [@zao](https://www.debian-fr.org/u/zao)\
**Post date:** [Février 14, 2023, 2:53 UTC](https://www.debian-fr.org/t/tab-completion-nom-de-fichier-sudo-droits/87865/5 "2023-02-14T14:53:43Z")

</div>

> Non, je n’ai pas dit `ls -l /dev/fd` , mais `ls -l /dev/fd/` . `/dev/fd` est un lien symbolique […] vers un répertoire, si tu ne mets pas le `/` final, `ls` va penser que tu peux voir le lien symbolique et non pas le contenu du répertoire ciblé.

c’était la remarque de @Almtesh suite à une erreur que j’avais faite et qui concernait l’oubli de cette barre oblique . Je ne m’en suis souvenu que suite à ta remarque ci-dessus . Avec un peu de chance ça restera .

en tout cas merci pour tous ces commentaires très clairs .

---

<div class="post-metadata">

**Author:** ![gregoryroche0](https://www.debian-fr.org/user_avatar/www.debian-fr.org/gregoryroche0/32/13099_2.png) [@gregoryroche0](https://www.debian-fr.org/u/gregoryroche0)\
**Post date:** [Février 14, 2023, 2:55 UTC](https://www.debian-fr.org/t/tab-completion-nom-de-fichier-sudo-droits/87865/6 "2023-02-14T14:55:07Z")

</div>

C’est pas compliqué :

1. le chemin d’un fichier peut contenir le caractère oblique «/».
2. un nom de fichier ne peut pas contenir le caractère oblique «/».

Et c’est tout. 🙂

---

<div class="post-metadata">

**Author:** ![bub](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/b/3ab097/32.png) [@bub](https://www.debian-fr.org/u/bub)\
**Post date:** [Février 14, 2023, 7:48 UTC](https://www.debian-fr.org/t/tab-completion-nom-de-fichier-sudo-droits/87865/7 "2023-02-14T19:48:36Z")

</div>

> [@gregoryroche0](#):
>
> C’est pas compliqué :

pas si sûr …  
Je la trouve bien simpliste cette dernière affirmation …  
Un chemin peut contenir (c’est presque un euphémisme) une barre oblique, voire plusieurs… OK,  
Mais, un nom de fichier ne peut pas contenir de barre oblique ?? même en y apposant une contre oblique « \ » devant ou des guillemets, ou que sais-je… et justement j’en sais rien d’où je demande… 🙂

---

<div class="post-metadata">

**Author:** ![gregoryroche0](https://www.debian-fr.org/user_avatar/www.debian-fr.org/gregoryroche0/32/13099_2.png) [@gregoryroche0](https://www.debian-fr.org/u/gregoryroche0)\
**Post date:** [Février 15, 2023, 10:24 UTC](https://www.debian-fr.org/t/tab-completion-nom-de-fichier-sudo-droits/87865/8 "2023-02-15T10:24:35Z")

</div>

Oui c’est simpliste, mais c’est à remettre dans le contexte.

> un nom de fichier ne peut pas contenir de barre oblique ??

En cherchant un peu, on obtient :

- Windows (FAT32, NTFS): Any Unicode except `NUL` , `\` , `/` , `:` , `*` , `?` , `"` , `<` , `>` , `|` .
- Mac(HFS, HFS+): Any valid Unicode except `:` or `/`
- Linux(ext[2-4]): Any byte except `NUL` or `/`

Et même si c’était possible, l’utilisation d’un caractère oblique pour nommer un fichier ne serait qu’une mauvaise pratique.

> même en y apposant une contre oblique « \ » devant ou des guillemets

Tu ne risques pas grand-chose à faire un test. 🙂

---

<div class="post-metadata">

**Author:** ![choops](https://www.debian-fr.org/user_avatar/www.debian-fr.org/choops/32/8109_2.png) [@choops](https://www.debian-fr.org/u/choops)\
**Post date:** [Février 15, 2023, 10:37 UTC](https://www.debian-fr.org/t/tab-completion-nom-de-fichier-sudo-droits/87865/9 "2023-02-15T10:37:55Z")

</div>

> [@bub](#):
>
> Mais, un nom de fichier ne peut pas contenir de barre oblique ?? même en y apposant une contre oblique « \ » devant ou des guillemets, ou que sais-je… et justement j’en sais rien d’où je demande… 🙂

Par l’exemple:

```auto
  15/02/2023   11:32.48   /home/mobaxterm  touch test\/1
touch: test/1: Not a directory

  15/02/2023   11:33.01   /home/mobaxterm  touch "test/1"
touch: test/1: Not a directory

  15/02/2023   11:33.17   /home/mobaxterm  touch 'test/1'
touch: test/1: Not a directory

  15/02/2023   11:33.28   /home/mobaxterm 

```
