Dernière mise-à-jour : 2020/02/21 07:33

SER601 - Gestion de Base du Serveur SMB/CIFS Samba

Les Réseaux Microsoft

Le fonctionnement d'un réseau Windows™ se repose sur le protocole CIFS (Common Internet FileSystem) le successeur du protocole SMB (Server Message Block).

Types de Réseaux Microsoft

Les réseaux Microsoft™ se divisent en trois types distincts :

  • Un groupe de travail,
    • Windows ™ 3.11, 9x, ME, NT Workstation, 2000 Workstation, XP, Vista, Seven,
    • Les systèmes se trouvent sur le même réseau physique,
    • La gestion des partages n'est pas centralisée,
    • La sécurité est fournie par des mots de passe qui protègent les ressources individuelles,
  • Un domaine,
    • Windows™ NT Server 3.5, 3.51 ou 4,
    • Nécessite la mise en place d'un PDC (Primary Domain Controller),
    • La gestion des utilisateurs est accomplie via le service SAM (Security Account Manager),
    • La sécurité s'appuie sur des objets appelés SIDs (Security IDentifiers),
    • Peut contenir un ou plusieurs BDC (Backup Domain Controller),
  • Active Directory,
    • Windows™ 2000 Server, Server 2003, Server 2008,
    • La gestion de l'authentification des utilisateurs est assurée par un annuaire LDAP (Lightweight Directory Access Protocol),
    • Le service des noms est assurée par le DNS (Domain Name Service),

Types de Clients Windows

Le fonctionnement du client Windows™ 2000 et les versions ultérieures implique que le protocole SMB s'appuie directement sur TCP/IP en utilisant le port 445.

Le fonctionnement du client Windows™ antérieur à Windows™ 2000 nécessite le protocole NBT (Network Basic Import/Export System over TCP/IP) qui utilise les ports suivants :

  • 137,
    • Name Service - La résolution des noms et le parcours du réseau (Browsing),
  • 138,
    • Datagram Service,
  • 139,
    • Session Service - Le partage de fichiers et d'imprimante.

Un nom NetBIOS est codé sur 16 octets dont les 15 premiers sont définis par l'utilisateur. Le dernier contient une valeur hexadécimale qui indique le type de ressource fournie par le système :

Valeur Hexadécimale Type de Ressource
00 Standard Workstation
03 Messenger Service
06 RAS Server Service
21 RAS Client Service
1B Domain Master Browser Service
1D Master Browser Name
20 Fileserver et/ou Printserver
BE Network Monitor Agent
BF Network Monitor Utility

Les noms NetBIOS peuvent aussi être utilisés pour des noms de groupes :

Valeur Hexadécimale Type de Ressource
00 Standard Workstation Group
1C Logon Server
1D Master Browser Name
1E Normal Group Name

Important : Le nom NetBIOS ne doit pas contenir les charactères suivants : / \ [ ] : ; | = , ^ * ? > <

La commande Windows™ NBTSTAT peut être utilisée pour visualiser la liste des types de ressources et les noms NetBIOS :

C:\Documents and Settings\Administrateur>NBTSTAT -n

Connexion au réseau local:
Adresse IP du noeud : [192.168.1.29] ID d'étendue : []

                Table nom local NetBIOS

       Nom                Type         Statut
    ---------------------------------------------
    WINDOWS-FFC9AFA<00>  UNIQUE      Inscrit
    WORKGROUP      <00>  Groupe      Inscrit
    WINDOWS-FFC9AFA<20>  UNIQUE      Inscrit
    WORKGROUP      <1E>  Groupe      Inscrit

Présentation de Samba

Le serveur Samba est en réalité un ensemble de programmes qui permettent le partage de fichiers et d'imprimantes entre un serveur Unix ou Linux et des stations Windows™ ( 3.11, 9x, NT4, 2000, XP, Vista, 2003, Seven et 10 ) ainsi que des stations OS/2 , Linux et Mac.

Le serveur Samba3 était capable offrir :

  • des services classiques d'un serveur de fichiers et d'impression,
  • l'authentification des utilisateurs,
  • la gestion des droits d'accès,
  • la résolution des noms,
  • le parcours du voisinage réseau (Local Master Browser, Local Backup Browser, Domain Master Browser),
  • les services d'un serveur WINS primaire,
  • les services d'un serveur PDC (Primary Domain Controller),
  • les services d'un serveur Microsoft™ DFS (Distributed FileSystem),

Le serveur Samba n'est pas capable d'offrir :

  • les services d'un serveur WINS secondaire,
  • les services d'un contrôleur de domaine Active Directory,
  • les services d'un BDC - contrôleur secondaire de domaine (Backup Domain Controller) quand le PDC est un serveur Windows™.

Samba4 apporte les nouveautés suivantes :

  • Support de l'authentification et de l'administration d'Active Directory,
  • Support complet de NTFS,
  • Annuaire LDAP,
  • Serveur Kerberos,
  • Serveur DNS,
  • Support du nouveau protocole RPC et de Python.

Daemons Samba

Samba se repose sur trois Daemons (Disk And Extension MONitor) :

  • smbd qui :
    • fournit les services de gestion des ressources partagées et les fonctionnalités d'authentification,
    • génère un processus fils pour chaque connexion active,
  • nmbd qui :
    • participe à la fonctionnalité du parcours du voisinage réseau et fournit un serveur compatible Microsoft™ WINS,
    • génère une deuxième instance de lui-même dans le cas où Samba joue le rôle d'un serveur WINS,
  • winbindd qui :
    • permet d'obtenir des informations sur les utilisateurs définis sur des contrôleurs de domaine Windows™ NT ou 2000,
    • facilite l'intégration d'un serveur Samba dans un domaine ayant déjà un PDC.

Commandes Samba

Samba propose un nombre important de commandes et utilitaires :

Commande Description
findsmb Obtention d'informations sur les systèmes utilisant le protocole SMB
net Commande similaire à la commande Windows™ du même nom
nmblookup Interrogation d'un serveur de noms NetBIOS
pdbedit Gestion de comptes stockés dans une base de données SAM
rpcclient Exécution de programmes d'administration sur des clients Windows™
smbcacls Gestion des ACL
smbclient Programme interactif multifonction
smbcontrol Interrogations simples auprès des deamons
smbmount Montage des ressources SMB sous Linux
smbpasswd Gestion des mots de passe
smbspool Gestion des impressions
smbstatus Etat des connexions
smbtar Utilitaire de sauvegarde
smbumount Démontage d'une ressource SMB sous Linux
swat Utilitaire de configuration
testparm Vérification du fichier de configuration
testprns Vérification des informations sur les imprimantes
wbinfo Interrogation du deamon winbindd

Installation de Samba

Important : Configurez votre machine virtuelle CentOS 7 en mode réseau ponté avant de la démarrer.

Désactivez SELINUX afin de ne pas avoir des erreurs de ce dernier :

[root@centos7 /]# setenforce permissive
[root@centos7 /]# getenforce
Permissive

Editez ensuite le fichier /etc/sysconfig/selinux ainsi :

[root@centos7 /]# vi /etc/sysconfig/selinux
[root@centos7 /]# cat /etc/sysconfig/selinux

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=permissive
# SELINUXTYPE= can take one of three two values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected. 
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted 

Afin d'éviter les problèmes liés au pare-feu arrêtez le service firewalld :

[root@centos7 /]# systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2017-07-28 11:10:59 CEST; 42min ago
     Docs: man:firewalld(1)
 Main PID: 616 (firewalld)
   CGroup: /system.slice/firewalld.service
           └─616 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid

Jul 28 11:10:52 centos7.fenestros.loc systemd[1]: Starting firewalld - dynamic firewall daemon...
Jul 28 11:10:59 centos7.fenestros.loc systemd[1]: Started firewalld - dynamic firewall daemon.
[root@centos7 /]# systemctl stop firewalld.service
[root@centos7 /]# systemctl disable firewalld.service
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
Removed symlink /etc/systemd/system/basic.target.wants/firewalld.service.
[root@centos7 /]# systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:firewalld(1)

Jul 28 11:10:52 centos7.fenestros.loc systemd[1]: Starting firewalld - dynamic firewall daemon...
Jul 28 11:10:59 centos7.fenestros.loc systemd[1]: Started firewalld - dynamic firewall daemon.
Jul 28 11:54:00 centos7.fenestros.loc systemd[1]: Stopping firewalld - dynamic firewall daemon...
Jul 28 11:54:00 centos7.fenestros.loc systemd[1]: Stopped firewalld - dynamic firewall daemon.

Modifiez ensuite le fichier /etc/hosts pour définir votre hostname et votre adresse IP :

[root@centos7 ~]# cat /etc/hosts
127.0.0.1		localhost.localdomain localhost
::1		localhost6.localdomain6 localhost6
192.168.1.103	centos7.fenestros.loc

Important : Modifiez l'adresse IP dans votre fichier /etc/hosts en fonction de votre adresse IP réelle.

Maintenant installez le paquet samba-swat :

[root@centos7 ~]# yum install samba-swat
Loaded plugins: fastestmirror, langpacks
adobe-linux-x86_64                                                                                              | 2.9 kB  00:00:00     
base                                                                                                            | 3.6 kB  00:00:00     
extras                                                                                                          | 3.4 kB  00:00:00     
updates                                                                                                         | 3.4 kB  00:00:00     
(1/3): adobe-linux-x86_64/primary_db                                                                            | 2.7 kB  00:00:00     
(2/3): extras/7/x86_64/primary_db                                                                               | 191 kB  00:00:00     
(3/3): updates/7/x86_64/primary_db                                                                              | 7.8 MB  00:00:47     
Determining fastest mirrors
 * base: centos.mirrors.ovh.net
 * extras: mirrors.standaloneinstaller.com
 * updates: mirrors.standaloneinstaller.com
Resolving Dependencies
--> Running transaction check
---> Package samba.x86_64 0:4.4.4-14.el7_3 will be installed
--> Processing Dependency: samba-libs = 4.4.4-14.el7_3 for package: samba-4.4.4-14.el7_3.x86_64
--> Processing Dependency: samba-common-tools = 4.4.4-14.el7_3 for package: samba-4.4.4-14.el7_3.x86_64
--> Processing Dependency: samba-common-libs = 4.4.4-14.el7_3 for package: samba-4.4.4-14.el7_3.x86_64
--> Processing Dependency: samba-common = 4.4.4-14.el7_3 for package: samba-4.4.4-14.el7_3.x86_64
--> Processing Dependency: samba-client-libs = 4.4.4-14.el7_3 for package: samba-4.4.4-14.el7_3.x86_64
--> Processing Dependency: libwbclient = 4.4.4-14.el7_3 for package: samba-4.4.4-14.el7_3.x86_64
--> Running transaction check
---> Package libwbclient.x86_64 0:4.4.4-12.el7_3 will be updated
---> Package libwbclient.x86_64 0:4.4.4-14.el7_3 will be an update
---> Package samba-client-libs.x86_64 0:4.4.4-12.el7_3 will be updated
--> Processing Dependency: samba-client-libs = 4.4.4-12.el7_3 for package: samba-client-4.4.4-12.el7_3.x86_64
--> Processing Dependency: samba-client-libs = 4.4.4-12.el7_3 for package: libsmbclient-4.4.4-12.el7_3.x86_64
---> Package samba-client-libs.x86_64 0:4.4.4-14.el7_3 will be an update
---> Package samba-common.noarch 0:4.4.4-12.el7_3 will be updated
---> Package samba-common.noarch 0:4.4.4-14.el7_3 will be an update
---> Package samba-common-libs.x86_64 0:4.4.4-12.el7_3 will be updated
---> Package samba-common-libs.x86_64 0:4.4.4-14.el7_3 will be an update
---> Package samba-common-tools.x86_64 0:4.4.4-12.el7_3 will be updated
---> Package samba-common-tools.x86_64 0:4.4.4-14.el7_3 will be an update
---> Package samba-libs.x86_64 0:4.4.4-12.el7_3 will be updated
---> Package samba-libs.x86_64 0:4.4.4-14.el7_3 will be an update
--> Running transaction check
---> Package libsmbclient.x86_64 0:4.4.4-12.el7_3 will be updated
---> Package libsmbclient.x86_64 0:4.4.4-14.el7_3 will be an update
---> Package samba-client.x86_64 0:4.4.4-12.el7_3 will be updated
---> Package samba-client.x86_64 0:4.4.4-14.el7_3 will be an update
--> Finished Dependency Resolution

Dependencies Resolved

=======================================================================================================================================
 Package                               Arch                      Version                              Repository                  Size
=======================================================================================================================================
Installing:
 samba                                 x86_64                    4.4.4-14.el7_3                       updates                    610 k
Updating for dependencies:
 libsmbclient                          x86_64                    4.4.4-14.el7_3                       updates                    126 k
 libwbclient                           x86_64                    4.4.4-14.el7_3                       updates                    100 k
 samba-client                          x86_64                    4.4.4-14.el7_3                       updates                    547 k
 samba-client-libs                     x86_64                    4.4.4-14.el7_3                       updates                    4.6 M
 samba-common                          noarch                    4.4.4-14.el7_3                       updates                    191 k
 samba-common-libs                     x86_64                    4.4.4-14.el7_3                       updates                    161 k
 samba-common-tools                    x86_64                    4.4.4-14.el7_3                       updates                    451 k
 samba-libs                            x86_64                    4.4.4-14.el7_3                       updates                    260 k

Transaction Summary
=======================================================================================================================================
Install  1 Package
Upgrade             ( 8 Dependent packages)

Total download size: 7.0 M
Is this ok [y/d/N]: y

Les paquets ainsi installés sont :

[root@centos7 ~]# rpm -qa | grep samba
samba-libs-4.4.4-14.el7_3.x86_64
samba-client-4.4.4-14.el7_3.x86_64
samba-client-libs-4.4.4-14.el7_3.x86_64
samba-common-tools-4.4.4-14.el7_3.x86_64
samba-common-4.4.4-14.el7_3.noarch
samba-4.4.4-14.el7_3.x86_64
samba-common-libs-4.4.4-14.el7_3.x86_64

Les deamons smb et nmb ne sont pas démarrés :

[root@centos7 ~]# systemctl status smb
● smb.service - Samba SMB Daemon
   Loaded: loaded (/usr/lib/systemd/system/smb.service; disabled; vendor preset: disabled)
   Active: inactive (dead)
[root@centos7 ~]# systemctl status nmb
● nmb.service - Samba NMB Daemon
   Loaded: loaded (/usr/lib/systemd/system/nmb.service; disabled; vendor preset: disabled)
   Active: inactive (dead)

Notez que le démarrage automatique de Samba n'est pas configuré. Configurez donc le démarrage automatique de Samba :

[root@centos7 ~]# systemctl enable smb
Created symlink from /etc/systemd/system/multi-user.target.wants/smb.service to /usr/lib/systemd/system/smb.service.
[root@centos7 ~]# systemctl enable nmb
Created symlink from /etc/systemd/system/multi-user.target.wants/nmb.service to /usr/lib/systemd/system/nmb.service.

Configuration de base

La configuration de Samba est obtenue en éditant le fichier /etc/samba/smb.conf. Lors de l'installation des paquets Samba, un fichier smb.conf minimaliste est créé. Vérifiez ce fichier à l'aide de la commande testparm :

[root@centos7 ~]# testparm
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[homes]"
Processing section "[printers]"
Processing section "[print$]"
Loaded services file OK.
Server role: ROLE_STANDALONE

Press enter to see a dump of your service definitions

# Global parameters
[global]
	workgroup = SAMBA
	printcap name = cups
	security = USER
	idmap config * : backend = tdb
	cups options = raw


[homes]
	comment = Home Directories
	browseable = No
	inherit acls = Yes
	read only = No
	valid users = %S %D%w%S


[printers]
	comment = All Printers
	path = /var/tmp
	browseable = No
	printable = Yes
	create mask = 0600


[print$]
	comment = Printer Drivers
	path = /var/lib/samba/drivers
	create mask = 0664
	directory mask = 0775
	write list = root

Démarrage manuel de Samba

Démarrez maintenant les daemons smb et nmb et constatez les processus ainsi créés :

[root@centos7 ~]# systemctl start smb
[root@centos7 ~]# systemctl start nmb
[root@centos7 ~]# systemctl status smb
● smb.service - Samba SMB Daemon
   Loaded: loaded (/usr/lib/systemd/system/smb.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2017-07-29 11:53:31 CEST; 11s ago
 Main PID: 6793 (smbd)
   Status: "smbd: ready to serve connections..."
   CGroup: /system.slice/smb.service
           ├─6793 /usr/sbin/smbd
           ├─6794 /usr/sbin/smbd
           ├─6795 /usr/sbin/smbd
           └─6796 /usr/sbin/smbd

Jul 29 11:53:31 centos7.fenestros.loc systemd[1]: Starting Samba SMB Daemon...
Jul 29 11:53:31 centos7.fenestros.loc smbd[6793]: [2017/07/29 11:53:31.692284,  0] ../lib/util/become_daemon.c:124(daemon_ready)
Jul 29 11:53:31 centos7.fenestros.loc systemd[1]: Started Samba SMB Daemon.
Jul 29 11:53:31 centos7.fenestros.loc smbd[6793]:   STATUS=daemon 'smbd' finished starting up and ready to serve connections
[root@centos7 ~]# systemctl status nmb
● nmb.service - Samba NMB Daemon
   Loaded: loaded (/usr/lib/systemd/system/nmb.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2017-07-29 11:53:36 CEST; 15s ago
 Main PID: 6825 (nmbd)
   Status: "nmbd: ready to serve connections..."
   CGroup: /system.slice/nmb.service
           └─6825 /usr/sbin/nmbd

Jul 29 11:53:36 centos7.fenestros.loc systemd[1]: Starting Samba NMB Daemon...
Jul 29 11:53:36 centos7.fenestros.loc nmbd[6825]: [2017/07/29 11:53:36.108613,  0] ../lib/util/become_daemon.c:124(daemon_ready)
Jul 29 11:53:36 centos7.fenestros.loc systemd[1]: Started Samba NMB Daemon.
Jul 29 11:53:36 centos7.fenestros.loc nmbd[6825]:   STATUS=daemon 'nmbd' finished starting up and ready to serve connections

[root@centos7 ~]# ps aux | grep mb
root      6793  0.0  0.3 410660  6164 ?        Ss   11:53   0:00 /usr/sbin/smbd
root      6794  0.0  0.1 404480  2880 ?        S    11:53   0:00 /usr/sbin/smbd
root      6795  0.0  0.1 404472  2600 ?        S    11:53   0:00 /usr/sbin/smbd
root      6796  0.0  0.1 410668  3512 ?        S    11:53   0:00 /usr/sbin/smbd
root      6825  0.0  0.1 337320  2716 ?        Ss   11:53   0:00 /usr/sbin/nmbd
root      7296  0.0  0.0 112648   960 pts/0    R+   11:54   0:00 grep --color=auto mb

Testez ensuite le bon fonctionnement de Samba grâce à la commande smbclient :

[root@centos7 ~]# smbclient -U% -L localhost
Domain=[SAMBA] OS=[Windows 6.1] Server=[Samba 4.4.4]

	Sharename       Type      Comment
	---------       ----      -------
	print$          Disk      Printer Drivers
	IPC$            IPC       IPC Service (Samba 4.4.4)
Domain=[SAMBA] OS=[Windows 6.1] Server=[Samba 4.4.4]

	Server               Comment
	---------            -------
	CENTOS7              Samba 4.4.4

	Workgroup            Master
	---------            -------
	SAMBA                CENTOS7     

Les options de la commande smbclient sont nombreuses :

[root@centos7 ~]# smbclient --help
Usage: smbclient service <password>
  -R, --name-resolve=NAME-RESOLVE-ORDER     Use these name resolution services only
  -M, --message=HOST                        Send message
  -I, --ip-address=IP                       Use this IP to connect to
  -E, --stderr                              Write messages to stderr instead of stdout
  -L, --list=HOST                           Get a list of shares available on a host
  -m, --max-protocol=LEVEL                  Set the max protocol level
  -T, --tar=<c|x>IXFqgbNan                  Command line tar
  -D, --directory=DIR                       Start from directory
  -c, --command=STRING                      Execute semicolon separated commands
  -b, --send-buffer=BYTES                   Changes the transmit/send buffer
  -t, --timeout=SECONDS                     Changes the per-operation timeout
  -p, --port=PORT                           Port to connect to
  -g, --grepable                            Produce grepable output
  -B, --browse                              Browse SMB servers using DNS

Help options:
  -?, --help                                Show this help message
  --usage                                   Display brief usage message

Common samba options:
  -d, --debuglevel=DEBUGLEVEL               Set debug level
  -s, --configfile=CONFIGFILE               Use alternate configuration file
  -l, --log-basename=LOGFILEBASE            Base name for log files
  -V, --version                             Print version
  --option=name=value                       Set smb.conf option from command line

Connection options:
  -O, --socket-options=SOCKETOPTIONS        socket options to use
  -n, --netbiosname=NETBIOSNAME             Primary netbios name
  -W, --workgroup=WORKGROUP                 Set the workgroup name
  -i, --scope=SCOPE                         Use this Netbios scope

Authentication options:
  -U, --user=USERNAME                       Set the network username
  -N, --no-pass                             Don't ask for a password
  -k, --kerberos                            Use kerberos (active directory) authentication
  -A, --authentication-file=FILE            Get the credentials from a file
  -S, --signing=on|off|required             Set the client signing state
  -P, --machine-pass                        Use stored machine account password
  -e, --encrypt                             Encrypt SMB transport
  -C, --use-ccache                          Use the winbind ccache for authentication
  --pw-nt-hash                              The supplied password is the NT hash

Celles qui nous intéressent ici sont :

  • -U%
    • sert à éviter une authentification avec mot de passe,
  • -L
    • liste les ressources disponibles sur localhost.

Configuration de Samba

Gestion des comptes et des groupes

Vous allez maintenant créer le groupe staff, utilisé pour le partage Public:

[root@centos7 ~]# groupadd staff

Pour insérer des utilisateurs dans le groupe staff, ouvrez le fichier /etc/group et ajoutez tous les utilisateurs à qui vous souhaitez donner accès au partage public de samba au groupe staff.

[root@centos7 ~]# vi /etc/group
[root@centos7 ~]# cat /etc/group
root:x:0:
...
trainee:x:1000:trainee
vboxsf:x:983:
staff:x:1001:trainee

Faites la même procédure pour le fichier /etc/gshadow :

[root@centos7 ~]# vi /etc/gshadow
[root@centos7 ~]# cat /etc/gshadow
root:::
...
trainee:!!::trainee
vboxsf:!::
staff:!::trainee

Création du fichier smbpasswd

Afin de pouvoir permettre des connexions au serveur Samba, il faut créer le fichier /var/lib/samba/private/smbpasswd qui contiendra les utilisateurs autorisés.

En effet, le serveur Samba n'utilise pas le fichier de mots de passe de la machine Linux, à savoir le fichier /etc/passwd. Cependant, une fois le serveur Samba fonctionnel, nous pouvons stipuler que les deux fichiers soient synchronisés lors des modifications futures.

Modifiez la directive passdb backend du fichier /etc/samba/smb.conf afin d'utiliser le fichier /var/lib/samba/private/smbpasswd pour stocker les mots de passe samba :

[root@centos7 ~]# vi /etc/samba/smb.conf
[root@centos7 ~]# cat /etc/samba/smb.conf
# See smb.conf.example for a more detailed config file or
# read the smb.conf manpage.
# Run 'testparm' to verify the config is correct after
# you modified it.

[global]
	workgroup = SAMBA
	security = user

	#passdb backend = tdbsam
	passdb backend = smbpasswd

	printing = cups
	printcap name = cups
	load printers = yes
	cups options = raw

[homes]
	comment = Home Directories
	valid users = %S, %D%w%S
	browseable = No
	read only = No
	inherit acls = Yes

[printers]
	comment = All Printers
	path = /var/tmp
	printable = Yes
	create mask = 0600
	browseable = No

[print$]
	comment = Printer Drivers
	path = /var/lib/samba/drivers
	write list = root
	create mask = 0664
	directory mask = 0775

Le système de stockage des mots de passe peut être un des suivants :

  • smbpasswd - utilise un fichier. Par défaut: /etc/samba/smbpasswd,
  • tdbsam - utilise une base de données de type Trivial Database. Par défaut : /var/lib/samba/private/passdb.tdb,
  • ldapsam - utilise un URL vers un LDAP, Par défaut : ldap://localhost.
La Commande smbpasswd

Créez maintenant les mots de passe samba pour chaque utilisateur dans le fichier /var/lib/samba/private/smbpasswd :

[root@centos7 ~]# smbpasswd -a root
New SMB password:
Retype new SMB password:
startsmbfilepwent_internal: file /var/lib/samba/private/smbpasswd did not exist. File successfully created.
Added user root.
[root@centos7 ~]# smbpasswd -a trainee
New SMB password:
Retype new SMB password:
Added user trainee.

Consultez le fichier /var/lib/samba/private/smbpasswd. Vous devez constater une ligne pour chaque utilisateur. Chaque ligne doit comporter une chaîne de caractères alphanumérique :

[root@centos7 ~]# cat /var/lib/samba/private/smbpasswd
root:0:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:E183384163AA4BFFAF24CC678CF19EAB:[U          ]:LCT-597C6334:
trainee:1000:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:2A217A32BDE94A23B26A8EEA26C70874:[U          ]:LCT-597C6343:

Créez ensuite un lien symbolique :

[root@centos7 ~]# ln -s /var/lib/samba/private/smbpasswd /etc/samba/smbpasswd
La Commande pdbedit

La commande pdbedit est utilisée pour la gestion de la base de données de SAMBA. Par exemple pour lister les utilisateurs de SAMBA :

[root@centos7 ~]# pdbedit -L
root:0:root
trainee:1000:trainee

Pour créer un compte SAMBA, l'utilisateur doit d'abord posséder un compte Unix :

[root@centos7 ~]# useradd sambauser

Il est ensuite possible d'utiliser la commande pdbedit pour créer l'utilisateur dans la base de données de SAMBA :

[root@centos7 ~]# useradd sambauser
[root@centos7 ~]# pdbedit -a sambauser
new password:
retype new password:
Unix username:        sambauser
NT username:          
Account Flags:        [U          ]
User SID:             S-1-5-21-3392617607-4065925175-2212523533-3002
Primary Group SID:    S-1-5-21-3392617607-4065925175-2212523533-513
Full Name:            
Home Directory:       \\centos7\sambauser
HomeDir Drive:        
Logon Script:         
Profile Path:         \\centos7\sambauser\profile
Domain:               CENTOS7
Account desc:         
Workstations:         
Munged dial:          
Logon time:           0
Logoff time:          never
Kickoff time:         never
Password last set:    Tue, 15 Aug 2017 16:21:39 CEST
Password can change:  Tue, 15 Aug 2017 16:21:39 CEST
Password must change: never
Last bad password   : 0
Bad password count  : 0
Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

Cette commande a donc ajouté l'utilisateur au fichier /var/lib/samba/private/smbpasswd :

[root@centos7 ~]# cat /var/lib/samba/private/smbpasswd
root:0:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:E183384163AA4BFFAF24CC678CF19EAB:[U          ]:LCT-5993021B:
trainee:1000:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:2A217A32BDE94A23B26A8EEA26C70874:[U          ]:LCT-5993022B:
sambauser:1001:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:C27F8C725297C4466C963B7F88906297:[U          ]:LCT-59930373:

Pour visualiser les informations d'un utilisateur SAMBA existant, il convient d'utiliser les options -Lv :

[root@centos7 ~]# pdbedit -Lv sambauser
Unix username:        sambauser
NT username:          
Account Flags:        [U          ]
User SID:             S-1-5-21-3392617607-4065925175-2212523533-3002
Primary Group SID:    S-1-5-21-3392617607-4065925175-2212523533-513
Full Name:            
Home Directory:       \\centos7\sambauser
HomeDir Drive:        
Logon Script:         
Profile Path:         \\centos7\sambauser\profile
Domain:               CENTOS7
Account desc:         
Workstations:         
Munged dial:          
Logon time:           0
Logoff time:          never
Kickoff time:         never
Password last set:    Tue, 15 Aug 2017 16:21:39 CEST
Password can change:  Tue, 15 Aug 2017 16:21:39 CEST
Password must change: never
Last bad password   : 0
Bad password count  : 0
Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

La commande peut aussi être utiliser pour supprimer un utilisateur SAMBA :

[root@centos7 ~]# pdbedit -x sambauser
[root@centos7 ~]# cat /var/lib/samba/private/smbpasswd
root:0:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:E183384163AA4BFFAF24CC678CF19EAB:[U          ]:LCT-5993021B:
trainee:1000:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:2A217A32BDE94A23B26A8EEA26C70874:[U          ]:LCT-5993022B:
[root@centos7 ~]# cat /etc/passwd | grep sambauser
sambauser:x:1001:1002::/home/sambauser:/bin/bash

Comprendre la structure du fichier de configuration smb.conf

Ayant maintenant créé un fichier smbpasswd, il est le moment de terminer la configuration de votre serveur Samba.

Cette configuration est dictée par un seul et unique fichier – /etc/samba/smb.conf.

Avant de faire des manipulations, veillez à sauvegarder votre fichier smb.conf actuel :

[root@centos7 ~]# cp /etc/samba/smb.conf /etc/samba/smb.old

Examinez le fichier smb.conf suivant ainsi que le tableau récapitulatif des paramètres :

# Example d'un fichier smb.conf pour des partages par ressources
# Toute ligne commencant par un # ou un ; est un commentaire et 
# n'est pas prise en compte lors de la lecture de ce fichier par 
# samba. N'oubliez pas de lancer la commande 'service smb restart' 
# lors de chaque changement et enregistrement de ce fichier. 

#======================= Section Globale ======================== 

[global]

# 1. Options du nom du serveur: 
# Modifiez la ligne qui suit pour votre workgroup 
workgroup = WORKGROUP
# Modifiez la ligne qui suit pour votre nom de machine. Par défaut sa valeur est la valeur de hostname
netbios name = Machine01
server string = Samba Server %v

# 2. Options d'impression : 
printcap name = cups
load printers = yes 
printing = cups

# 3. Options de journalisation : 
log file = /var/log/samba/log.%m 
max log size = 50 
log level = 5

# 4. Options de sécurité : 
# Modifiez la ligne qui suit pour votre adresse reseau 
hosts allow = 192.168.1.  127.
hosts deny = all
security = user
passdb backend = smbpasswd
encrypt passwords = yes 
smb passwd file = /etc/samba/smbpasswd 
unix password sync = Yes 
passwd program = /usr/bin/passwd %u 
passwd chat = *New*UNIX*password* %n\n *ReType*new*UNIX*password* %n\n 
*passwd:*all*authentication*tokens*updated*successfully*

# 5. Options du reseau: 
# Modifiez la ligne qui suit pour l'adresse IP de votre carte reseau 
interfaces = 192.168.1.22/255.255.255.0
# Modifiez la ligne qui suit à l'adresse de diffussion de votre reseau 
remote announce = 192.168.1.255

# 6.Options de resolutions de nom Netbios: 
name resolve order = wins lmhosts bcast host 
dns proxy = yes

# 7. Options de nommage de fichiers: 
dos charset = 850 
unix charset = ISO8859-1

#======================== Definitions des Partages ============================== 

[homes] 
comment = Repertoires Personnels 
browseable = no 
writable = yes

[public] 
comment = Repertoire Public 
path = /home/samba/public 
write list = @staff 
read list = @staff 
writable = yes 
guest ok = no 
create mode = 0755
#Fin

Ce fichier est un exemple d'un smb.conf avec security = user. De cette façon chaque utilisateur ne verra que les partages auxquels il a un droit d'accès. En équivalence Windows™, ceci correspond à mettre en place un réseau poste-à-poste avec Windows™ NT4.0 Workstation.

Toute ligne commençant par # ou ; est un commentaire et n'est pas prise en compte lors de la lecture du fichier par Samba. Le fichier est divisé en deux parties – la section globale et la section partages.

L'exemple de smb.conf ci-dessus établira un niveau de sécurité par ressource. Dans ce cas, un utilisateur verra toutes les ressources partagées sur le serveur Linux dans le Voisinage Réseau Windows, mais il n'aura accès qu'aux ressources pour lesquelles il existe une autorisation explicite pour lui.

Afin de comprendre les paramètres dans le fichier précédent, consultez le tableau suivant :

Paramètre Valeur Par Défaut Description
Workgroup = s/o Le nom du groupe de travail
Netbios name = La valeur de hostname Le nom NetBIOS du serveur
Server string = s/o La description du serveur
path = s/o Désigne le chemin du répertoire à partager
comment = s/o Désigne le nom du partage visible dans le voisinage réseau Windows
guest ok = yes no Si yes, le partage est en accès libre sans restrictions de mot de passe.
guest account = nobody Le nom du compte d'accès libre.
valid users = tout utilisateur Désigne une liste d'utilisateurs qui peuvent avoir accès à la ressource. La liste d'utilisateurs est séparé par des espaces. Chaque groupe commence avec @. Ex: valid users = user1 user2 @groupe3
printable = true false Partager un service d'impression
writeable = yes no Désigne si oui ou non le droit d'écriture est accordé dans le répertoire concerné.
write list = tout utilisateur Désigne la liste des utilisateurs qui peuvent écrire dans un répertoire.
read list = tout utilisateur Désigne la liste des utilisateurs qui peuvent lire dans un répertoire.
browseable = yes Désigne si oui ou non le partage sera visible par tous, y compris les utilisateurs non authentifiés.
create mode = 0744 Désigne les droits maximum accordés à un fichier créés dans le répertoire concerné.
create mask = 0744 Idem create mode =.
directory mode = 0755 Désigne les droits maximum accordés à un répertoire créé dans la ressource.
directory mask = 0755 Idem directory mode =.
force create mode s/o Désigne les droits accordés à un fichier créés dans le répertoire concerné.
force directory mode s/o Désigne les droits accordés à un répertoire créé dans la ressource.
force group = s/o Impose un groupe propriétaire pour tout fichier créé dans le répertoire.
hide dot files = yes Cache les fichiers cachés de Linux.
hosts allow = toute station Liste d'adresses IP ayant accès à une ressource.
hosts deny = aucune Liste d'adresses IP n'ayant pas accès à une ressource.
max connections = 0 Désigne un nombre de connections illimités à la ressource concernée. Sinon spécifiez un nombre maximum de connexions.
Log file = /chemin/log.%m s/o Désigne le chemin des logs. L'opérateur %m implique que chaque log aura le nom de la machine associé. Ex: log.station1, log.station2 etc.
max log size = s/o La taille est à définir en Ko. C'est la taille maximale du fichier log.
interfaces = s/o Désigne l'adresse IP de la carte réseau connecté au réseau Windows. A exprimer sous la forme N° IP/N° sous-masque.
remote announce = s/o L'adresse de Broadcast du réseau, ici le 192.168.1.255.

Notez que lors de chaque changement et enregistrement de ce fichier, il faut que smb relise le fichier.

Le fichier smb.conf utilise également des variables :

Variable Description
%a L'architecture du client (Samba, Windows 2000, Windows NT, Unknown
%l L'adresse IP du client
%M Le nom DNS du client
%m Le nom NetBIOS du client
%u L'identité de l'utilisateur
%U L'identité souhaité par l'utilisateur
%H Le répertoire de connexion de l'utilisateur
%g Le groupe principal de l'utilisateur
%S Le nom du partage
%P Le répertoire racine du partage
%d Le PID du process courant
%h Le nom DNS du serveur SAMBA
%L Le nom NetBIOS du serveur SAMBA
%N Idem %L
%v La version de SAMBA
%T La date et l'heure du système
%var La valeur de la variable var

Créez donc le fichier smb.conf ci-dessous et placez-le dans le répertoire /etc/samba. Modifiez les directives hosts allow, interfaces et remote announce en fonction de votre adresse IP :

smb.conf
[global]
workgroup = WORKGROUP 
netbios name = Machine01
server string = Samba Server %v
printcap name = cups
load printers = yes
printing = cups
log file = /var/log/samba/log.%m
max log size = 50
log level = 5
hosts allow = 192.168.1.  127.
hosts deny = all
security = user
passdb backend = smbpasswd
encrypt passwords = yes
smb passwd file = /etc/samba/smbpasswd
unix password sync = Yes
passwd program = /usr/bin/passwd %u
passwd chat = *New*UNIX*password* %n\n *ReType*new*UNIX*password* %n\n *passwd:*all*authentication*tokens*updated*successfully*
interfaces = 192.168.1.103/255.255.255.0
remote announce = 192.168.1.255
name resolve order = wins lmhosts bcast host
dns proxy = yes 
dos charset = 850
unix charset = ISO8859-1
 
[homes]
comment = Repertoires Personnels
browseable = no
writable = yes
 
[public]
comment = Repertoire Public
path = /home/samba/public
write list = @staff
read list = @staff
writable = yes
guest ok = no
create mode = 0755

Rechargez le fichier de configuration smb.conf :

[root@centos7 ~]# systemctl reload smb

Créez maintenant le répertoire /home/samba/public :

[root@centos7 ~]# mkdir -p /home/samba/public

Ensuite, afin que chaque utilisateur puisse écrire dans le répertoire public mais supprimer uniquement ses propres fichiers et répertoires, il faut modifier les permissions pour le répertoire /home/samba/public :

[root@centos7 ~]# chmod 1777 /home/samba/public

Vous pouvez tester votre fichier smb.conf avec la commande testparm :

[root@centos7 ~]# testparm
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[homes]"
Processing section "[public]"
Loaded services file OK.
Server role: ROLE_STANDALONE

Press enter to see a dump of your service definitions

# Global parameters
[global]
	dos charset = 850
	interfaces = 192.168.1.103/255.255.255.0
	netbios name = MACHINE01
	server string = Samba Server %v
	unix charset = ISO8859-1
	log file = /var/log/samba/log.%m
	max log size = 50
	remote announce = 192.168.1.255
	printcap name = cups
	name resolve order = wins lmhosts bcast host
	passdb backend = smbpasswd
	passwd chat = *New*UNIX*password* %n\n *ReType*new*UNIX*password* %n\n *passwd:*all*authentication*tokens*updated*successfully*
	passwd program = /usr/bin/passwd %u
	security = USER
	smb passwd file = /etc/samba/smbpasswd
	unix password sync = Yes
	idmap config * : backend = tdb
	hosts allow = 192.168.1. 127.
	hosts deny = all


[homes]
	comment = Repertoires Personnels
	browseable = No
	read only = No


[public]
	comment = Repertoire Public
	path = /home/samba/public
	create mask = 0755
	read list = @staff
	read only = No
	write list = @staff

LAB #1 - Tester Samba en tant que Serveur de Fichiers

Pour tester votre configuration :

  • Consultez la section Réseau de l'Explorateur de Fichiers de votre machine hôte Windows™,
  • Identifiez la machine MACHINE01,
  • Connectez-vous à la MACHINE01 avec le compte trainee/trainee,
  • Vérifiez que vous pouvez créer un fichier dans le partage du serveur samba appelé public ainsi que dans le partage du répertoire personnel de trainee.

Samba en tant que Serveur d'Impression

Présentation

La directive printing du fichier /etc/samba/smb.conf définit le type de spooleur Unix afin d'utiliser les commandes du service d'impression. Les valeurs possibles de cette directive sont :

  • BSD
  • SYSV
  • AIX
  • HPUX
  • QNX
  • SOFTQ
  • CUPS
  • LPRNG
  • PLP

Dans l'utilisation de Linux en tant que serveur samba, le type de spooleur utilisé est principalement cups.

Cups

Le logiciel Common Unix Printing System est un système de gestion des impressions conçu pour Unix.

Protocoles

Cups utilise le protocole IPP sur les ports udp/631 et tcp/631.

Ce protocole :

  • est une extension du protocole HTTP
  • permet d'administrer CUPS via un navigateur web
  • permet de décrire les spools d'impression par simple URL

Cups peut aussi utiliser les deux protocoles suivants :

  • tcp/515 - Protocole BSD
  • tcp/9100 - Protocole JeTDirect pour les imprimantes réseau HP

Daemon

cupsd est le daemon principal du système CUPS. Quand cupsd traite une impression, il transmet les données à un filtre en fonction du modèle d'imprimante. Après traitement par le filtre, cupsd transmet le résultat à un backend qui se charge de l'impression. Les échanges entre cupsd et ces programmes se font via des répertoires de spools et des tubes.

cupsd.conf

Le principal fichier concerné par CUPS est :

/etc/cups/cupsd.conf

Le fichier de configuration de CUPS est /etc/cups/cupsd.conf. Dans ce fichier on peut trouver :

  • le port d'ecoute d'IPP
  • les comptes utilisateur et groupe sous lesquels s'exécute le serveur
  • le niveau de journalisation
  • la configuration du serveur Browse, c'est-à-dire de découverte des imprimantes réseaux
  • les ACL d'accès au spools
  • les ACL d'accès à l'administration du serveur.
[root@centos7 ~]# cat /etc/cups/cupsd.conf
MaxLogSize 0
#
# "$Id: cupsd.conf.in 7888 2008-08-29 21:16:56Z mike $"
#
# Sample configuration file for the CUPS scheduler.  See "man cupsd.conf" for a
# complete description of this file.
#

# Log general information in error_log - change "warn" to "debug"
# for troubleshooting...
LogLevel warn

# Only listen for connections from the local machine.
Listen localhost:631
Listen /var/run/cups/cups.sock

# Show shared printers on the local network.
Browsing On
BrowseLocalProtocols dnssd

# Default authentication type, when authentication is required...
DefaultAuthType Basic

# Web interface setting...
WebInterface Yes

# Restrict access to the server...
<Location />
  Order allow,deny
</Location>

# Restrict access to the admin pages...
<Location /admin>
  Order allow,deny
</Location>

# Restrict access to configuration files...
<Location /admin/conf>
  AuthType Default
  Require user @SYSTEM
  Order allow,deny
</Location>

# Set the default printer/job policies...
<Policy default>
  # Job/subscription privacy...
  JobPrivateAccess default
  JobPrivateValues default
  SubscriptionPrivateAccess default
  SubscriptionPrivateValues default

  # Job-related operations must be done by the owner or an administrator...
  <Limit Create-Job Print-Job Print-URI Validate-Job>
    Order deny,allow
  </Limit>

  <Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription Get-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job Cancel-My-Jobs Close-Job CUPS-Move-Job CUPS-Get-Document>
    Require user @OWNER @SYSTEM
    Order deny,allow
  </Limit>

  # All administration operations require an administrator to authenticate...
  <Limit CUPS-Add-Modify-Printer CUPS-Delete-Printer CUPS-Add-Modify-Class CUPS-Delete-Class CUPS-Set-Default CUPS-Get-Devices>
    AuthType Default
    Require user @SYSTEM
    Order deny,allow
  </Limit>

  # All printer operations require a printer operator to authenticate...
  <Limit Pause-Printer Resume-Printer Enable-Printer Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer Promote-Job Schedule-Job-After Cancel-Jobs CUPS-Accept-Jobs CUPS-Reject-Jobs>
    AuthType Default
    Require user @SYSTEM
    Order deny,allow
  </Limit>

  # Only the owner or an administrator can cancel or authenticate a job...
  <Limit Cancel-Job CUPS-Authenticate-Job>
    Require user @OWNER @SYSTEM
    Order deny,allow
  </Limit>

  <Limit All>
    Order deny,allow
  </Limit>
</Policy>

# Set the authenticated printer/job policies...
<Policy authenticated>
  # Job/subscription privacy...
  JobPrivateAccess default
  JobPrivateValues default
  SubscriptionPrivateAccess default
  SubscriptionPrivateValues default

  # Job-related operations must be done by the owner or an administrator...
  <Limit Create-Job Print-Job Print-URI Validate-Job>
    AuthType Default
    Order deny,allow
  </Limit>

  <Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription Get-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job Cancel-My-Jobs Close-Job CUPS-Move-Job CUPS-Get-Document>
    AuthType Default
    Require user @OWNER @SYSTEM
    Order deny,allow
  </Limit>

  # All administration operations require an administrator to authenticate...
  <Limit CUPS-Add-Modify-Printer CUPS-Delete-Printer CUPS-Add-Modify-Class CUPS-Delete-Class CUPS-Set-Default>
    AuthType Default
    Require user @SYSTEM
    Order deny,allow
  </Limit>

  # All printer operations require a printer operator to authenticate...
  <Limit Pause-Printer Resume-Printer Enable-Printer Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer Promote-Job Schedule-Job-After Cancel-Jobs CUPS-Accept-Jobs CUPS-Reject-Jobs>
    AuthType Default
    Require user @SYSTEM
    Order deny,allow
  </Limit>

  # Only the owner or an administrator can cancel or authenticate a job...
  <Limit Cancel-Job CUPS-Authenticate-Job>
    AuthType Default
    Require user @OWNER @SYSTEM
    Order deny,allow
  </Limit>

  <Limit All>
    Order deny,allow
  </Limit>
</Policy>

#
# End of "$Id: cupsd.conf.in 7888 2008-08-29 21:16:56Z mike $".
#

Filtres

Les filtres disponibles au système CUPS se trouvent dans le répertoire /usr/lib/cups/filter :

[root@centos7 ~]# ls /usr/lib/cups/filter
bannertopdf     gstoraster  imagetoraster  rastertodymo            rastertopwg
commandtocanon  gziptoany   pdftoijs       rastertoepson           textonly
commandtoepson  hpcups      pdftopdf       rastertoescpx           texttopaps
commandtoescpx  hpcupsfax   pdftops        rastertogutenprint.5.2  texttopdf
commandtopclx   hplipjs     pdftoraster    rastertohp              texttops
commandtops     imagetopdf  pstopdf        rastertolabel
gstopxl         imagetops   pstops         rastertopclx

Backends

Les Backends disponibles au système CUPS se trouvent dans le répertoire /usr/lib/cups/backend :

[root@centos7 ~]# ls /usr/lib/cups/backend
dnssd     http   ipp   lpd  parallel  snmp    usb
failover  https  ipps  ncp  serial    socket

La liste des backends reconnus par CUPS peut être obtenue en saisissant la commande suivante :

[root@centos7 ~]# lpinfo -v
network lpd
network http
network socket
network https
network ipp
network ipps

Il y a un type de backend par liaison locale d'imprimante (usb, série, parallèle). Il peut y avoir aussi un backend par type de protocole réseau :

Backend Description
IPP Client IPP
LPD Client LPD
SMB Client SMB
Socket Client JetDirect sur port tcp/9100
Pap/cap Client AppleTalk

Journaux

Les journaux de CUPS se trouvent dans /var/log/cups :

[root@centos7 ~]# ls -l /var/log/cups
total 8
-rw-------. 1 root lp 1394 Oct 29 10:04 access_log
-rw-------. 1 root lp 1740 Oct 26 15:41 access_log-20151026
-rw-------. 1 root lp    0 Mar  8  2015 error_log
-rw-------. 1 root lp    0 Mar  8  2015 page_log

Imprimantes

La commande suivante liste les imprimantes connues de CUPS :

[root@centos7 ~]# lpinfo -m | more
drv:///hp/hpijs.drv/apollo-2100-hpijs.ppd Apollo 2100 hpijs, 3.13.7
drv:///hp/hpcups.drv/apollo-2100.ppd Apollo 2100, hpcups 3.13.7
drv:///hp/hpijs.drv/apollo-2150-hpijs.ppd Apollo 2150 hpijs, 3.13.7
drv:///hp/hpcups.drv/apollo-2150.ppd Apollo 2150, hpcups 3.13.7
drv:///hp/hpijs.drv/apollo-2200-hpijs.ppd Apollo 2200 hpijs, 3.13.7
drv:///hp/hpcups.drv/apollo-2200.ppd Apollo 2200, hpcups 3.13.7
drv:///hp/hpijs.drv/apollo-2500-hpijs.ppd Apollo 2500 hpijs, 3.13.7
drv:///hp/hpcups.drv/apollo-2500.ppd Apollo 2500, hpcups 3.13.7
drv:///hp/hpijs.drv/apollo-2600-hpijs.ppd Apollo 2600 hpijs, 3.13.7
drv:///hp/hpcups.drv/apollo-2600.ppd Apollo 2600, hpcups 3.13.7
drv:///hp/hpijs.drv/apollo-2650-hpijs.ppd Apollo 2650 hpijs, 3.13.7
drv:///hp/hpcups.drv/apollo-2650.ppd Apollo 2650, hpcups 3.13.7
gutenprint.5.2://pcl-apollo-p2100/expert Apollo P-2100 - CUPS+Gutenprint v5.2.9
gutenprint.5.2://pcl-apollo-p2100/simple Apollo P-2100 - CUPS+Gutenprint v5.2.9 
Simplified
gutenprint.5.2://pcl-apollo-p2150/expert Apollo P-2150 - CUPS+Gutenprint v5.2.9
gutenprint.5.2://pcl-apollo-p2150/simple Apollo P-2150 - CUPS+Gutenprint v5.2.9 
Simplified
gutenprint.5.2://pcl-apollo-p2200/expert Apollo P-2200 - CUPS+Gutenprint v5.2.9
gutenprint.5.2://pcl-apollo-p2200/simple Apollo P-2200 - CUPS+Gutenprint v5.2.9 
Simplified
gutenprint.5.2://pcl-apollo-p2250/expert Apollo P-2250 - CUPS+Gutenprint v5.2.9
gutenprint.5.2://pcl-apollo-p2250/simple Apollo P-2250 - CUPS+Gutenprint v5.2.9 
--More--

Administration

Le serveur CUPS est administré en ligne de commande par l'utilisation d'une ou de plusieurs des commandes suivantes :

Commande Description
lpadmin Principale commande d'administration pour ajouter, supprimer et modifier des files d'attente
accept Autorise le dépôt de requêtes dans un spool
reject Interdit le dépôt de requêtes dans un spool
cupsenable Autorise le traitement des requêtes dans un spool
cupsdisable Interdit le traitement des requêtes dans un spool
lpstat Liste des travaux en attente
cancel Supprime des requêtes
lpmove Déplace des travaux en attente d'un spool à un autre
lpinfo Affiche la liste des filtres ou backends disponibles
lppasswd Gère les comptes et les mots de passe pour l'accès web
lpstat

Pour consulter la liste des files d'attente, il convient d'utiliser donc la commande lpstat :

[root@centos7 ~]# lpstat -t
scheduler is running
no system default destination
lpstat: No destinations added.
lpstat: No destinations added.
lpstat: No destinations added.
lpstat: No destinations added.
lpadmin

Créez maintenant une file d'attente sans pilote. Les imprimantes sans pilote utilisent le mode raw :

[root@centos7 ~]# lpadmin -p imp1 -v socket://localhost:12000 -m raw

Les options de cette commande sont les suivantes :

Options Description
-p Le nom de la file
-v L'imprimante physique ou réseau sous forme URL
-m Le modèle à utiliser (un fichier ayant une extension ppd qui identifie l'imprimante)

Les types de URL possible sont :

URL Description
file:/chemin/fichier Impression dans un fichier
http://serveur:631/ipp/port1 Impression via http
lpd://serveur/queue Impression via LPD
ipp://serveur:631/printers/queue Impression via IPP
smb://workgroup/serveur/nompartage Impression via SMB
socket://serveur Impression via JetDirect
serial:/dev/ttyS0?baud=1200+bits=8+parity=none+flow=none Impression via port série
parallel:/dev/lp0 Impression via port parallèle

Vérifiez la création de la file d'attente :

[root@centos7 ~]# lpstat -t
scheduler is running
no system default destination
device for imp1: socket://localhost:12000
imp1 not accepting requests since Thu 29 Oct 2015 10:06:57 AM CET -
	reason unknown
printer imp1 disabled since Thu 29 Oct 2015 10:06:57 AM CET -
	reason unknown
accept, cupsenable

Il est maintenant possible d'activer l'imprimante grâce aux commandes accept et enable :

[root@centos7 ~]# accept imp1
[root@centos7 ~]# lpstat -t
scheduler is running
no system default destination
device for imp1: socket://localhost:12000
imp1 accepting requests since Thu 29 Oct 2015 10:06:57 AM CET
printer imp1 disabled since Thu 29 Oct 2015 10:06:57 AM CET -
	reason unknown
[root@centos7 ~]# cupsenable imp1
[root@centos7 ~]# lpstat -t
scheduler is running
no system default destination
device for imp1: socket://localhost:12000
imp1 accepting requests since Thu 29 Oct 2015 10:08:13 AM CET
printer imp1 is idle.  enabled since Thu 29 Oct 2015 10:08:13 AM CET

Important : Notez que les deux commandes accept et cupsenable ont leurs opposées : reject et cupsdisable.

Pour nommer une imprimante en tant que la destination par défaut, il convient d'utiliser la commande lpadmin avec l'option -d :

[root@centos7 ~]# lpadmin -d imp1
[root@centos7 ~]# lpstat -t
scheduler is running
system default destination: imp1
device for imp1: socket://localhost:12000
imp1 accepting requests since Thu 29 Oct 2015 10:08:13 AM CET
printer imp1 is idle.  enabled since Thu 29 Oct 2015 10:08:13 AM CET

Vous allez mainteant créer une fille d'attente pour une imprimante HP Color LaserJet Series PCL 6 utilisant le fichier pxlcolor.ppd, appelée Imprimante1 et étant connectée au port parallèle :

[root@centos7 ~]# lpadmin -p Imprimante1 -E -v parallel:/dev/lp0 -m pxlcolor.ppd
[root@centos7 ~]# lpstat -t
scheduler is running
system default destination: imp1
device for imp1: socket://localhost:12000
device for Imprimante1: parallel:/dev/lp0
imp1 accepting requests since Thu 29 Oct 2015 10:08:13 AM CET
Imprimante1 accepting requests since Thu 29 Oct 2015 10:09:31 AM CET
printer imp1 is idle.  enabled since Thu 29 Oct 2015 10:08:13 AM CET
printer Imprimante1 is idle.  enabled since Thu 29 Oct 2015 10:09:31 AM CET

Important : Notez que l'option -E permet de combiner les commandes accept et cupsenable avec lpadmin.

Sous RHEL/CentOS la file d'attente physique pour cette imprimante existe déjà :

[root@centos7 ~]# ls -l /dev/lp0
crw-rw----. 1 root lp 6, 0 Oct 28 09:40 /dev/lp0

Testez maintenant votre imprimante fictive :

[root@centos7 ~]# echo "Test Printer File" > /tmp/test.print
[root@centos7 ~]# lpadmin -d Imprimante1
[root@centos7 ~]# lpstat -t
scheduler is running
system default destination: Imprimante1
device for imp1: socket://localhost:12000
device for Imprimante1: parallel:/dev/lp0
imp1 accepting requests since Thu 29 Oct 2015 10:08:13 AM CET
Imprimante1 accepting requests since Thu 29 Oct 2015 10:09:31 AM CET
printer imp1 is idle.  enabled since Thu 29 Oct 2015 10:08:13 AM CET
printer Imprimante1 is idle.  enabled since Thu 29 Oct 2015 10:09:31 AM CET

[root@centos7 ~]# lp /tmp/test.print
request id is Imprimante1-1 (1 file(s))

Important : Notez que l'impression a eu lieu et la requête s'appelle Imprimante1-1.

Créez maintenant une deuxième file d'attente Imprimante2 et saisissez la commande lpstat -t. Vous devez obtenir un résultat similaire à celui-ci :

[root@centos7 ~]# lpadmin -p Imprimante2 -E -v parallel:/dev/lp1 -m pxlcolor.ppd
[root@centos7 ~]# lpstat -t
scheduler is running
system default destination: Imprimante1
device for imp1: socket://localhost:12000
device for Imprimante1: parallel:/dev/lp0
device for Imprimante2: parallel:/dev/lp1
imp1 accepting requests since Thu 29 Oct 2015 10:08:13 AM CET
Imprimante1 accepting requests since Thu 29 Oct 2015 10:15:42 AM CET
Imprimante2 accepting requests since Thu 29 Oct 2015 10:29:52 AM CET
printer imp1 is idle.  enabled since Thu 29 Oct 2015 10:08:13 AM CET
printer Imprimante1 now printing Imprimante1-1.  enabled since Thu 29 Oct 2015 10:15:42 AM CET
	Printer not connected; will retry in 30 seconds.
printer Imprimante2 is idle.  enabled since Thu 29 Oct 2015 10:29:52 AM CET
Imprimante1-1           root              1024   Thu 29 Oct 2015 10:15:42 AM CET
Classe d'imprimantes

Une classe est un ensemble ordonné d'imprimantes. Les requêtes envoyées à la classe sont imprimées sur la première imprimante disponible.

Pour créer une classe il convient d'utiliser la commande lpadmin avec l'option -c suivie par le nom de la classe à créer :

[root@centos7 ~]# lpadmin -p Imprimante1 -c classe1
[root@centos7 ~]# lpadmin -p Imprimante2 -c classe1

Vérifiez la création de la classe :

[root@centos7 ~]# lpstat -t
scheduler is running
system default destination: Imprimante1
members of class classe1:
	Imprimante1
	Imprimante2
device for classe1: ///dev/null
device for imp1: socket://localhost:12000
device for Imprimante1: parallel:/dev/lp0
device for Imprimante2: parallel:/dev/lp1
classe1 not accepting requests since Thu 29 Oct 2015 10:30:45 AM CET -
	reason unknown
imp1 accepting requests since Thu 29 Oct 2015 10:08:13 AM CET
Imprimante1 accepting requests since Thu 29 Oct 2015 10:15:42 AM CET
Imprimante2 accepting requests since Thu 29 Oct 2015 10:29:52 AM CET
printer classe1 disabled since Thu 29 Oct 2015 10:30:45 AM CET -
	reason unknown
printer imp1 is idle.  enabled since Thu 29 Oct 2015 10:08:13 AM CET
printer Imprimante1 now printing Imprimante1-1.  enabled since Thu 29 Oct 2015 10:15:42 AM CET
	Printer not connected; will retry in 30 seconds.
printer Imprimante2 is idle.  enabled since Thu 29 Oct 2015 10:29:52 AM CET
Imprimante1-1           root              1024   Thu 29 Oct 2015 10:15:42 AM CET
Le fichier /etc/cups/printers.conf

La configuration globale des files d'attente se trouve dans le fichier /etc/cups/printers.conf :

[root@centos7 ~]# cat /etc/cups/printers.conf
# Printer configuration file for CUPS v1.6.3
# Written by cupsd on 2015-10-29 10:30
# DO NOT EDIT THIS FILE WHEN CUPSD IS RUNNING
<Printer imp1>
UUID urn:uuid:8de75f5f-0ef2-3bc2-46cd-72696519155a
Info imp1
DeviceURI socket://localhost:12000
State Idle
StateTime 1446109693
Type 4
Accepting Yes
Shared Yes
JobSheets none none
QuotaPeriod 0
PageLimit 0
KLimit 0
OpPolicy default
ErrorPolicy stop-printer
</Printer>
<DefaultPrinter Imprimante1>
UUID urn:uuid:07682275-f74a-3fa2-5ad5-4311207ee125
Info Imprimante1
MakeModel HP Color LaserJet Series PCL 6 CUPS
DeviceURI parallel:/dev/lp0
State Idle
StateTime 1446110142
Type 8400972
Accepting Yes
Shared Yes
JobSheets none none
QuotaPeriod 0
PageLimit 0
KLimit 0
OpPolicy default
ErrorPolicy stop-printer
</Printer>
<Printer Imprimante2>
UUID urn:uuid:1fadf858-f631-3f4b-56d6-9acc408ab75c
Info Imprimante2
MakeModel HP Color LaserJet Series PCL 6 CUPS
DeviceURI parallel:/dev/lp1
State Idle
StateTime 1446110992
Type 8400972
Accepting Yes
Shared Yes
JobSheets none none
QuotaPeriod 0
PageLimit 0
KLimit 0
OpPolicy default
ErrorPolicy stop-printer
</Printer>
Le fichier /etc/cups/classes.conf

La configuration globale des classes se trouve dans le fichier /etc/cups/classes.conf :

[root@centos7 ~]# cat /etc/cups/classes.conf
# Class configuration file for CUPS v1.6.3
# Written by cupsd on 2015-10-29 10:31
# DO NOT EDIT THIS FILE WHEN CUPSD IS RUNNING
<Class classe1>
UUID urn:uuid:dc222765-63c6-394e-4fb3-d203c1475019
Info classe1
State Stopped
StateTime 1446111045
Accepting No
Shared Yes
JobSheets none none
Printer Imprimante1
Printer Imprimante2
QuotaPeriod 0
PageLimit 0
KLimit 0
OpPolicy default
ErrorPolicy retry-current-job
</Class>
cancel

Pour annuler l'impression il convient d'utiliser la commande cancel:

[root@centos7 ~]# lpstat
Imprimante1-1           root              1024   Thu 29 Oct 2015 10:15:42 AM CET
[root@centos7 ~]# cancel imprimante1-1
[root@centos7 ~]# lpstat
[root@centos7 ~]# 
lpmove

La commande lpmove permet de déplacer tous les jobs d'une file à une autre.

Déclarez l'imprimante imp1 comme étant l'imprimante par défault :

[root@centos7 ~]# lpadmin -d imp1

Créez ensuite une nouvelle impression :

[root@centos7 ~]# lp /tmp/test.print
request id is imp1-2 (1 file(s))
[root@centos7 ~]# lpstat
imp1-2                  root              1024   Thu 29 Oct 2015 10:37:41 AM CET

Déplacer ce job vers la classe1 :

[root@centos7 ~]# lpmove imp1 classe1
[root@centos7 ~]# lpstat
classe1-2               root              1024   Thu 29 Oct 2015 10:37:41 AM CET

Pour retirer une file d'une classe, il convient d'utiliser la commande lpadmin :

[root@centos7 ~]# lpadmin -p Imprimante1 -r classe1
[root@centos7 ~]# lpadmin -p Imprimante2 -r classe1
[root@centos7 ~]# lpstat -t
scheduler is running
system default destination: imp1
device for imp1: socket://localhost:12000
device for Imprimante1: parallel:/dev/lp0
device for Imprimante2: parallel:/dev/lp1
imp1 accepting requests since Thu 29 Oct 2015 10:38:22 AM CET
Imprimante1 accepting requests since Thu 29 Oct 2015 10:36:49 AM CET
Imprimante2 accepting requests since Thu 29 Oct 2015 10:29:52 AM CET
printer imp1 is idle.  enabled since Thu 29 Oct 2015 10:38:22 AM CET
	The printer is not responding.
printer Imprimante1 is idle.  enabled since Thu 29 Oct 2015 10:36:49 AM CET
	Printer not connected; will retry in 30 seconds.
printer Imprimante2 is idle.  enabled since Thu 29 Oct 2015 10:29:52 AM CET

Important : Notez que la classe est automatiquement supprimée quand elle est vide.

Pour supprimer les files créées il convient de nouveau à utiliser la commande lpadmin :

[root@centos7 ~]# lpadmin -x Imprimante1
[root@centos7 ~]# lpadmin -x Imprimante2
[root@centos7 ~]# lpadmin -x imp1
[root@centos7 ~]# lpstat -t
scheduler is running
no system default destination
lpstat: No destinations added.
lpstat: No destinations added.
lpstat: No destinations added.
lpstat: No destinations added.

Interface Web

CUPS peut également être administré en utilisant l'interface Web sur le port 631/tcp. L'interface de votre machine virtuelle est disponible à partir de votre machine hôte via l'adresse http://adresse_IP_de_votre_VM:631.

Pour configurer cups afin de permettre des connexions à partir de votre machine hôte Windows™, il convient de modifier le fichier /etc/cups/cupd.conf :

[root@centos7 ~]# cat /etc/cups/cupsd.conf
MaxLogSize 0
#
# "$Id: cupsd.conf.in 7888 2008-08-29 21:16:56Z mike $"
#
# Sample configuration file for the CUPS scheduler.  See "man cupsd.conf" for a
# complete description of this file.
#

# Log general information in error_log - change "warn" to "debug"
# for troubleshooting...
LogLevel warn

# Only listen for connections from the local machine.
# Listen localhost:631  # Mettre en commentaire
Listen *:631            # Ajouter cette ligne
Listen /var/run/cups/cups.sock

# Show shared printers on the local network.
Browsing On
BrowseLocalProtocols dnssd
BrowseAddress All       # Ajouter cette ligne

# Default authentication type, when authentication is required...
DefaultAuthType Basic

# Web interface setting...
WebInterface Yes

# Restrict access to the server...
<Location />
  Order allow,deny
  Allow All                     # Ajouter cette ligne
</Location>

# Restrict access to the admin pages...
<Location /admin>
  Order allow,deny
  Allow All                     # Ajouter cette ligne
</Location>

# Restrict access to configuration files...
<Location /admin/conf>
  AuthType Default
  Require user @SYSTEM
  Order allow,deny
  Allow All                     # Ajouter cette ligne
</Location>
...

Sauvegardez votre fichier et re-démarrer le service cupsd :

[root@centos7 ~]# systemctl restart cups

Lancez l'interface Web. Re-créez les mêmes imprimantes et la même classe.

Configuration de samba

Le fichier /etc/printcap

Le fichier /etc/printcap contient la définition des imprimantes locales :

[root@centos7 ~]# cat /etc/printcap
# This file was automatically generated by cupsd(8) from the
# /etc/cups/printers.conf file.  All changes to this file
# will be lost.
classe1|classe1:rm=centos7.fenestros.loc:rp=classe1:
imp1|imp1:rm=centos7.fenestros.loc:rp=imp1:
Imprimante1|Imprimante1:rm=centos7.fenestros.loc:rp=Imprimante1:
Imprimante2|Imprimante2:rm=centos7.fenestros.loc:rp=Imprimante2:

Modifications au fichier /etc/samba/smb.conf

Afin de permettre samba à utiliser les imprimantes précédemment créées, il est nécessaire d'ajouter 3 sections au fichier /etc/samba/smb.conf :

[Imprimante1] 
path = /var/spool/samba/imprimante1
printer = Imprimante1
printable = yes
browseable = yes
public = yes
guest ok = yes
writable = no

[print$]
comment = drivers pour imprimantes
path = /etc/samba/printer_drivers
browseable = yes
guest ok = yes
read only = yes
write list = root

Créez ensuite les répertoires de spool :

[root@centos7 ~]# mkdir /var/spool/samba/imprimante1
[root@centos7 ~]# mkdir /var/spool/samba/imprimante2

ainsi que le répertoire pour les pilotes :

[root@centos7 ~]# mkdir /etc/samba/printer_drivers

Redémarrez les services smb et nmb :

[root@centos7 ~]# systemctl restart smb
[root@centos7 ~]# systemctl restart nmb

Testez ensuite le bon fonctionnement de Samba grâce à la commande smbclient :

[root@centos7 ~]# smbclient -U% -L localhost
Domain=[WORKGROUP] OS=[Windows 6.1] Server=[Samba 4.4.4]

	Sharename       Type      Comment
	---------       ----      -------
	public          Disk      Repertoire Public
	Imprimante1     Printer   
	print$          Disk      drivers pour imprimantes
	IPC$            IPC       IPC Service (Samba Server 4.4.4)
Domain=[WORKGROUP] OS=[Windows 6.1] Server=[Samba 4.4.4]

	Server               Comment
	---------            -------

	Workgroup            Master
	---------            -------
	SAMBA                CENTOS7
Le partage print$

Le partage print$ est utilisé pour stocker les pilotes postscript génériques pour nos imprimantes et destinés aux clients Windows™.

Afin de mettre en place ces pilotes, il convient de les télécharger :

[root@centos7 ~]# wget http://unixmaniax.fr/download/cups_drivers_win32.zip
--2017-07-30 06:21:58--  http://unixmaniax.fr/download/cups_drivers_win32.zip
Resolving unixmaniax.fr (unixmaniax.fr)... 213.186.33.19
Connecting to unixmaniax.fr (unixmaniax.fr)|213.186.33.19|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 636872 (622K) [application/zip]
Saving to: ‘cups_drivers_win32.zip’

100%[=======================================================================================>] 636,872     1.54MB/s   in 0.4s   

2017-07-30 06:22:04 (1.54 MB/s) - ‘cups_drivers_win32.zip’ saved [636872/636872]

[root@centos7 ~]# wget http://unixmaniax.fr/download/cups_drivers_win64.zip
--2017-07-30 06:22:11--  http://unixmaniax.fr/download/cups_drivers_win64.zip
Resolving unixmaniax.fr (unixmaniax.fr)... 213.186.33.19
Connecting to unixmaniax.fr (unixmaniax.fr)|213.186.33.19|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1108000 (1.1M) [application/zip]
Saving to: ‘cups_drivers_win64.zip’

100%[=======================================================================================>] 1,108,000   3.02MB/s   in 0.4s   

2017-07-30 06:22:12 (3.02 MB/s) - ‘cups_drivers_win64.zip’ saved [1108000/1108000]

Créez ensuite le répertoire /usr/share/cups/drivers/x64 :

[root@centos7 ~]# mkdir -p /usr/share/cups/drivers/x64

Déplacez les fichiers *.zip téléchargés et décompressez-les :

[root@centos7 ~]# mv cups_drivers_win32.zip /usr/share/cups/drivers/
[root@centos7 ~]# mv cups_drivers_win64.zip /usr/share/cups/drivers/x64/
[root@centos7 ~]# cd /usr/share/cups/drivers/
[root@centos7 drivers]# unzip cups_drivers_win32.zip 
Archive:  cups_drivers_win32.zip
  inflating: cups6.inf               
  inflating: cups6.ini               
  inflating: cups6.ppd               
  inflating: cupsps6.dll             
  inflating: cupsui6.dll             
  inflating: ps5ui.dll               
  inflating: pscript.hlp             
  inflating: pscript.ntf             
  inflating: pscript5.dll            
[root@centos7 drivers]# ls -l
total 2056
-rwxrwxrwx. 1 root root    760 Dec  9  2010 cups6.inf
-rwxrwxrwx. 1 root root     67 Dec  9  2010 cups6.ini
-rwxrwxrwx. 1 root root   9529 Dec  9  2010 cups6.ppd
-rw-r--r--. 1 root root 636872 Aug 30  2013 cups_drivers_win32.zip
-rwxrwxrwx. 1 root root  12568 Dec  9  2010 cupsps6.dll
-rwxrwxrwx. 1 root root  13672 Dec  9  2010 cupsui6.dll
-rwxrwxrwx. 1 root root 129024 Aug 28  2013 ps5ui.dll
-rwxrwxrwx. 1 root root 455168 Aug 28  2013 pscript5.dll
-rwxrwxrwx. 1 root root  26038 Aug 28  2013 pscript.hlp
-rwxrwxrwx. 1 root root 792644 Aug 28  2013 pscript.ntf
drwxr-xr-x. 2 root root     35 Jul 30 06:29 x64
[root@centos7 drivers]# cd x64
[root@centos7 x64]# unzip cups_drivers_win64.zip 
Archive:  cups_drivers_win64.zip
  inflating: cups6.inf               
  inflating: cups6.ini               
  inflating: cups6.ppd               
  inflating: cupsps6.dll             
  inflating: cupsui6.dll             
  inflating: ps5ui.dll               
  inflating: pscript.hlp             
  inflating: pscript.ntf             
  inflating: pscript5.dll            
[root@centos7 x64]# ls -l
total 3652
-rwxrwxrwx. 1 root root     760 Jul 26  2011 cups6.inf
-rwxrwxrwx. 1 root root      67 Jul 26  2011 cups6.ini
-rwxrwxrwx. 1 root root    9529 Jul 26  2011 cups6.ppd
-rw-r--r--. 1 root root 1108000 Aug 30  2013 cups_drivers_win64.zip
-rwxrwxrwx. 1 root root   12568 Jul 26  2011 cupsps6.dll
-rwxrwxrwx. 1 root root   13672 Jul 26  2011 cupsui6.dll
-rwxrwxrwx. 1 root root  850432 Aug 28  2013 ps5ui.dll
-rwxrwxrwx. 1 root root  628736 Aug 28  2013 pscript5.dll
-rwxrwxrwx. 1 root root   26038 Aug 28  2013 pscript.hlp
-rwxrwxrwx. 1 root root 1062696 Aug 28  2013 pscript.ntf

Afin d'installer ces pilotes dans le répertoire /etc/samba/printer_drivers définit par la section print$ du fichier /etc/samba/smb.conf, il convient d'utiliser la commande suivante :

[root@centos7 ~]# cupsaddsmb -v -a

A l'issu de ce processus, vous constaterez la présence des pilotes dans le répertoire /etc/samba/printer_drivers :

[root@centos7 x64]# cd /etc/samba/printer_drivers
[root@centos7 printer_drivers]# ls
IA64  W32ALPHA  W32MIPS  W32PPC  W32X86  WIN40  x64
[root@centos7 printer_drivers]# cd x64
[root@centos7 x64]# ls
3  classe1.ppd  cups6.ini  cupsps6.dll  cupsui6.dll  ps5ui.dll  pscript5.dll  pscript.hlp  pscript.ntf

LAB #2 - Tester Samba en tant que Serveur d'Impression

Pour tester votre configuration :

  • Consultez la section Réseau de l'Explorateur de Fichiers de votre machine hôte Windows™,
  • Identifiez la machine MACHINE01,
  • Connectez-vous à la MACHINE01 avec le compte trainee/trainee,
  • Vérifiez que vous pouvez vous connecter à Imprimante1 en utilisant le pilote HP Color LaserJet 9500 MFP PCL6.

<html>

Copyright © 2020 Hugh Norris.<br><br>

</html>


Menu