web-dev-qa-db-fra.com

Comment faire samba suivre le lien symbolique en dehors du chemin partagé

Il s'agit du serveur Ubuntu 10.04 64 et samba 3.4.7.

J'ai un répertoire partagé /home/mit/share et un autre /home/temp que je relie au partage:

ln -s /home/temp /home/mit/share/temp

Mais sur Windows, après avoir utilisé Internet, je ne peux pas ouvrir S:/temp, mais sous Linux, il est possible d'accéder à /home/mit/share/temp comme prévu.

Cela fonctionne si je lie des répertoires à l'intérieur de /home/mit/share/temp, donc je suppose que samba restreint de sauter avec un lien en dehors/au-dessus du répertoire partagé.

MODIFIER:

Voir aussi cette question intitulée buntu + dernière version de samba, les liens symboliques ne fonctionnent plus sur le partage monté dans Windows .

Il semble préférable de mettre unix extensions = no dans la section globale et follow symlinks = yes et wide links = yes uniquement dans la section partages, où vous en avez vraiment besoin.

Le unix extension L'indicateur doit vivre dans la section globale et non dans les sections d'actions individuelles. Mais pour des raisons de sécurité, il est préférable d'utiliser les autres options uniquement là où vous en avez besoin, et non globalement.

65
mit

Modifier smb.conf

[global]
unix extensions = no

[share]
follow symlinks = yes
wide links = yes

Remarque: Si vous utilisez une version plus récente de samba, ce qui suit peut fonctionner pour vous à la place:

[global]
allow insecure wide links = yes

[share]
follow symlinks = yes
wide links = yes

documentation sur follow symlinks et wide links drapeaux: https://www.samba.org/samba/docs/using_samba/ch08.html#samba2-CHP-8-TABLE-1

102
Mahesh

Alternativement aux autres réponses, pour garder les extensions unix activées, il est possible d'utiliser:

[global]
allow insecure wide links = yes

[share]
follow symlinks = yes
wide links = yes
11
user1182474

Salutations, j'ai essayé de mettre cela en configuration pour corriger les liens symboliques pour Windows pour ma configuration, mais je ne suis pas sûr si cela affectera le client Windows, sinon il suit les liens symboliques lorsque je me connecte à cette boîte.

[global]                                                                        
unix extensions = no
11
Qiqi

Pour permettre aux clients Samba de suivre les liens symboliques en dehors du chemin partagé, tout ce dont vous avez besoin dans la configuration Samba est:

[global]
allow insecure wide links = yes
unix extensions = no

[myShare]
wide links = yes

(en plus des définitions de partage Samba elles-mêmes, bien sûr). C'est-théoriquement- suffisant pour les clients * nix.

NB: La directive "follow symlinks" n'est pas nécessaire car elle est par défaut "yes"

Quant aux clients Windows, 1 paramètre est encore manquant pour leur permettre de suivre ces liens. Faire cela :

  1. ouvrir un shell Windows disposant de privilèges d'administrateur
  2. courir :

    fsutil behavior set SymlinkEvaluation L2L:1 R2R:1 L2R:1 R2L:1
    
  3. redémarrer pour recharger les paramètres

NB: le même résultat peut être obtenu en éditant le registre Windows. Voir les liens ci-dessous

sources :

4
Httqm

Vous devrez peut-être traiter plus que le fichier de configuration Samba si vous exécutez AppArmor.

Vous avez besoin des directives suivantes dans votre smb.conf:

follow symlinks = yes
wide links = yes
unix extensions = no
# No need for "allow insecure wide links" unless you want "unix extensions = yes"

Mais, AppArmor bloque l'accès à certaines parties du système de fichiers selon sa propre sémantique d'ensemble de règles. Donc, si votre lien symbolique dans Samba pointait vers un emplacement qu'AppArmor bloquerait, Samba refuserait l'accès.

Sur mon système, Samba met à jour les profils AppArmor au démarrage/arrêt du service, afin que je puisse modifier un profil AppArmor, mais risquer que Samba ou un autre programme l'écrase. Au lieu de cela, j'ai décidé de créer un partage inaccessible dans Samba référençant l'emplacement qui contenait la cible du lien symbolique auquel je voulais accéder (toujours dans smb.conf):

# The following is a hack for AppArmor to allow the path
[share1 for AppArmor] # Or whichever name you choose
    browseable = no
    path = /home # Point to directory or parent directory of the location to access
    read only = yes
    guest ok = no
    valid users = none
0
palswim