summaryrefslogtreecommitdiff
path: root/samba/smb-shares.conf.m4
blob: e782c033b73807277ef222f6163428f973fee213 (plain)
  1. ifelse(`
  2. /etc/samba/smb-shares.m4
  3. Copyright 2002 Jonas Smedegaard <dr@jones.dk>
  4. $Id: smb-shares.conf.m4,v 1.20 2002-10-28 15:23:23 klaus Exp $
  5. m4 share definitions for generating Samba server smb.conf include file
  6. Usage: m4 -DFQDN=<FQDN> /etc/local-COMMON/samba/smb-shares.conf.m4 > /etc/samba/smb-shares.conf
  7. Depend on file /etc/local-COMMON/file-<FQDN>.m4 containing lines of
  8. the following syntax:
  9. _dir(<path>,<uid>,<gid>,<modes>)dnl
  10. _homefiles(<os>,<mount>,<desc>,<path>[,ro])dnl
  11. _files(<os>,<mount>,<desc>,<path>,<uid>,<gid>,<modes>[,ro[,<group>]|,rw,<group>[,<othergroup>]])dnl
  12. where
  13. <os>: Client operating systems (mac|win|any)
  14. <mount>: Mount point name
  15. Some mount points are handled specially:
  16. "netlogon" has browsing and share modes disabled
  17. "userprofiles" sets "force user" and pre-creates user subdirectory mode 700
  18. "reference" allows guests
  19. "homes" has read/write access and pre-creates directory mode 750
  20. Samba: Use single word and max. 8 characters for WfW compatibility
  21. <desc>: Mount point description. Full(?) support for iso8859-1.
  22. <path>: Full path to mount point directory
  23. <uid>: user name of owner of mount point directory
  24. <gid>: group name of owner of mount point directory
  25. <modes>: Numeric access modes of mount point directory
  26. ro|rw|rop|rwp: Read-only or read/write access to mount point, and wether it should be private (not publically announced).
  27. Read-only access if undefined.
  28. _homefiles are always private.
  29. _homefiles are by default read-only, except "homes" (see above).
  30. <group>: Primary group with access to mountpoint.
  31. If mount point has access "rw" then primary group has read/write access as well.
  32. <othergroup>: Secondary group with readonly access
  33. Example:
  34. _dir(/home/fsadmin/COMMON,fsadmin,fsadmin,755)dnl
  35. _files(win,netlogon,Network logon,/etc/samba/netlogon,root,root,755,ro)
  36. _files(win,userprofiles,User profiles,/home/fsadmin/shares_win/userprofiles,root,root,755)
  37. _files(win,reference,DEBIAN: Samba Linux server,/home/fsadmin/shares_win/reference)
  38. _homefiles(win,homes,Personal files,%H/pc))
  39. _homefiles(mac,,Personal files,~/mac))
  40. _files(win,soft,softshare,/home/fsadmin/shares_win/software,fsadmin,fsadmin,775)dnl
  41. _printer(win,LW,Networkprinter queue for Apple LaserWriter 16/600,/tmp,lw)
  42. TODO:
  43. Support for netatalk is not yet implemented.
  44. <othergroup> is not yet implemented.
  45. Get rid of <os>: <othergroup> is now 10nth parameter which is only available in GNU m4.
  46. All _homefiles (including "homes") should probably have similar access default (read-only, private).
  47. BROKEN: Homefiles are *not* private currently :-(
  48. ')dnl
  49. changequote(<, >)dnl
  50. define(<_veto_mac>, </.AppleDouble/.AppleDesktop/Network Trash Folder/DesktopFolderDB/resource.frk/Icon^M/TheVolumeSettingsFolder/>)dnl
  51. define(<_warn>,
  52. < // WARNING: $1
  53. >)dnl
  54. define(<_masks>,
  55. < create mask = $1
  56. directory mask = $2
  57. >)dnl
  58. define(<_pre_mkdir>,
  59. < root preexec = /bin/bash -c ' \
  60. /bin/mkdir -p $1 && \
  61. /bin/chown $2 $1 && \
  62. /bin/chmod $3 $1 '
  63. >)dnl
  64. define(<_dir>, <>)dnl
  65. define(<_files>,
  66. <ifelse($1,win,
  67. undefine(<_mkdir>)dnl
  68. undefine(<_group_read>)dnl
  69. undefine(<_world_read>)dnl
  70. undefine(<_user_write>)dnl
  71. undefine(<_group_write>)dnl
  72. undefine(<_private>)dnl
  73. [$2]
  74. path = $4
  75. ifelse($3,,,
  76. < comment = $3
  77. >)ifelse($2,<netlogon>,
  78. < share modes = no
  79. define(<_private>)dnl
  80. >,
  81. $2,<userprofiles>,
  82. < force user = %u
  83. define(<_user_write>)dnl
  84. define(<_mkdir>, <$4/%U>)dnl
  85. define(<_chown>, <%U>)dnl
  86. define(<_chmod>, <700>)dnl
  87. >,
  88. $2,<reference>,
  89. < guest ok = yes
  90. >,
  91. $2,<homes>,
  92. <dnl
  93. define(<_mkdir>, <$4>)dnl
  94. define(<_chown>, <%S>)dnl
  95. define(<_chmod>, <750>)dnl
  96. define(<_user_write>)dnl
  97. define(<_group_read>)dnl
  98. define(<_private>)dnl
  99. >,
  100. <>)dnl
  101. ifdef(<_mkdir>,
  102. _pre_mkdir(<_mkdir>, <_chown>, <_chmod>)dnl
  103. )dnl
  104. ifdef($8,
  105. ifelse($8,ro,
  106. <dnl
  107. define(<_group_read>)dnl
  108. >,
  109. $8,rop,
  110. <dnl
  111. define(<_group_read>)dnl
  112. define(<_private>)dnl
  113. >,
  114. $8,rw,
  115. <dnl
  116. define(<_user_write>)dnl
  117. ifdef($9,
  118. ifelse($9,,,
  119. define(<_group_write>)dnl
  120. ))dnl
  121. >,
  122. $8,rwp,
  123. <dnl
  124. define(<_user_write>)dnl
  125. define(<_private>)dnl
  126. >,
  127. _warn(<share access is wrong. Must be either "ro", "rop", "rw" or "rwp">)dnl
  128. ))dnl
  129. ifdef(<_user_write>,
  130. < writeable = yes
  131. >ifdef(<_group_write>,
  132. ifdef(<_world_read>,
  133. _masks(0664,2775),
  134. _masks(0660,2770)),
  135. ifdef(<_group_read>,
  136. ifdef(<_world_read>,
  137. _masks(0644,0755),
  138. _masks(0640,0750)),
  139. _masks(0600,0700))dnl
  140. ifdef(<_veto>,
  141. < delete veto files = Yes
  142. >)dnl
  143. ),
  144. dnl ***user read, group read***(?)
  145. dnl ***user read***
  146. )dnl
  147. ifelse($9,,,
  148. < valid users = @$9
  149. >ifdef(<_group_write>,
  150. < force group = +$9
  151. >))dnl
  152. ifdef(<_private>,
  153. < browseable = no
  154. >)dnl
  155. ifdef(<_veto>,
  156. < veto files = _veto_mac
  157. >)dnl
  158. )dnl
  159. >)dnl
  160. define(<_homefiles>,
  161. <ifelse($1,win,
  162. <_files($1,$2,$3,$4,,,,$5)>dnl
  163. )>)dnl
  164. define(<_printer>,
  165. <ifelse($1,win,
  166. [$2]
  167. ifelse($3,,,
  168. < comment = $3
  169. >)dnl
  170. path = $4
  171. printable = yes
  172. printer name = $5
  173. ,<>)dnl
  174. >)dnl
  175. dnl
  176. include(/etc/local-COMMON/file-FQDN.m4)dnl