Table des matières
3 billet(s) pour janvier 2026
| Notes rsh rcp | 2026/01/21 18:08 | Jean-Baptiste |
| Git - Duplication d'un dépôt | 2026/01/19 10:22 | Jean-Baptiste |
| Exemple simple de conf Nagios | 2026/01/14 10:07 | Jean-Baptiste |
Wrapper to use su as sudo - Emulating sudo's behaviour with su
Ma proposition
sudo.sh
#!/bin/bash # This program is free software. It comes without any warranty, to # the extent permitted by applicable law. You can redistribute it # and/or modify it under the terms of the Do What The Fuck You Want # To Public License, Version 2, as published by Sam Hocevar. See # http://sam.zoy.org/wtfpl/COPYING for more details ARGS_STRING='' add_arg() { ARGS_STRING="${ARGS_STRING} $*" } echo "!!! WARNING: Using a fake sudo command !!!" >&2 while [ "${1-}" != "" ]; do case $1 in -s) shift add_arg "-s $1" ;; -u) shift add_arg "-p $1" ;; --) # End of all options shift break ;; *) add_arg -c add_arg "'$*'" shift break ;; esac shift done # echo su "${ARGS_STRING}" eval su "${ARGS_STRING}"
Autres exemples
Exemple 1
su_wrapper() { su -s /bin/bash -c "$(printf "%q " "$@")" }
ou
su_wrapper() { local IFS=' ' su -c "$*" }
Source : https://stackoverflow.com/questions/24340664/emulating-sudos-behaviour-with-su
Exemple 2
sudo-su
#! /bin/sh set -e # A wrapper around su and sudo to implement a basic sudo-style interface with # su and a basic su-style interface with sudo. # # This can be useful when using tools such as pdebuild(1) that integrate # privilege escalation only with sudo, or only with su: by having it run # this program instead, you actually use su, or sudo instead seemlessly. # # Copyright (C) Tanguy Ortolo <tanguy+sudo-su@ortolo.eu> 2011 # # This program is free software. It comes without any warranty, to # the extent permitted by applicable law. You can redistribute it # and/or modify it under the terms of the Do What The Fuck You Want # To Public License, Version 2, as published by Sam Hocevar. See # http://sam.zoy.org/wtfpl/COPYING for more details. usage() { rc=$1 echo "Usage: sudo-su COMMAND" >&2 echo " su-sudo -c \"COMMAND\"" >&2 echo "sudo-su uses su to implement a basic sudo-style interface" >&2 echo "su-sudo uses sudo to implement a basic su-style interface" >&2 exit $rc } fake_sudo() { TEMP="$(getopt -s sh -o +h --long help -n "$0" -- "$@")" if [ "$?" != 0 ] then usage $? fi eval set -- "$TEMP" while [ "$1" != "--" ] do case "$1" in -h|--help) usage 0 ; shift ;; esac done shift if [ "$#" -eq 0 ] then echo "sudo-su requires a command" >&2 usage 1 fi command="" for arg in "$@" do # To represent single quotes from single-quote mode: # leave single-quote mode, enter double-quote mode, write the single quote, # leave double-quote mode, enter single-quote mode. arg="$(echo "$arg" | sed -e "s/'/'\"'\"'/g")" if [ -z "$command" ] then command="'$arg'" else command="$command '$arg'" fi done exec su -c "$command" } fake_su() { TEMP="$(getopt -s sh -o hc: --long help,command: -n "$0" -- "$@")" if [ "$?" != 0 ] then usage $? fi eval set -- "$TEMP" while [ "$1" != "--" ] do case "$1" in -h|--help) usage 0 ; shift ;; -c|--command) command="$2" ; shift 2 ;; esac done shift if [ "$#" -ne 0 ] then echo "We take only a -c option, no argument, sorry" >&2 usage 1 fi if [ -z "$command" ] then echo "su-sudo requires a command" >&2 usage 1 fi exec sudo sh -c "$command" } case "$(basename $0)" in sudo*) fake_sudo "$@" ;; su*) fake_su "$@" ;; esac
Sources :
Autres
Proper usage of su :
su -c "$0" "$ZOO_USER" "$@"
Why is Zoom autostarting after screen lock/unlock
Source : Why is Zoom autostarting after screen lock/unlock ?
Zoom est un logiciel privateur et même un spyware ! https://www.zerohedge.com/technology/lets-make-simple-zoom-malware
Voici une alternative libre : https://meet.jit.si/
sudo sed -i '/zoom -root/d' /usr/share/X11/app-defaults/XScreenSaver
Ou encore renommer zoom
sudo mv /usr/bin/zoom /usr/bin/zoomm
Autres
Zoom dans un Docker
Install
docker run -it --rm --volume /usr/local/bin:/target mdouchement/zoom-us:latest instal
Cela crée le fichier suivant
/usr/local/bin/zoom-us-wrapper
#!/bin/bash PATH=/usr/sbin:/usr/bin:/sbin:/bin ZOOM_US_USER=zoom # do we need to use sudo to start docker containers? ( id -Gn | grep -q docker ) || SUDO=sudo USER_UID=$(id -u) USER_GID=$(id -g) XSOCK=/tmp/.X11-unix XAUTH=/tmp/.docker.xauth DOWNLOAD_DIR=$(xdg-user-dir DOWNLOAD) if [ -z "${DOWNLOAD_DIR}" ]; then DOWNLOAD_DIR="${HOME}/Downloads" fi; list_commands() { echo "" echo "Launch zoom-us using:" echo " zoom OR " echo " zoom-us-wrapper zoom" echo "" exit 1 } cleanup_stopped_zoom_us_instances(){ echo "Cleaning up stopped zoom-us instances..." for c in $(${SUDO} docker ps -a -q) do image="$(${SUDO} docker inspect -f {{.Config.Image}} ${c})" if [ "${image}" == "mdouchement/zoom-us:latest" ]; then running=$(${SUDO} docker inspect -f {{.State.Running}} ${c}) if [ "${running}" != "true" ]; then ${SUDO} docker rm "${c}" >/dev/null fi fi done } prepare_docker_env_parameters() { ENV_VARS+=" --env=USER_UID=${USER_UID}" ENV_VARS+=" --env=USER_GID=${USER_GID}" ENV_VARS+=" --env=DISPLAY=unix$DISPLAY" ENV_VARS+=" --env=XAUTHORITY=${XAUTH}" ENV_VARS+=" --env=TZ=$(date +%Z)" } prepare_docker_volume_parameters() { touch ${XAUTH} xauth nlist :0 | sed -e 's/^..../ffff/' | xauth -f ${XAUTH} nmerge - touch ${HOME}/.config/zoomus.conf # create if not exists VOLUMES+=" --volume=${HOME}/.config/zoomus.conf:/home/${ZOOM_US_USER}/.config/zoomus.conf" VOLUMES+=" --volume=${HOME}/.cache/zoom:/home/${ZOOM_US_USER}/.cache/zoom" VOLUMES+=" --volume=${HOME}/.zoom:/home/${ZOOM_US_USER}/.zoom" VOLUMES+=" --volume=${XSOCK}:${XSOCK}" VOLUMES+=" --volume=${XAUTH}:${XAUTH}" VOLUMES+=" --volume=/run/user/${USER_UID}/pulse:/run/pulse" } prepare_docker_device_parameters() { # enumerate video devices for webcam support VIDEO_DEVICES= for device in /dev/video* do if [ -c $device ]; then VIDEO_DEVICES="${VIDEO_DEVICES} --device $device:$device" fi done } prog=$(basename $0) exec=$(which $prog) if [[ ${prog} == "zoom-us-wrapper" ]]; then case ${1} in zoom) prog=${1} shift ;; *|help) list_commands exit 1 ;; esac elif [[ -n ${exec} ]]; then # launch host binary if it exists exec ${exec} $@ fi cleanup_stopped_zoom_us_instances prepare_docker_env_parameters prepare_docker_volume_parameters prepare_docker_device_parameters echo "Starting ${prog}..." ${SUDO} docker run -d \ ${ENV_VARS} \ ${VIDEO_DEVICES} \ --device /dev/dri \ ${VOLUMES} \ ${ZOOM_EXTRA_DOCKER_ARGUMENTS} \ --name zoomus \ mdouchement/zoom-us:latest ${prog} $@ >/dev/null
Web - liste des codes HTTP
Structure des codes
Les codes les plus courants sont :
- 200 : succès de la requête ;
- 301 et 302 : redirection, respectivement permanente et temporaire ;
- 401 : utilisateur non authentifié ;
- 403 : accès refusé ;
- 404 : ressource non trouvée ;
- 500, 502 et 503 : erreurs serveur ;
- 504 : le serveur n'a pas répondu.
Codes d'état
1xx - Information
| Code | Message | Apparition | Signification |
|---|---|---|---|
| 100 | Continue | Attente de la suite de la requête. | |
| 101 | Switching Protocols | Acceptation du changement de protocole. | |
| 102 | Processing | WebDAV RFC 25185,6 | Traitement en cours (évite que le client dépasse le temps d’attente limite). |
| 103 | Early Hints | RFC 82977 | (Expérimental) Dans l'attente de la réponse définitive, le serveur renvoie des liens que le client peut commencer à télécharger. |
2xx - Succès
| Code | Message | Apparition | Signification |
|---|---|---|---|
| 200 | OK | RFC 19458 | Requête traitée avec succès. La réponse dépendra de la méthode de requête utilisée. |
| 201 | Created | RFC 19458 | Requête traitée avec succès et création d’un document. |
| 202 | Accepted | RFC 19458 | Requête traitée, mais sans garantie de résultat. |
| 203 | Non-Authoritative Information | Information renvoyée, mais générée par une source non certifiée. | |
| 204 | No Content | RFC 19458 | Requête traitée avec succès mais pas d’information à renvoyer. |
| 205 | Reset Content | RFC 20689 | Requête traitée avec succès, la page courante peut être effacée. |
| 206 | Partial Content | RFC 20689 | Une partie seulement de la ressource a été transmise. |
| 207 | Multi-Status | WebDAV | Réponse multiple. |
| 208 | Already Reported | WebDAV | Le document a été envoyé précédemment dans cette collection. |
| 210 | Content Different | WebDAV | La copie de la ressource côté client diffère de celle du serveur (contenu ou propriétés). |
| 226 | IM Used | RFC 322910 | Le serveur a accompli la requête pour la ressource, et la réponse est une représentation du résultat d'une ou plusieurs manipulations d'instances appliquées à l'instance actuelle. |
3xx - Redirection
| Code | Message | Apparition | Signification |
|---|---|---|---|
| 300 | Multiple Choices | RFC 19458 | L’URI demandée se rapporte à plusieurs ressources. |
| 301 | Moved Permanently | RFC 19458 | Document déplacé de façon permanente. |
| 302 | Found | RFC 19458 | Document déplacé de façon temporaire. |
| 303 | See Other | RFC 20689 | La réponse à cette requête est ailleurs. |
| 304 | Not Modified | RFC 19458 | Document non modifié depuis la dernière requête. |
| 305 | Use Proxy (depuis HTTP/1.1) | RFC 20689 | La requête doit être ré-adressée au proxy. |
| 306 | (inutilisé) | RFC 261611 | La RFC 261611 indique que ce code inutilisé est réservé, car il était utilisé dans une ancienne version de la spécification. Il signifiait « Les requêtes suivantes doivent utiliser le proxy spécifié »12. |
| 307 | Temporary Redirect | La requête doit être redirigée temporairement vers l’URI spécifiée sans changement de méthode13. | |
| 308 | Permanent Redirect | La requête doit être redirigée définitivement vers l’URI spécifiée sans changement de méthode14. | |
| 310 | Too many Redirects | La requête doit être redirigée de trop nombreuses fois, ou est victime d’une boucle de redirection. |
4xx - Erreur du client HTTP
| Code | Message | Apparition | Signification |
|---|---|---|---|
| 400 | Bad Request | RFC 19458 | La syntaxe de la requête est erronée. |
| 401 | Unauthorized | RFC 19458 | Une authentification est nécessaire pour accéder à la ressource. |
| 402 | Payment Required | RFC 20689 | Paiement requis pour accéder à la ressource. |
| 403 | Forbidden | RFC 19458 | Le serveur a compris la requête, mais refuse de l'exécuter. Contrairement à l'erreur 401, s'authentifier ne fera aucune différence. Sur les serveurs où l'authentification est requise, cela signifie généralement que l'authentification a été acceptée mais que les droits d'accès ne permettent pas au client d'accéder à la ressource. |
| 404 | Not Found | RFC 19458 | Ressource non trouvée. |
| 405 | Method Not Allowed | RFC 20689 | Méthode de requête non autorisée. |
| 406 | Not Acceptable | RFC 20689 | La ressource demandée n'est pas disponible dans un format qui respecterait les en-têtes « Accept » de la requête. |
| 407 | Proxy Authentication Required | RFC 20689 | Accès à la ressource autorisé par identification avec le proxy. |
| 408 | Request Time-out | RFC 20689 | Temps d’attente d’une requête du client, écoulé côté serveur. D'après les spécifications HTTP : « Le client n'a pas produit de requête dans le délai que le serveur était prêt à attendre. Le client PEUT répéter la demande sans modifications à tout moment ultérieur »15. |
| 409 | Conflict | RFC 20689 | La requête ne peut être traitée à la suite d'un conflit avec l'état actuel du serveur. |
| 410 | Gone | RFC 20689 | La ressource n'est plus disponible et aucune adresse de redirection n’est connue. |
| 411 | Length Required | RFC 20689 | La longueur de la requête n’a pas été précisée. |
| 412 | Precondition Failed | RFC 20689 | Préconditions envoyées par la requête non vérifiées. |
| 413 | Request Entity Too Large | RFC 20689 | Traitement abandonné dû à une requête trop importante. |
| 414 | Request-URI Too Long | RFC 20689 | URI trop longue. |
| 415 | Unsupported Media Type | RFC 20689 | Format de requête non supporté pour une méthode et une ressource données. |
| 416 | Requested range unsatisfiable | Champs d’en-tête de requête « range » incorrect. | |
| 417 | Expectation failed | Comportement attendu et défini dans l’en-tête de la requête insatisfaisante. | |
| 418 | I’m a teapot | RFC 232416 | « Je suis une théière » : Ce code est défini dans la RFC 232417 datée du 1er avril 1998, Hyper Text Coffee Pot Control Protocol. |
| 419 | Page expired | Ressource expirée | |
| 421 | Bad mapping / Misdirected Request | La requête a été envoyée à un serveur qui n'est pas capable de produire une réponse (par exemple, car une connexion a été réutilisée). | |
| 422 | Unprocessable entity | WebDAV | L’entité fournie avec la requête est incompréhensible ou incomplète. |
| 423 | Locked | WebDAV | L’opération ne peut avoir lieu car la ressource est verrouillée. |
| 424 | Method failure | WebDAV | Une méthode de la transaction a échoué. |
| 425 | Too Early | RFC 847018 | Le serveur ne peut traiter la demande car elle risque d'être rejouée. |
| 426 | Upgrade Required | RFC 281719 | Le client devrait changer de protocole, par exemple au profit de TLS/1.0. |
| 427 | Invalid digital signature | Microsoft | La signature numérique du document est non-valide. |
| 428 | Precondition Required | RFC 658520 | La requête doit être conditionnelle. |
| 429 | Too Many Requests | RFC 658520 | le client a émis trop de requêtes dans un délai donné. |
| 431 | Request Header Fields Too Large | RFC 658520 | Les entêtes HTTP émises dépassent la taille maximale admise par le serveur. |
| 449 | Retry With | Microsoft | La requête devrait être renvoyée après avoir effectué une action. |
| 450 | Blocked by Windows Parental Controls | Microsoft | Cette erreur est produite lorsque les outils de contrôle parental de Microsoft Windows sont activés et bloquent l’accès à la page. |
| 451 | Unavailable For Legal Reasons | RFC 772521 | La ressource demandée est inaccessible pour des raisons d'ordre légal. |
| 456 | Unrecoverable Error | WebDAV | Erreur irrécupérable. |
Codes 4xx étendus du serveur Nginx
| Code | Message | Apparition | Signification |
|---|---|---|---|
| 444 | No Response | Nginx | Indique que le serveur n'a retourné aucune information vers le client et a fermé la connexion. |
| 495 | SSL Certificate Error | Nginx | Une extension de l'erreur 400 Bad Request, utilisée lorsque le client a fourni un certificat invalide. |
| 496 | SSL Certificate Required | Nginx | Une extension de l'erreur 400 Bad Request, utilisée lorsqu'un certificat client requis n'est pas fourni. |
| 497 | HTTP Request Sent to HTTPS Port | Nginx | Une extension de l'erreur 400 Bad Request, utilisée lorsque le client envoie une requête HTTP vers le port 443 normalement destiné aux requêtes HTTPS. |
| 498 | Token expired/invalid | Nginx | Le jeton a expiré ou est invalide. |
| 499 | Client Closed Request | Nginx | Le client a fermé la connexion avant de recevoir la réponse. Cette erreur se produit quand le traitement est trop long côté serveur22. |
5xx - Erreur du serveur / du serveur d'application
| Code | Message | Apparition | Signification |
|---|---|---|---|
| 500 | Internal Server Error | RFC 19458 | Erreur interne du serveur. |
| 501 | (Method) Not Implemented | RFC 19458 | Fonctionnalité réclamée non supportée par le serveur. |
| 502 | Bad Gateway ou Proxy Error | RFC 19458 | En agissant en tant que serveur proxy ou passerelle, le serveur a reçu une réponse invalide depuis le serveur distant. |
| 503 | Service Unavailable | RFC 19458 | Service temporairement indisponible ou en maintenance. |
| 504 | Gateway Time-out | RFC 20689 | Temps d’attente d’une réponse d’un serveur à un serveur intermédiaire écoulé. |
| 505 | HTTP Version not supported | RFC 20689 | Version HTTP non gérée par le serveur. |
| 506 | Variant Also Negotiates | RFC 229523 | Erreur de négociation. Transparent content negociation. |
| 507 | Insufficient storage | WebDAV | Espace insuffisant pour modifier les propriétés ou construire la collection. |
| 508 | Loop detected | WebDAV | Boucle dans une mise en relation de ressources (RFC 584224). |
| 509 | Bandwidth Limit Exceeded | Utilisé par de nombreux serveurs pour indiquer un dépassement de quota. | |
| 510 | Not extended | RFC 277425 | La requête ne respecte pas la politique d'accès aux ressources HTTP étendues. |
| 511 | Network authentication required | RFC 658520 | Le client doit s'authentifier pour accéder au réseau. Utilisé par les portails captifs pour rediriger les clients vers la page d'authentification. |
Codes 5xx étendus du mandataire Cloudflare
| Code | Message | Apparition | Signification |
|---|---|---|---|
| 520 | Unknown Error | Cloudflare | Réponse générique lorsque le serveur d'origine retourne un résultat imprévu. |
| 521 | Web Server Is Down | Cloudflare | Le serveur a refusé la connexion depuis Cloudflare. |
| 522 | Connection Timed Out | Cloudflare | Cloudflare n'a pas eu de retour avec le serveur d'origine dans les temps. |
| 523 | Origin Is Unreachable | Cloudflare | Cloudflare n'a pas réussi à joindre le serveur d'origine. Cela peut se produire en cas d'échec de résolution de nom de serveur DNS. |
| 524 | A Timeout Occurred | Cloudflare | Cloudflare a établi une connexion TCP avec le serveur d'origine mais n'a pas reçu de réponse HTTP avant l'expiration du délai de connexion. |
| 525 | SSL Handshake Failed | Cloudflare | Cloudflare n'a pas pu négocier un SSL/TLS handshake avec le serveur d'origine. |
| 526 | Invalid SSL Certificate | Cloudflare | Cloudflare n'a pas pu valider le certificat SSL présenté par le serveur d'origine. |
| 527 | Railgun Error | Cloudflare | La requête a dépassé le délai de connexion ou a échoué après que la connexion WAN a été établie. |
Serveur Samba SMB CIFS
Voir aussi
- ksmbd: un nouveau serveur SMB intégré au noyau (mais problématique de sécurité)
Notes
RHEL6 ne supporte pas le protocole SMB2 et +
Configuration
rlimit_max (1024) below minimum Windows limit (16384)
/etc/security/limits.d/30-samba.conf
root - nofile 16385
Défaut est max open files = 16385
Voir https://www.tecmint.com/install-samba-on-rhel-8-for-file-sharing-on-windows/
/etc/samba/smb.conf
[global] workgroup = WORKGROUP server string = Samba netbios name = SAMBA client ipc min protocol = SMB3 client min protocol = SMB3 server min protocol = SMB2 disable netbios = Yes disable spoolss = Yes domain master = No load printers = No local master = No log file = /var/log/samba/log.%m # Size in KB max log size = 200000 name resolve order = host printcap name = /dev/null security = USER smb ports = 445 idmap config * : backend = tdb passdb backend = tdbsam cups options = raw printing = bsd #log level = 3 #restrict anonymous = 2 #nt pipe support = no #interfaces = eth* lo #bind interfaces only = yes #fstype = Samba host msdfs = no server services = -s3fs, -rpc, -nbt, -wrepl, -ldap, -cldap, -kdc, -drepl, -winbindd, -ntp_signd, -kcc, -dnsupdate, -dns [public] comment = Public read only = Yes path = /data/shared/public [shared] #guest ok = Yes #browseable = No comment = Shared path = /mnt/shared read only = No #force user = jean valid users = jean write list = jean #[IPC$] # hosts allow = 192.168.115.0/24 127.0.0.1 # hosts deny = 0.0.0.0/0
Nul besoin de redémarrer le service, les modifications sont automatiquement prises en compte. Pour vérifier
testparm
Pour tester la connexion
smbclient -N -L 127.0.0.1 smbclient -N //127.0.0.1/shared smbclient -U user%password //127.0.0.1/shared
Si besion modifier /etc/sysconfig/iptables ou firewalld
#iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 139 -j ACCEPT iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 445 -j ACCEPT
Exemple :
/etc/samba/smb.conf
[partage] comment = Commentaires... path = /var/www force user = web #valid users = web browseable = yes writable = yes
Valider la configuration
testparm
Reload de la conf sans redémarrer
smbcontrol all reload-config
Redémarrer le service
systemctl restart smb
Faire un include d'un fichier de config.
C'est une fausse bonne idée car pas de reload automatique
/etc/samba/smb.conf
[global] path = /dev/null [includes] available = No include = /etc/samba/smb.d/shared.conf
/etc/samba/smb.d/shared.conf
[shared] comment = Shared path = /mnt/shared read only = No
Authentification / comptes
Comment c'est configuré
testparm -sv /dev/null | grep auth
Autoriser un utilisateur / définition du MDP
#pdbedit -a utilisateur smbpasswd -a utilisateur
Suppression d'un compte (retour arrière à précédent)
smbpasswd -x supervision
Liste tous les comptes
pdbedit -L
Vérif l’existence de l'utilisateur pirate
pdbedit -u pirate
Désactiver l'impression
/etc/samba/smb.conf
[global] load printers = no printing = bsd printcap name = /dev/null disable spoolss = yes
Source : http://mugurel.sumanariu.ro/linux/linux-how-to-disable-printing-in-samba/
Debug
/etc/samba/smb.conf
[global] log level = 3
Pas besoin de redémarrer le service, le reload est auto
Notes
smbstatus
Pb
Receiving SMB: Server stopped responding - Call returned zero bytes (EOF) opening remote
smb: \> get plop Receiving SMB: Server stopped responding Call returned zero bytes (EOF) opening remote file \plop
Solution
Le pb venait du fait que la partition /var était pleine.
Pb de connection depuis windows err NT_STATUS_WRONG_PASSWORD
Solution 1 (insecure)
/etc/samba/smb.conf
[global] ntlm auth = yes #client ntlmv2 auth = yes
Exemple de conf
Install sous RedHat / CentOS
cp -p /etc/samba/smb.conf /etc/samba/smb.conf.bak egrep -v '^$|^#|^;' /etc/samba/smb.conf.bak > /etc/samba/smb.conf
/etc/samba/smb.conf
[global] workgroup = WORKGROUP dns proxy = no log file = /var/log/samba/log.%m max log size = 1000 syslog = 0 panic action = /usr/share/samba/panic-action %d server role = standalone server passdb backend = tdbsam obey pam restrictions = yes unix password sync = yes passwd program = /usr/bin/passwd %u passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* . pam password change = yes map to guest = bad user usershare allow guests = yes [tmp] path = /tmp comment = TEMP browseable = yes read only = no create mask = 0660 directory mask = 0770 guest ok = yes [partage] comment = Partage path = /data/ force user = utilisateur1 #public = yes valid users = @groupe1, jean write list = @groupe1, jean browseable = yes writable = yes read only = no
Autres
Pour conteneurs
/usr/sbin/smbd -F -S
