Scipts bash de connection pour freenas
Bonjour,
Voilà je vous expose mon problème :
J'ai installé un freenas sur une VM pour l'entreprise ou je travail. J'ai ajouté un deuxième disque au disque système pour stocker les données des fichiers partagés. J'ai ensuite fais un point de montage dessus et créer mon dossier de partage. J'ai choisi le service samba pour partager mon dossier. L'authentification se fait grâce à l'AD.
Le problème est le suivant :
J'aimerais qu'à la connexion d'un utilisateur sur le centre de partage, un script vérifie si l'utilisateur à un dossier propre déjà créé ou non. Si ce n'est pas le cas le script devra créé le dossier avec pour droits : seul l'utilisateur et l'admin pourront y accéder. Où est-ce que je dois mettre mon script et comment faire pour le lancer à la connexion d'un utilisateur ?
(Je compte faire un script bash).
Voilà je vous expose mon problème :
J'ai installé un freenas sur une VM pour l'entreprise ou je travail. J'ai ajouté un deuxième disque au disque système pour stocker les données des fichiers partagés. J'ai ensuite fais un point de montage dessus et créer mon dossier de partage. J'ai choisi le service samba pour partager mon dossier. L'authentification se fait grâce à l'AD.
Le problème est le suivant :
J'aimerais qu'à la connexion d'un utilisateur sur le centre de partage, un script vérifie si l'utilisateur à un dossier propre déjà créé ou non. Si ce n'est pas le cas le script devra créé le dossier avec pour droits : seul l'utilisateur et l'admin pourront y accéder. Où est-ce que je dois mettre mon script et comment faire pour le lancer à la connexion d'un utilisateur ?
(Je compte faire un script bash).
31 réponses
Résumé de la discussion
La problématique est d'automatiser la création de dossiers utilisateurs lors de la connexion à un partage Samba sur FreeNAS via AD, avec des droits limités. Des approches ont été évoquées, notamment l'utilisation du .bashrc côté utilisateur AD, ou d'un script de logon Samba, qui peut nécessiter un fichier .bat plutôt qu'un bash. Un point clé est la récupération du nom d'utilisateur côté Samba, le symbole %username% renvoyant l'utilisateur local et non l'identité AD, d'où les difficultés rencontrées. En outre, les échanges ont mis en évidence que le journal Samba et son niveau (loglevel) influencent les informations disponibles, mais que les résultats peuvent varier entre connexions.
-
super !!!
ba maintenant, il faut juste récupérer le nom du fichier :)
-
Bon en fait je viens de m'apercevoir de mon erreur. Il faut mettre %U et nom pas %u. Maintenant ça me créé bien le fichier de log avec le nom de l'utilisateur connecté. Je vais voir si je peux en faire quelque chose.
-
Ok ben je vais tenter le coup et je te tiens au courant.
Et merci beaucoup de ton aide ;) -
c'est peut-être du au fait que tu te connecte via ldap ...
c'est rageant ce genre de probleme.
bon, ben méthode bourrin, je pense que c'est la que tu perdras le moins de temps a trouver une solution.
y a pluys qu'a trouver la méthode pour récupérer le propriétaire d'un fichier sous Windows. Sous linux rien de plus facile, mais bon la ça se complique.
tu script s'execute en batch je suppose ?
-
Bon ben j'ai une mauvaise nouvelle ça ne marche pas non plus. Ça me créé un fichier nommé %u.userlog. J'ai essayé avec log.%u à tout hasard mais c'est pareil le fichier créé porte le nom log.%u.
Je commence à me demander s'il n'y a pas un problème quelque part... -
Bon ben désolé de t'annoncer une mauvaise nouvelle mais ça marche pas non plus. Le fichier de log créé est nommé : %u.userlog
J'ai essayé en faisant log file = /var/log/samba/log.%u à tout hasard mais il met fait un fichier : log.%u et rien n'est affiché dans les fichiers en plus.
Je me demande s'il n'y a pas un problème quelque part... -
je crois que j'ai trouvé :)
au lieu de %m, met %u !
%m crée un fichier de log au nom de la machine, %u le crée au nom de l'utilisateur
donc si tu mets:
log file = /var/log/samba/%u.userlog
tu auras un fichier contenant le nom de l'utilisateur.
simple de le récupérer après :)
-
Au début je ne l'avais pas mis car je pensais qu'il avait un fichier par défaut.
Après j'avais rajouté cette ligne mais je l'ai enlevé car ça ne fonctionnait pas plus. Par contre j'avais mis avec log file = /var/log/samba/log.smbd
Je viens d'essayer avec ta ligne de commande ça ajoute bien les fichiers de log correspondant à mon PC par contre y a rien dedans :s Bizarre... -
Tu ne précises pas de logfile ??
rajoute ça:
log file = /var/log/samba/log.%m
a moins que ça soit deja le cas ?
-
Oui j'ai pu ajouter le paramètre mais il l'a ajouté à la fin de la section [global] de mon smb.conf donc je ne sais pas s'il est pris en compte mêm si je pense que oui.
Je te met les config de mon samba pour que tu vois.
[global]
encrypt passwords = yes
netbios name = freenas
workgroup = XXXXX
server string = Server
security = domain
dns proxy = no
# Settings to enhance performance:
use sendfile = yes
strict locking = no
read raw = yes
write raw = yes
oplocks = yes
max xmit = 65535
deadtime = 15
getwd cache = yes
socket options = IPTOS_LOWDELAY TCP_NODELAY SO_SNDBUF=64240 SO_RCVBUF=64240
# End of performance section
wins server = XXXXX
unix charset = UTF-8
large readwrite = no
store dos attributes = yes
local master = yes
time server = yes
guest account = ftp
display charset = XXXXX
max log size = 10
syslog only = yes
syslog = 10
load printers = no
printing = bsd
printcap name = /dev/null
disable spoolss = yes
log level = 10
dos charset = CP437
smb passwd file = /var/etc/private/smbpasswd
private dir = /var/etc/private
passdb backend = smbpasswd
allow trusted domains = no
dns proxy = no
ldap ssl = no
idmap domains = XXXX
idmap config NT_GQF:backend = rid
idmap config NT_GQF:range = 10000-999999
idmap uid = 10000-999999
idmap gid = 10000-999999
winbind enum groups = yes
winbind enum users = yes
winbind use default domain = yes
template homedir = /mnt
template shell = /bin/sh
logon script = droit_Utilisateurs.bat
auth : 4 -
mais tu ne peux pas spécifier de parametre supplémentaire pour les logs ?
quand je t'ai dit de mettre log level=3 auth:4 tu avais juste mis log level=3 ?
-
Non tu n'as pas du comprendre j'ai dut mal m'exprimer. En fait par défaut le loglevel de samba était à 1 et il me renvoyais comme info ce que je t'ai mis plus haut. Ensuite je l'ai mis à 3 et là je me suis loggé une fois et il m'a renvoyé pas mal d'info dans les log de samba. Mais ensuite à chaque fois que je me reloggais il ne m'envoyais comme info que celles qu'il m'envoyais quand j'avais mon loglevel à 1 (c'est à dire ce que je t'ai mis plus haut) et ce même en mettant mon loglevel à 10. Tu vois ou pas ? J'espère que j'ai été clair ^^
-
D'accord, donc tu n'as pas accès directement à la console.
Donc il n'y a aucune différence entre le loglevel 10 et le loglevel 3 ?
bizarre quand meme...
essaie loglevel=10 auth:10
sinon, pas le choix, faudra passer par la solution bourrin.
-
Je n'ai pas cette option dans l'interface web et pour configurer mon freenas je suis obligé de passer par cette interface pour qu'il prenne en compte mes modifications.
-
tu as essayé avec all ?
-
Bon je crois que je vais utiliser la deuxième solution (en supposant que j'y arrive) car j'ai eu toutes les info du log level = 3 tout à l'heure en me connectant une fois sur le partage. Mais maintenant dans les log il me remet juste les info de base comme ci le log level était à 1 et ce quelque soit le log level que je met. Bizarre... J'ai pourtant regarder dans tout les log mais ça ne m'affiche que les info de bases que je te met quand même :
[2010/09/08, 0] smbd/server.c:main(942)
smbd version 3.0.37 started.
Copyright Andrew Tridgell and the Samba Team 1992-2009 -
Bon ba dans ce cas tu as 2 solutions, bourrrines, mais qui marcheront...
tu mets le log level à 10 (enleve le reste) il va écrire comme un porc dans le fichier de log, au moins t'auras tout.
soit, dans le script de connexion, tu lui fait créer un fichier, et tu récupères le nom du propriétaire #OhLeGrosBourrin.
mais bon essaie deja ça:
log level=10
et sinon
log level=all
les 2 marchent normalement
copie colle 10 ou 15 lignes du fichier de log ici.
-
Merci beaucoup pour ces explications très utiles Leahkim. J'ai fais comme tu m'a conseillé malheureusement il ne me renvoie toujours pas le nom de l'utilisateur.
Pourtant il doit bien y avoir un moyen car quand je créé manuellement un nouveau fichier sur mon partage il va mettre les droit sur l'utilisateur connecté donc il doit bien récupéré l'utilisateur quelque part ! -
Pas de souci, je t'explique:
Les logs, tu dois le savoir sont des fichiers textes qui se remplissent avec des lignes écritent par un logiciel (daemon, script, cron, auth, etc.).
Ce logiciel, ou protocole, qui écrit ce qu'il fait dans ce fichier texte peut le faire de plusieurs manieres, qui en général sont les suivantes:
niveau 1: il n'écrit que les erreurs fatales au fonctionnement du logiciel
niveau 2: il écrit toutes les erreurs
niveau 3: il écrit les erreurs et les warnings
niveau 4: il écrit les erreurs, les warnings et les actions reussies.
d'habitude, on les appelle comme suit:
1: fatal
2: error
3: warning
4: debug
Evidemment, ça dépend des logiciels, et des gens qui les ont fait. Certains soft ont 11 ou 12 différents niveaux de log, et certains n'en ont qu'un seul.
Ici, en m'étant renseigné sur smb, j'ai pu constater que smb a 10 niveaux de log !!
Seulement, par défaut il est à 0, donc forcément ça logge pas grand chose.
Le système de log de smb est très évolué, il permet de détailler exactement ce qu'on veut voir écrire dans les logs, donc je te suggère de mettre l'option log level ainsi:
log level=3 auth:4
ainsi, tu auras plus de détail sur l'authentification de tes users :)
rajoute ça dans le smb.conf, redemarre ton serveur smb et utilise ton service smb avec un user au hasard.
va voir ensuite tes logs, tu auras surement le nom de l'utilisateur que tu as utilisé.
-
J'avoue que je comprend pas tout à fait ce que tu veux dire. Normalement smb logge mes user puisqui'il demande un nom d'utilisateur et un mdp pour se connecter au dossier de partage.
Je vois pas ce que tu veux dire par plusieurs niveaux de logge par contre. (dsl je suis assez novice ^^)
- 1
- 2
Suivant