Partager un répertoire de l'utilisateur root via NFS

Bonjour tout le monde,

Tout est dans le titre je pense : je cherche à partager un répertoire de Monsieur Root par NFS.

Cela fonctionnait quant le propriétaire des répertoires/fichiers partagés n’était pas root. Depuis, j’ai simplement accès en lecture (donc ça marche, il ne manque que l’écriture). Faut-il que j’adapte ma configuration parce que j’ai fait chown -R root:root /srv/nfs ?

Sur le serveur :

cat /etc/exports

/srv/nfs/partage	192.168.2.0/24(rw,async,no_subtree_check)
/srv/nfs/public		192.168.2.0/24(ro,sync,no_subtree_check) laptop-ph(rw,sync,no_subtree_check)
/srv/rsync/phil		laptop-ph(ro,sync,no_subtree_check)
/srv/rsync/travail	laptop-ph(ro,sync,no_subtree_check)

cd /srv/ && ls -l nfs rsync

drwxr-xr-x 4 root     root      4096 jan  9 14:27 nfs
drwxr-xr-x 4 root     root      4096 déc  2 18:13 rsync

Sur le client laptop-ph :

cat /etc/fstab

server-bl:/srv/nfs/partage	/media/partage	nfs	rw,hard,intr	0	0
server-bl:/srv/nfs/public	/media/public	nfs	rw,hard,intr	0	0
server-bl:/srv/rsync/phil	/media/sauvegarde	nfs	rw,hard,intr	0	0

J’espère trouver ici un spécialiste de la question parce que j’ai déjà posé la question plusieurs fois et cherché un bon moment sans trouver de réponse particulière… J’espère vraiment qu’un paramètre NFS me permettra de laisser à root le soin de posséder mes fichiers sur le serveur. J’espère aussi garder NFS.

Merci d’avance pour votre aide.

Et pourquoi pas créer un groupe spécifique pour le partage de ce répertoire ?

Sur le serveur : nfs-share-root:x:2001:root,tonUser1;tonUSer2…
Idem (attention même ID) sur les clients

Tu mets les bons droits sur ton partage
drwxrwxr-x 4 root nfs-share-root 4096 jan 9 14:27 tonRepPartage

Tu automatises le montage via fstab

non ???

ATTENTION : c’est juste une idée, non testé et je ne sais pas ce que ça vaut niveau sécurité

++
Cyrille

Merci pour l’aide, je t’avoue que ça m’embête quand même, il est pas possible de tout laisser à root ?

Me demande pas pourquoi ça m’embête, c’est juste que j’aimerais confier les fichiers du serveur à root.

EDIT : En fait voilà, il pourra m’arriver de chrooter via OpenSSH un un accès sFTP sur un répertoire de mon dossier NFS. Il faut que mon répertoire appartienne à root pour que le ChrootDirectory de OpenSSH fonctionne. Et puis, je tiens en fait à ce que mes répertoires de /srv appartiennent à root ou aux utilisateurs des daemons comme www-data parce que les autres utilisateurs n’ont pas à y toucher.

Bah ça m’a l’air logique que si tu laisses tout à root, seul root y aura accès :smt003 :smt003 :smt003 :wink:

Dans ton groupe, tu sélectionnes les users autorisés, il n’est pas question que tous ait accès.

++
Cyrille

En fait, le problème est que mes postes clients n’ont plus accès en écriture au serveur NFS. Qu’est-ce que ça peut changer que je change le groupe du répertoire pour mettre des utilisateurs dedans ? Le répertoire sera toujours à root et donc NFS n’en permettra pas la modification non ?

Je dois mal comprendre quelque chose je pense…

Tu le modifies ça, uniquement pour le partage du doc que tu veux dans /etc/exports, puis exportfs -a

non ?

debianadmin.com/network-file … ebian.html

Je ne suis pas sûr d’avoir bien compris le problème :unamused:

On a dû partir sur une mauvaise base…

Je résume : j’avais les fichiers fstab et exports que j’ai copié collé dans mon premier message et je les ai toujours (je n’ai rien changé).

Avant : tout était ok.
Pendant : j’ai fait chown -R root:root /srv/nfs/ /srv/rsync/
Après : ça marche toujours en lecture depuis les clients mais je ne peux rien écrire sur les partages NFS

[quote=“Phi”]
Pendant : j’ai fait chown -R root:root /srv/nfs/ /srv/rsync/[/quote]

drwxr-xr-x 9 14:27 nfs drwxr-xr-x 4096 déc 2 18:13 rsync

ça seul le root peut écrire dedans -> c’est ce que tu as demandé en passant cette commande !

AMA, utilise ce que je t’ai dis plus haut : groupe dédié au partage NFS root
(puis chmod -R 774 pour donner les droits au groupe créé)

Bon je suis sur le point de céder là =)

Un dernier point, est-ce que toi ou un autre membre du forum connaissez le moyen de confier au serveur NFS les droits d’écriture sur les fichiers du root ?

srv@server-bl:~$ ps -edf | grep nfs root 1960 2 0 11:05 ? 00:00:00 [nfsiod] root 9085 2 0 16:38 ? 00:00:00 [nfsd4] root 9086 2 0 16:38 ? 00:00:03 [nfsd] root 9087 2 0 16:38 ? 00:00:05 [nfsd] root 9088 2 0 16:38 ? 00:00:03 [nfsd] root 9089 2 0 16:38 ? 00:00:04 [nfsd] root 9090 2 0 16:38 ? 00:00:04 [nfsd] root 9091 2 0 16:38 ? 00:00:04 [nfsd] root 9092 2 0 16:38 ? 00:00:04 [nfsd] root 9093 2 0 16:38 ? 00:00:03 [nfsd] srv 15354 15247 0 22:20 pts/0 00:00:00 grep nfs

Si j’en crois le résultat de mon ps, je ne comprends pas pourquoi nfs ne peut pas écrire les fichiers du root, il semble être exécuté par root 0_o

Merci encore pour ton aide.

Jette un oeil

vegdave.wordpress.com/2007/03/19 … olaris-10/
(doit exister un equivalent linux…)
troubleshooters.com/linux/nfs.htm

++
Cyrille

Salut,

Je vien de refaire un test pour être sûr; mon user root(sur la machine cliente) ne peut pas écrire dans un montage nfs. C’est le comportement par défaut, sécurité oblige.

ajoutes:

no_root_squash
à la ligne dans /etc/exports du server. Par défaut UID 0 = root est redirigée(par sécurité) sur l’UID d’ “anonymous” qui peut être définies. Ceci annule ce comportement.

Sinon:

man 5 exports

a+
Debcool

Je reprends un peu espoir :slightly_smiling:

J’arrive désormais, grâce à l’ajout de l’option no_root_squash, à écrire sur mes partages à condition que je navigue sur leurs points de montage avec le root de mes clients (ce que je ne fais jamais).

Je cherche donc à obtenir ce comportement mais pour les autres utilisateurs. Je suis en train de lire la documentation que tu me conseilles Cyrille.

Okay, man 5 à l’appui, j’ai pu obtenir le comportement que je recherche grâce à ce genre d’entrée dans exports :

/srv/nfs/partage 192.168.2.0/24(rw,async,no_subtree_check,all_squash,anongid=0,anonuid=0)

Je redirige toutes les connexions entrantes vers l’utilisateur anonyme du serveur (all_squash) et je dis que l’utilisateur anonyme est du groupe et user “root” (anongid=0,anonuid=0).

Par contre, j’aurais besoin d’aide pour en comprendre les subtilités liées à la sécurité par exemple parce que j’en entends beaucoup parler quand je cherche ces options de NFS sur Internet… Autrement dit, j’ai appliqué la recette sans vraiment la comprendre.

Mon premier problème est réglé mais est-ce que j’en créé un autre ? :slightly_smiling:

EDIT : En attendant une réaction sur ma nouvelle question, je traduis par écris ce que j’ai compris pour qu’on me corrige au besoin :wink:

# vi /etc/exports

    /srv/nfs/partage    192.168.2.0/24(rw,async,no_subtree_check,all_squash,anonuid=0,anongid=0)
    /srv/nfs/public     192.168.2.0/24(ro,sync) laptop-ph(rw,sync,no_subtree_check,no_root_squash)
    /srv/rsync/phil     laptop-ph(ro,sync,no_subtree_check)
    /srv/rsync/travail  laptop-ph(ro,sync,no_subtree_check)

Les options utilisées pour les partages sont justifiées comme suit :
- Les partages précieux sont en lecture seule (ro) ;
- Le mode async augmente les performances en désactivant certaines procédures
  de contrôle : je l'autorise sur le partage ;
- J'ai personnellement accès en écriture au public avec l'utilisateur root
  (no_root_squash permet de ne pas utiliser l'utilisateur anonyme sur le
  serveur si root est le client, et donc d'écrire sur des fichiers appartenant
  au root du serveur) ;
- L'écriture sur le partage est autorisée en substituant tout client par
  l'utilisateur anonyme sur le serveur (all_squash) et en redéfinissant cet
  utilisateur comme le root (anongid et anonuid à 0).

Salut,

[quote]Je redirige toutes les connexions entrantes vers l’utilisateur anonyme du serveur (all_squash) et je dis que l’utilisateur anonyme est du groupe et user “root” (anongid=0,anonuid=0).

Par contre, j’aurais besoin d’aide pour en comprendre les subtilités liées à la sécurité par exemple parce que j’en entends beaucoup parler quand je cherche ces options de NFS sur Internet… Autrement dit, j’ai appliqué la recette sans vraiment la comprendre.

Mon premier problème est réglé mais est-ce que j’en créé un autre ? :slightly_smiling:[/quote]

Ben, oui. Tu imposes le comportement inverse de celui par défaut(qui donne la priorité à la sécurité); en redirigent tous les users vers root et son groupe, tu leurs donnes automatiquement les mêmes droits… bref, t’est sous windows :open_mouth: tous le monde peut faire n’importe quoi… et ils le feront :slightly_smiling:

Blague dans le coin, c’est évidement la plus mauvaise solution d’un point de vue sécurité.

Ceci dit, il reste des possibilités pour réduire(pas éliminer!!) ces risques.
Rien ne t’empèches de créer des sous-interfaces réseaux(ou de mettre une deuxième interface dans les machines) et d’utiliser un addressage IP différent(+ désactiver le routage entre les deux réseaux!! ET ce, sur CHAQUE machine!!).
De fermer les ports liés à NFS dans le réseau à risque( celui qui a accès à internet) avec un firewall.
Il y a aussi les “TCP wrapper” avec les fichiers “/etc/hosts.allow” & “/etc/hosts.deny” + inetd ou xinetd…
L’authentification via un annuaire…

MAIS il restera toujours une chose sur laquelle tu perds TOUT contrôle… les actions de tes users! Imagines que qqu’un arrive, malgré tout, à se connecter(depuis l’internet) avec un de tes users; vu les droits qu’ils acquièrent, si l’un d’eux fait un “rm -Rf /” … l’effet serat des plus spectaculaire… :slightly_smiling:

Voilu,

A+
Debcool

J’ajoute quelques éléments :

[ul]
[li]Je suis derrière une Freebox qui n’a d’ouverts que de rares ports pour le moment ;[/li]
[li]Si l’on se réfère à mon dernier message, on voit que je n’applique cette solution un peu sauvage qu’au “partage” dont les données n’ont qu’une faible importance ;[/li]
[li]Comment un utilisateur du réseau ou quelqu’un en prenant l’identité pourrait faire un rm -rf / sur le serveur par l’intermédiaire de mon NFS ? Au pire, il dégomme le partage non ?[/li][/ul]

Dans un tel contexte, est-ce moins grave que tu le supposais ? Dois-je quand même me poser toutes ces questions ?