Adding initial copy of "Using Samba (3rd ed)"
[kai/samba.git] / docs-xml / using_samba / appf.xml
1 <appendix label="F" id="SAMBA-AP-F">
2 <title>Sample Configuration File</title>
3
4
5
6
7 <para>
8 <indexterm id="appf-idx-993481-0" class="startofrange"><primary>configuration files</primary><secondary>sample of</secondary></indexterm>This appendix gives an example of a production <filename>smb.conf</filename> file and looks at how many of the options are used in practice. The following is a slightly disguised version of one we used at a corporation with five Linux servers, five Windows for Workgroups clients and three NT Workstation clients:</para>
9
10
11 <programlisting># smb.conf -- File Server System for: 1 Example.COM  BSC &amp; Management Office
12 [globals]
13         workgroup = 1EG_BSC
14         interfaces = 10.10.1.14/24</programlisting>
15
16
17 <para>We provide this service on only one of the machine's interfaces. The <literal>interfaces</literal> option sets its address and netmask, where <literal>/24</literal> is the same as using the netmask 255.255.255.0:</para>
18
19
20 <programlisting>comment = Samba ver. %v
21         preexec = csh -c `echo /usr/samba/bin/smbclient \
22                      -M %m -I %I` &amp;</programlisting>
23
24
25 <para>We use the <command>preexec</command> command to log information about all connections by machine name (<literal>%m</literal>) and IP address (<literal>%I)</literal>:</para>
26
27
28 <programlisting># smbstatus will output various info on current status
29         status = yes
30         browseable = yes
31         printing = bsd
32
33         # the username that will be used for access to services
34         # specified with 'guest = ok'
35         guest account = samba</programlisting>
36
37
38 <para>The default guest account was <literal>nobody</literal>, uid -1, which produced log messages on one of our machines saying "your server is being unfriendly," so we created a specific Samba guest account for browsing and printing:</para>
39
40
41 <programlisting># superuser account - admin privilages to shares, with no
42         # restrictions
43         # WARNING - use this with care: files can be modified,
44         # regardless of file permissions
45         admin users = root
46
47         # who is NOT allowed to connect to ANY service
48         invalid users = @wheel, mail, deamon, adt</programlisting>
49
50
51 <para>Daemons can't use Samba, only people. The <literal>invalid</literal> <literal>users</literal> option closes a security hole; it prevents intruders from breaking in by pretending to be a daemon process.</para>
52
53
54 <programlisting># hosts that are ALLOWED or DENIED from connecting to ANY service
55         hosts allow = 10.10.1.
56         hosts deny = 10.10.1.6
57
58         # where the lock files will be located
59         lock directory = /var/lock/samba/locks
60
61         # debug log files
62         # %m = separate log for each NetBIOS name (each machine)
63         log file = /var/log/samba/log.%m
64
65         # We send priority 0, 1 and 2 messages to the system logs
66         syslog = 2
67
68         # If a WinPopup message is sent to the server,
69         # redirect it to a user via e-mail
70
71         message command = /bin/mail -s 'message from #% on %m' \
72                                pkelly &lt; %s; rm %s
73
74 # ---------------------------------------------------
75 # [globals] Performance Tuning
76 # ---------------------------------------------------
77
78         # caching algorithm to reduce time doing getwd() calls.
79         getwd cache = yes
80
81         socket options = TCP_NODELAY
82
83         # tell the server whether the client is present and
84         # responding in seconds
85         keep alive = 60
86
87         # num minutes of inactivity before a connection is
88         # considered dead
89         dead time = 30
90
91         read prediction = yes
92         share modes = yes
93         max xmit = 17384
94         read size = 512</programlisting>
95
96
97 <para>The <literal>share</literal> <literal>modes</literal>, <literal>max</literal>, <literal>xinit</literal>, and <literal>read</literal> <literal>size</literal> options are machine-specific (see <link linkend="SAMBA-AP-B">Appendix B</link>):</para>
98
99
100 <programlisting># locking is done by the server
101         locking = yes
102
103         # control whether dos style attributes should be mapped
104         # to unix execute bits
105         map hidden = yes
106         map archive = yes
107         map system = yes</programlisting>
108
109
110 <para>The three <literal>map</literal> options will work only on shares with a create mode that includes the execute bits (0111). Our <literal>homes</literal> and <literal>printers</literal> shares won't honor them, but the [<literal>www]</literal> share will:</para>
111
112
113 <programlisting># ---------------------------------------------------------
114 # [globals] Security and Domain Logon Services
115 # ---------------------------------------------------------
116 # connections are made with UID and GID, not as shares
117         security = user
118
119 # boolean variable that controls whether passwords
120 # will be encrypted
121         encrypt passwords = yes
122         passwd chat = "*New password:*" %n\r "*New password (again):*" %n\r \ "*Password changed*"
123         passwd program = /usr/bin/passwd %u
124
125 # Always become the local master browser
126         domain master = yes
127         preferred master = yes
128         os level = 34
129
130 # For domain logons to work correctly. Samba acts as a
131 # primary domain controller.
132         domain logons = yes
133
134 # Logon script to run for user off the server each time
135 # username (%U) logs in.  Set the time, connect to shares,
136 # virus checks, etc.
137         logon script = scripts\%U.bat
138
139 [netlogon]
140         comment = "Domain Logon Services"
141         path = /u/netlogon
142         writable = yes
143         create mode = 444
144         guest ok = no
145         volume = "Network"</programlisting>
146
147
148 <para>This share, discussed in <link linkend="SAMBA-CH-6">Chapter 6</link>, is required for Samba to work smoothly in a Windows NT domain:</para>
149
150
151 <programlisting># -----------------------------------------------------------
152 # [homes] User Home Directories
153 # -----------------------------------------------------------
154 [homes]
155         comment = "Home Directory for : %u "
156         path = /u/users/%u</programlisting>
157
158
159 <para>The password file of the Samba server specifies each person's home directory as   <emphasis>/home/</emphasis><replaceable>machine_name</replaceable><emphasis>/</emphasis><replaceable>person</replaceable>, which NFS converts to point to the actual physicl location under <emphasis>/u/users</emphasis>. The <literal>path</literal> option in the <literal>[homes]</literal> share tells Samba the actual (non-NFS) location:</para>
160
161
162 <programlisting>guest ok = no
163         read only = no
164         create mode = 644
165         writable = yes
166         browseable = no
167
168 # -----------------------------------------------------------
169 # [printers] System Printers
170 # -----------------------------------------------------------
171 [printers]
172         comment = "Printers"
173         path = /var/spool/lpd/samba
174         printcap name = /etc/printcap
175         printable = yes
176         public = no
177         writable = no
178
179         lpq command = /usr/bin/lpq -P%p
180         lprm command = /usr/bin/lprm -P%p %j
181         lppause command = /usr/sbin/lpc stop %p
182         lpresume command = /usr/sbin/lpc start %p
183
184         create mode = 0700
185
186         browseable = no
187         load printers = yes
188
189 # -----------------------------------------------------------
190 # Specific Descriptions: [programs] [data] [retail]
191 # -----------------------------------------------------------
192 [programs]
193         comment = "Shared Programs %T"
194         volume = "programs"</programlisting>
195
196
197 <para>Shared Programs shows up in the Network Neighborhood, and <literal>programs</literal> is the volume name you specify when an installation program wants to know the label of the CD-ROM from which it thinks it's loading:</para>
198
199
200 <programlisting>path = /u/programs
201         public = yes
202         writeable = yes
203         printable = no
204         create mode = 664
205 [cdrom]
206         comment = "Unix CDROM"
207         path = /u/cdrom
208         public = no
209         writeable = no
210         printable = no
211         volume = "cdrom"
212
213 [data]
214         comment =  "Data Directories %T"
215         path = /u/data
216         public = no
217         create mode = 770
218         writeable = yes
219         volume = "data"
220
221 [nt4]
222         comment =  "NT4 Server"
223         path = /u/systems/nt4
224         public = yes
225         create mode = 770
226         writeable = yes
227         volume = "nt4_server"
228
229 [www]
230         comment =  "WWW System"
231         path = /usr/www/http
232         public = yes
233         create mode = 775
234         writeable = yes
235         volume = "www_system"</programlisting>
236
237
238 <para>The <literal>[www]</literal> share is the directory used on the Unix server to serve web pages. Samba makes the directory available to local PC users so the art department can update web pages.</para>
239
240
241
242
243
244
245
246
247
248
249
250 </appendix>