C’est malheureusement l’un des aspects les plus déroutants du partage de fichiers sous Unix. Et je suis mauvais pour expliquer des choses confuses.
Ce que vous voyez dans la ls -l
sortie (par exemple), est l'ID de l'utilisateur distant traduit du point de vue du système local.
Lorsque des programmes tels que celui-ci ls
utilisent les fonctions standard pour rechercher des informations sur un fichier, le pilote du système de fichiers ne peut leur fournir que des ID utilisateur numériques, et non des noms textuels. (Jusqu'à présent, pas trop différent de Windows.) Pour traduire les UID en noms, ls
appelez un composant de système d'exploitation entièrement différent, les bibliothèques de services de noms, qui ne savent pas d'où provient cet UID et ne peut donc traduire que les comptes Le système d'exploitation le sait, mais ne peut pas revenir en arrière et demander l'aide du pilote du système de fichiers. (C'est là que la différence entre.)
Par exemple, si le serveur a deux fichiers, l’un appartenant à root (UID 0), l’autre appartenant à Luke (UID 1000), ls
saura seulement qu’ils appartiennent à "0" et "1000" et pour les comptes locaux qui ont les mêmes UID. "0" est toujours la racine, mais "1000" peut ou non être Luke. Si l'UID appartient à un compte stocké dans LDAP, NIS ou AD, et si le système d'exploitation client est réellement configuré pour rechercher des comptes d'utilisateur dans LDAP, le nom d'utilisateur correct sera fourni. Sinon, cela pourrait en fait mentir, car les UID des comptes locaux (1000, 1001, ...) ont tendance à correspondre à des personnes différentes sur des ordinateurs différents.
(Le pilote du système de fichiers peut indiquer le nom d'utilisateur complet aux programmes, sous la forme d '"attributs étendus". Malheureusement, malgré diverses tentatives, il n'existe pas de moyen standard de le faire, et des programmes tels que ls
généralement tentent d'éviter les astuces spécifiques au système de fichiers. Encore plus malheureusement, tous les protocoles de système de fichiers réseau ne peuvent pas transférer les noms d’utilisateur: CIFS ou SMB peuvent, NFSv4 peut, la plupart des autres ne le peuvent pas.)
Mais rien de tout cela n’importe vraiment, car ce que vous pouvez faire avec le fichier est toujours déterminé par ce que le serveur sait, et non par ce que le client voit. Par exemple, si vous l'utilisez sshfs
, il se connecte au serveur via SSH en utilisant votre nom d'utilisateur (par exemple sshfs luke@fileserver
), et le serveur ne vous laissera pas faire quoi que ce soit que vous n'êtes pas censé faire. La même chose avec CIFS, AFS, etc.
Le propriétaire est l'utilisateur root sur la machine distante. Si vous souhaitez y accéder en tant que root sur la machine distante, vous devez le monter en tant que root sur la machine distante.
En d'autres termes, cela devrait fonctionner (utilisateur local aye, utilisateur distant):
Cela ne fonctionnera pas (utilisateur local root, utilisateur distant):
la source