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