Configuration smb.conf : Résolu!

Salut!

Voilà, je me suis configuré un serveur Samba. A priori tout devrait fonctionner : les répertoires sont configurés, les utilisateurs sont entrés via la commande smbpasswd -a nom_utilisateurs… et ils sont rajoutés aux répertoires auxquels je souhaitent qu’ils puissent avoir accès.

Pourtant… Y a quelque chose qui cloche. En effet, de mon portable, utilisateur “christian”, tout passe comme une lettre à la poste. Je peux créer, supprimer n’importe quel fichier dans n’importe quel répertoire “enfant”. Mais dans le cas de db2admin (cf. valid users dans le répertoire /home/Partage, au niveau de la configuration), sur un autre ordi du réseau (celui de db2admin, je le précise), je peux ouvrir le répertoire, sans soucis, sans avoir à taper de mot de passe (pas depuis le smbpasswd), et pourtant, mazette, impossible de lui faire créer de nouveaux fichiers ou répertoires. Pas possible non plus d’en supprimer à partir du poste de cet utilisateur. Pourtant (provisoirement), j’ai mis des droits en 777 au niveau du répertoire et des fichiers qui y sont inclus. J’avoue que je ne vois pas le problème… Je ne crois pas à priori, que je doivent passer par la gestion des ACL pour lui permettre de shooter des fichiers, non? Bref… Je met ici le fichier smb.conf, dès fois que vous parveniez à mettre le nez dans le problème… Parce que moi, après avoir bien cherché, pourtant, je ne vois pas…

Le fichier smb.conf :

Sample configuration file for the Samba suite for Debian GNU/Linux.

This is the main Samba configuration file. You should read the

smb.conf(5) manual page in order to understand the options listed

here. Samba has a huge number of configurable options most of which

are not shown in this example

Any line which starts with a ; (semi-colon) or a # (hash)

is a comment and is ignored. In this example we will use a

for commentary and a ; for parts of the config file that you

may wish to enable

NOTE: Whenever you modify this file you should run the command

“testparm” to check that you have not made any basic syntactic

errors.

#======================= Global Settings =======================

[global]

Browsing/Identification

Change this to the workgroup/NT-domain name your Samba server will part of

workgroup = MSHOME

server string is the equivalent of the NT Description field

server string = %h server

Windows Internet Name Serving Support Section:

WINS Support - Tells the NMBD component of Samba to enable its WINS Server

; wins support = yes

WINS Server - Tells the NMBD components of Samba to be a WINS Client

Note: Samba can be either a WINS Server, or a WINS Client, but NOT both

; wins server = w.x.y.z

If we receive WINS server info from DHCP, override the options above.

include = /etc/samba/dhcp.conf

This will prevent nmbd to search for NetBIOS names through DNS.

dns proxy = no

What naming service and in what order should we use to resolve host names

to IP addresses

; name resolve order = lmhosts host wins bcast

Networking

The specific set of interfaces / networks to bind to

This can be either the interface name or an IP address/netmask;

interface names are normally preferred

; interfaces = 127.0.0.0/8 eth0

Only bind to the named interfaces and/or networks; you must use the

‘interfaces’ option above to use this.

It is recommended that you enable this feature if your Samba machine is

not protected by a firewall or is a firewall itself. However, this

option cannot handle dynamic or non-broadcast interfaces correctly.

; bind interfaces only = true

Debugging/Accounting

This tells Samba to use a separate log file for each machine

that connects

log file = /var/log/samba/log.%m

Put a capping on the size of the log files (in Kb).

max log size = 50

If you want Samba to only log through syslog then set the following

parameter to ‘yes’.

; syslog only = no

We want Samba to log a minimum amount of information to syslog. Everything

should go to /var/log/samba/log.{smbd,nmbd} instead. If you want to log

through syslog you should set the following parameter to something higher.

syslog = 0

Do something sensible when Samba crashes: mail the admin a backtrace

panic action = /usr/share/samba/panic-action %d

####### Authentication #######

hosts deny = all
hosts allow = 192.168.1.
#hosts allow = 127.0.0.1

“security = user” is always a good idea. This will require a Unix account

in this server for every user accessing the server. See

/usr/share/doc/samba-doc/htmldocs/Samba3-HOWTO/ServerType.html

in the samba-doc package for details.

#Permet l’aes auepertoire via le mot de passe utilisateur. Si l’on souhaite
#desactiver cette option et permettre l’acces sans mot de passe : remplacer “user”
#par “share”.
security = user

You may wish to use password encryption. See the section on

‘encrypt passwords’ in the smb.conf(5) manpage before enabling.

encrypt passwords = true

If you are using encrypted passwords, Samba will need to know what

password database type you are using.

passdb backend = tdbsam

obey pam restrictions = yes

; guest account = nobody
invalid users = root

This boolean parameter controls whether Samba attempts to sync the Unix

password with the SMB password when the encrypted SMB password in the

passdb is changed.

; unix password sync = no

For Unix password sync to work on a Debian GNU/Linux system, the following

parameters must be set (thanks to Ian Kahan <kahan@informatik.tu-muenchen.de for

sending the correct chat script for the passwd program in Debian Sarge).

passwd program = /usr/bin/passwd %u
passwd chat = Enter\snew\sUNIX\spassword: %n\n Retype\snew\sUNIX\spassword: %n\n password\supdated\ssuccessfully .

This boolean controls whether PAM will be used for password changes

when requested by an SMB client instead of the program listed in

‘passwd program’. The default is ‘no’.

; pam password change = no

########## Domains ###########

Is this machine able to authenticate users. Both PDC and BDC

must have this setting enabled. If you are the BDC you must

change the ‘domain master’ setting to no

; domain logons = yes

The following setting only takes effect if ‘domain logons’ is set

It specifies the location of the user’s profile directory

from the client point of view)

The following required a [profiles] share to be setup on the

samba server (see below)

; logon path = \%N\profiles%U

Another common choice is storing the profile in the user’s home directory

; logon path = \%N%U\profile

The following setting only takes effect if ‘domain logons’ is set

It specifies the location of a user’s home directory (from the client

point of view)

; logon drive = H:
; logon home = \%N%U

The following setting only takes effect if ‘domain logons’ is set

It specifies the script to run during logon. The script must be stored

in the [netlogon] share

NOTE: Must be store in ‘DOS’ file format convention

; logon script = logon.cmd

This allows Unix users to be created on the domain controller via the SAMR

RPC pipe. The example command creates a user account with a disabled Unix

password; please adapt to your needs

; add user script = /usr/sbin/adduser --quiet --disabled-password --gecos “” %u

########## Printing ##########

If you want to automatically load your printer list rather

than setting them up individually then you’ll need this

; load printers = yes

lpr(ng) printing. You may wish to override the location of the

printcap file

; printing = bsd
; printcap name = /etc/printcap

CUPS printing. See also the cupsaddsmb(8) manpage in the

cupsys-client package.

; printing = cups
; printcap name = cups

When using [print$], root is implicitly a ‘printer admin’, but you can

also give this right to other users to add drivers and set printer

properties

; printer admin = @ntadmin

############ Misc ############

Using the following line enables you to customise your configuration

on a per machine basis. The %m gets replaced with the netbios name

of the machine that is connecting

; include = /home/samba/etc/smb.conf.%m

Most people will find that this option gives better performance.

See smb.conf(5) and /usr/share/doc/samba-doc/htmldocs/Samba3-HOWTO/speed.html

for details

You may want to add the following on a Linux system:

SO_RCVBUF=8192 SO_SNDBUF=8192

socket options = TCP_NODELAY

The following parameter is useful only if you have the linpopup package

installed. The samba maintainer and the linpopup maintainer are

working to ease installation and configuration of linpopup and samba.

; message command = /bin/sh -c ‘/usr/bin/linpopup “%f” “%m” %s; rm %s’ &

Domain Master specifies Samba to be the Domain Master Browser. If this

machine will be configured as a BDC (a secondary logon server), you

must set this to ‘no’; otherwise, the default behavior is recommended.

; domain master = auto

Some defaults for winbind (make sure you’re not using the ranges

for something else.)

; idmap uid = 10000-20000
; idmap gid = 10000-20000
; template shell = /bin/bash
;
; The following was the default behaviour in sarge
; but samba upstream reverted the default because it might induce
; performance issues in large organizations
; See #368251 for some of the consequences of not having
; this setting and smb.conf(5) for all details
;
; winbind enum groups = yes
; winbind enum users = yes

#======================= Share Definitions =======================

[homes]
comment = Home Directories
browseable = no

By default, the home directories are exported read-only. Change next

parameter to ‘yes’ if you want to be able to write to them.

writable = no

File creation mask is set to 0700 for security reasons. If you want to

create files with group=rw permissions, set next parameter to 0775.

create mask = 0700

Directory creation mask is set to 0700 for security reasons. If you want to

create dirs. with group=rw permissions, set next parameter to 0775.

directory mask = 0700

Restrict access to home directories

to the one of the authenticated user

This might need tweaking when using external authentication schemes

valid users = %S

[christian]
comment = Repertoire christian
path = /home/christian
valid users = christian = yes
admin users = root
#cette option permettra aux “invites” d’aeder auepertoire s’ils sont entres dans valid users et
#si smbpasswete configure.
guest ok = ok
#cette option permettra ou non à l’utilisateur d’écrire dans le répepertoire
writable = no
#cette option permettra ou non à l’utilisateur de voir le réepertoire dans le voisinage reseau
browseable = no
#cette option validera les droits sur les fichiers. 7=rwx, 6=rw, 4=r, 2=w, 1=x
#où r=lecture, w=écriture et x=exécution pour Users, Groups et Others
#(le premier chiffre représentant la nature du fichier, le secon “users”, etc.
create mask = 0700
#meme chose que ci-dessus mais pour le répertoire
directory mask = 0700
share modes = no
public = no

[db2admin]
comment = Repertoire Maman
Path = /home/christian
valid users = db2admin christian = yes
admin users = root
guest ok = ok
browseable = yes
writable = no
create mask = 0777
directory mask = 0755
public = no
share modes = yes

[Partage]
comment = Repertoire Partage
path = /home/Partage
valid users = christian db2admin Axel = yes
guest ok = yes
admin users = christian root
browseable = yes
read only = no
writeable = yes
#a tester: browseable = no guest ok = yes
#create mask = masque “chmod” associés aux fichiers créés
create mask = 0777
#directory mask = masque “chmod” associés au répertoire
directory mask = 0777
#fait en sorte que le répertoire soit partagé
share modes = yes
public = no

Un-comment the following and create the netlogon directory for Domain Logons

(you need to configure Samba to act as a domain controller too.)

;[netlogon]
; comment = Network Logon Service
; path = /home/samba/netlogon
; guest ok = yes
; writable = no
; share modes = no

Un-comment the following and create the profiles directory to store

users profiles (see the “logon path” option above)

(you need to configure Samba to act as a domain controller too.)

The path below should be writable by all users so that their

profile directory may be created the first time they log on

;[profiles]
; comment = Users profiles
; path = /home/samba/profiles
; guest ok = no
; browseable = no
; create mask = 0600
; directory mask = 0700

[printers]
comment = All Printers
browseable = no
path = /var/spool/samba
printable = yes
public = no
writable = no
create mode = 0700

Windows clients look for this share name as a source of downloadable

printer drivers

[print$]
comment = Printer Drivers
path = /var/lib/samba/printers
browseable = yes
read only = yes
guest ok = no

Uncomment to allow remote administration of Windows print drivers.

Replace ‘ntadmin’ with the name of the group your admin users are

members of.

; write list = root, @ntadmin

A sample share for sharing your CD-ROM with others.

;[cdrom]
; comment = Samba server’s CD-ROM
; writable = no
; locking = no
; path = /cdrom
; public = yes

The next two parameters show how to auto-mount a CD-ROM when the

cdrom share is accesed. For this to work /etc/fstab must contain

an entry like this:

/dev/scd0 /cdrom iso9660 defaults,noauto,ro,user 0 0

The CD-ROM gets unmounted automatically after the connection to the

If you don’t want to use auto-mounting/unmounting make sure the CD

is mounted on /cdrom

; preexec = /bin/mount /cdrom
; postexec = /bin/umount /cdrom

Au fait, pendant que j’y suis, le “;” correspond à quoi, en début de ligne? C’est un commentaire, apparemment, mais je n’en situe pas bien le rôle. J’ai seulement cru comprendre que contrairement à ce qui se passe dans le cas du commentaire “#”, le fait d’ôter le “;” permet de ne pas avoir à relancer le service. La configuration serait prise en compte à chaud, en quelque sorte, et au bout de quelques secondes. Ce serait ça?

Bref, pour l’histoire du fichier de conf… Je suis ouvert à toutes suggestions.

quote
[db2admin]
comment = Repertoire Maman
Path = /home/christian
valid users = db2admin christian = yes
admin users = root
guest ok = ok
browseable = yes
[size=150]writable = no[/size]
create mask = 0777
directory mask = 0755
public = no
share modes = yes
(…)[/quote]
Ton pbm viens peut-être de là, non ?

LOL non… Bon… Ce qui m’intéresse, ici, et dans l’immédiat, c’est le répertoire “Partage”, qui est le seul que je souhaite voir visible. Par sécurité, pour l’instant, j’ai donc mis les autres en browseable = no et en writeable = no (enfin… presque, puisque en effet, le répertoire db2admin est encore visible, je crois, mais c’est pour le moment normal). De même, il ne faut pas être surpris par les 777 que j’ai mis en mask sur les fichiers et répertoires de Partage. Je compte restreindre les droits sur Partage plus tard.

En fait, le “pépin” c’est que je voudrais faire en sorte que l’utilisateur db2admin puisse utiliser le répertoire Partage non pas seulement en lecture, mais aussi en ecriture et en exécution sur les fichiers (petite question : le droit d’exécution signifie bien qu’il pourra supprimer les fichiers qu’il souhaite, n’est ce pas?).
Or, malgré le fait que l’utilisateur existe, qu’il ait été créé via un adduser, un smbpasswd -a, qu’il soit noté dans “valid users”, et malgré un masque à 777 sur les fichiers (créate mask), malgré les options “writeable” et cie, y a rien à faire, quand je suis connecté sur le poste de l’utilisateur en tant que db2admin, je ne peux qu’ouvrir et naviguer dans les répertoire. Je vois les fichiers mais je ne peux ni les copier, ni les créer, ni les supprimer. En revanche, j’ai un droit de lecture sur tous les fichiers…

Une explication?

Dsl Anatomic… J’aurais dû préciser que ce qui m’intéressait, c’était le répertoire Partage. Le pb se situe bien au niveau de l’utilisateur db2admin, ok, mais dans le cadre du répertoire Partage et non du répertoire dudit utilisateur. En gros, pour faire plus clair, il s’agit de faire en sorte qu’un utilisateur autre que Christian (qui n’est autre moi-même, donc) puisse au moins copier des fichiers issus de “Partage” sur son propre poste. Ce qui semble ne pas être possible ici, puisque db2admin ne peut que lire les fichiers sans pouvoir faire autre chose.
:slightly_smiling:

Hey… Ok… là, j’aurais besoin de comprendre un peu… Je crois que le problème d’accès venait du fait que je n’avais pas les bons droits au niveau, non pas des fichiers mais du répertoire… pas le droit de naviguer, etc…

Bon, pour l’instant, et j’affinerai plus tard (le serveur, c’est le mien, donc y a pas d’urgence), j’ai mis 777 sur le répertoire “Partage”. J’ai donc voulu rajouter un utilisateur, que je nommerais DB2ADMIN, avec un smbpasswd -a. Ok, tout s’est bien passé… Je passe de l’autre côté, sur le poste utilisé par l’utilisateur du même “nom”, j’entre le mot de passe : pas moyen d’entrer sur le dossier “Partage”. En revanche, le dossier db2admin est créé… Je crois que c’est normal, sur ce point. Par contre, là où je ne comprends pas : le dossier en question à un CONTENU. En fait le même que celui du dossier Partage. Mieux, encore : lorsque je fais une modification dans le dossier Partage, la modification se retrouve direct dans le dossier db2admin… Comme s’il s’agissait non pas de deux répertoires différents mais d’un seul disposant de deux noms et en quelque sorte d’un raccourci… Et donc, pour finir, comme si non pas un nouveau dossier nommé db2admin avait été créé mais comme si un lien physique s’était mis en place.

Cependant, lorsque je fais un ls -r sur les répertoires, je n’ai que “d” comme attribut, et non pas “l” qui, lui, indiquerait un lien symbolique. So? Keskicepassdanslespace? On ne créé pas un répertoire, mais un lien physique sur le répertoire? Ou il y a un rapport avec les options que j’ai choisi (genre “shared”). Je comprends de moins en moins…

Y a une âme charitable pour m’éclairer?

Thanks d’avance.

Ok… pour le coup du “pointage”, je crois que c’était de ma faute : le path n’était pas bon, et pointait tous deux sur /home/Partage… Etonnant (et bon à savoir). Même Path = deux répertoires apparents, mais même contenu. Ouais, bon à savoir…

Cela étant, maintenant, et après avoir changé les droits, j’ai accès (au moins ça) à un répertoire db2admin, ok, vide, ok, je peux écrire, lire, supprimer, ok… en revanche, avec l’utilisateur db2admin, sur son poste, je n’ai pas accès au répertoire commun “Partage”, ce qui était initialement le but du jeux. Et ce, même en entrant le login et le mot de passe choisi lors de sa création avec smbpasswd… Arghhh. Je n’en vois pas la raison. Une idée?

Ok… (re)changement : le pb n’était dû qu’à un mauvais “valid_user”. J’avais oublié de rajouter l’utilisateur en question (faut savoir que j’ai dû tout réinstaller il y a peu et j’ai oublié de vérifier ce détail. J’y ai pensé juste après mon précédent message, ci-dessus).

Mon Partage est configuré comme suit :

[Partage]
comment = Repertoire Partage
path = /home/Partage
valid users = christian db2admin = yes
guest ok = yes
admin users = christian root
browseable = yes
writeable = yes
create mask = 0777
directory mask = 0777
share modes = yes
public = no

Question finale : Le reste est ok. Cependant, en tant que db2admin, j’ai maintenant accès au répertoire “Partage”. Mais je ne peux pas écrire de fichier dessus… alors que les droits sont au maximum.

Et là… Je sèche… je sèchais déjà l’autre jours. So???

J’ai trouvé!!!

Un truc totalement idiot : lorsque le répertoire est créé… on peut y mettre tous les droits du monde mais… Faut faire un chmod sur ledit droit! ARGGGRRHHHH la honte… J’ai pensé à tout sauf à ça… Bref, pour le rendre public, on peut lui mettre un 777… Et hop! Ca marche!!!

Yeah!!

Cela étant… pour mettre “résolu” au pb, on fait comment???

Tu édites le titre du 1er poste

ok, thanks!