summaryrefslogtreecommitdiff
path: root/samba/smb-shares.conf.m4
blob: e7c6c2f214cafe1f85d375583c753689a742bcfd (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.14 2002-07-07 17:35:51 jonas 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" 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. <group>: Primary group with access to mountpoint.
  30. If mount point has access "rw" then primary group has read/write access as well.
  31. <othergroup>: Secondary group with readonly access
  32. Example:
  33. _dir(/home/fsadmin/COMMON,fsadmin,fsadmin,755)dnl
  34. _files(win,netlogon,Network logon,/etc/samba/netlogon,root,root,755,ro)
  35. _files(win,userprofiles,User profiles,/home/fsadmin/COMMON/samba/userprofiles,root,root,755)
  36. _files(win,reference,DEBIAN: Samba Linux server,/home/fsadmin/COMMON/reference)
  37. _homefiles(win,homes,Personal files,%H/pc))
  38. _homefiles(mac,,Personal files,~/mac))
  39. _files(win,soft,softshare,/home/fsadmin/COMMON/software,fsadmin,fsadmin,775)dnl
  40. _printer(win,LW,Networkprinter queue for Apple LaserWriter 16/600,/tmp,lw)
  41. TODO:
  42. Support for netatalk is not yet implemented.
  43. <othergroup> is not yet implemented.
  44. Get rid of <os>: <othergroup> is now 10nth parameter which is only available in GNU m4.
  45. ')dnl
  46. changequote(<, >)dnl
  47. define(<_veto_mac>, </.AppleDouble/.AppleDesktop/Network Trash Folder/DesktopFolderDB/resource.frk/Icon^M/TheVolumeSettingsFolder/>)dnl
  48. define(<_warn>,
  49. < // WARNING: $1
  50. >)dnl
  51. define(<_masks>,
  52. < create mask = $1
  53. directory mask = $2
  54. >)dnl
  55. define(<_pre_mkdir>,
  56. < root preexec = '/bin/mkdir -p $1 \
  57. /bin/chown $2 $1 \
  58. /bin/chmod $3 $1'
  59. >)dnl
  60. define(<_dir>, <>)dnl
  61. define(<_files>,
  62. <ifelse($1,win,
  63. undefine(<_mkdir>)dnl
  64. undefine(<_group_read>)dnl
  65. undefine(<_world_read>)dnl
  66. undefine(<_user_write>)dnl
  67. undefine(<_group_write>)dnl
  68. undefine(<_private>)dnl
  69. [$2]
  70. path = $4
  71. ifelse($3,,,
  72. < comment = $3
  73. >)ifelse($2,<netlogon>,
  74. < share modes = no
  75. define(<_private>)dnl
  76. >,
  77. $2,<userprofiles>,
  78. < force user = %u
  79. define(<_user_write>)dnl
  80. define(<_mkdir>, <$4/%U>)dnl
  81. define(<_chown>, <%U>)dnl
  82. define(<_chmod>, <700>)dnl
  83. >,
  84. $2,<reference>,
  85. < guest ok = yes
  86. >,
  87. $2,<homes>,
  88. <dnl
  89. define(<_mkdir>, <$4>)dnl
  90. define(<_chown>, <%S>)dnl
  91. define(<_chmod>, <750>)dnl
  92. define(<_user_write>)dnl
  93. define(<_group_read>)dnl
  94. define(<_private>)dnl
  95. >,
  96. <>)dnl
  97. ifdef(<_mkdir>,
  98. _pre_mkdir(<_mkdir>, <_chown>, <_chmod>)dnl
  99. )dnl
  100. ifdef($8,
  101. ifelse($8,ro,
  102. <dnl
  103. define(<_group_read>)dnl
  104. >,
  105. $8,rop,
  106. <dnl
  107. define(<_group_read>)dnl
  108. define(<_private>)dnl
  109. >,
  110. $8,rw,
  111. <dnl
  112. define(<_user_write>)dnl
  113. ifdef($9,
  114. ifelse($9,,,
  115. define(<_group_write>)dnl
  116. ))dnl
  117. >,
  118. $8,rwp,
  119. <dnl
  120. define(<_user_write>)dnl
  121. define(<_private>)dnl
  122. >,
  123. _warn(<share access is wrong. Must be either "ro", "rop", "rw" or "rwp">)dnl
  124. ))dnl
  125. ifdef(<_user_write>,
  126. < writeable = yes
  127. >ifdef(<_group_write>,
  128. ifdef(<_world_read>,
  129. _masks(0664,0775),
  130. _masks(0660,0770)),
  131. ifdef(<_group_read>,
  132. ifdef(<_world_read>,
  133. _masks(0644,0755),
  134. _masks(0640,0750)),
  135. _masks(0600,0700))dnl
  136. ifdef(<_veto>,
  137. < delete veto files = Yes
  138. >)dnl
  139. ),
  140. dnl ***user read, group read***(?)
  141. dnl ***user read***
  142. )dnl
  143. ifelse($9,,,
  144. < valid users = @$9
  145. >ifdef(<_group_write>,
  146. < force group = +$9
  147. >))dnl
  148. ifdef(<_private>,
  149. < browseable = no
  150. >)dnl
  151. ifdef(<_veto>,
  152. < veto files = _veto_mac
  153. >)dnl
  154. )dnl
  155. >)dnl
  156. define(<_homefiles>,
  157. <ifelse($1,win,
  158. define(<_homefiles_access>, <rwp>)dnl
  159. ifdef($5,
  160. ifelse($5,ro,
  161. define(<_homefiles_access>, <rop>)))dnl
  162. <_files($1,$2,$3,$4,,,,_homefiles_access)>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