summaryrefslogtreecommitdiff
path: root/samba/smb-shares.conf.m4
blob: a8bc8aea3f60fd277b61e3350ad4522b607b70f3 (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.9 2002-07-07 14:25:53 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. _homefiles shares have browseing disabled
  22. <desc>: Mount point description (iso8859-1 is (fully?) supported)
  23. <path>: Full path to mount point directory
  24. <uid>: user name of owner of mount point directory
  25. <gid>: group name of owner of mount point directory
  26. <modes>: Numeric access modes of mount point directory
  27. ro|rw <group>: Primary group with access to mountpoint. Public readonly access if omitted (except mount points mentioned above)
  28. <othergroup>: Secondary group with readonly access
  29. private: Do not announce mount point
  30. Samba: Disable browseing
  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. ')dnl
  43. changequote(<, >)dnl
  44. define(<_veto_mac>, </.AppleDouble/.AppleDesktop/Network Trash Folder/DesktopFolderDB/resource.frk/Icon^M/TheVolumeSettingsFolder/>)dnl
  45. define(<_warn>,
  46. < // WARNING: $1
  47. >)dnl
  48. define(<_masks>,
  49. < create mask = $1
  50. directory mask = $2
  51. >)dnl
  52. define(<_pre_mkdir>,
  53. < root preexec = '/bin/mkdir -p $1 \
  54. /bin/chown $2 $1 \
  55. /bin/chmod $3 $1'
  56. >)dnl
  57. define(<_dir>, <>)dnl
  58. define(<_files>,
  59. <ifelse($1,win,
  60. undefine(<_mkdir>)dnl
  61. undefine(<_group_read>)dnl
  62. undefine(<_world_read>)dnl
  63. undefine(<_user_write>)dnl
  64. undefine(<_group_write>)dnl
  65. undefine(<_private>)dnl
  66. [$2]
  67. path = $4
  68. ifelse($3,,,
  69. < comment = $3
  70. >)ifelse($2,<netlogon>,
  71. < share modes = no
  72. define(<_private>)dnl
  73. >,
  74. $2,<userprofiles>,
  75. < force user = %u
  76. define(<_user_write>)dnl
  77. define(<_mkdir>, <$4/%U>)dnl
  78. define(<_chown>, <%U>)dnl
  79. define(<_chmod>, <700>)dnl
  80. >,
  81. $2,<reference>,
  82. < guest ok = yes
  83. >,
  84. $2,<homes>,
  85. <dnl
  86. define(<_mkdir>, <$4>)dnl
  87. define(<_chown>, <%S>)dnl
  88. define(<_chmod>, <750>)dnl
  89. define(<_user_write>)dnl
  90. define(<_group_read>)dnl
  91. define(<_private>)dnl
  92. >,
  93. <>)dnl
  94. ifdef(<_mkdir>,
  95. _pre_mkdir(<_mkdir>, <_chown>, <_chmod>)dnl
  96. )dnl
  97. ifdef($8,
  98. ifelse($8,ro,
  99. <dnl
  100. define(<_group_read>)dnl
  101. >,
  102. $8,rw,
  103. ifdef($9,
  104. ifelse($9,,
  105. _warn(<share group is "rw" but no group specified>),
  106. <dnl
  107. define(<_user_write>)dnl
  108. define(<_group_write>)dnl
  109. >)),
  110. _warn(<share group is wrong. Must be "ro" or "rw">)dnl
  111. ))dnl
  112. ifdef(<_user_write>,
  113. < writeable = yes
  114. >ifdef(<_group_write>,
  115. ifdef(<_world_read>,
  116. _masks(0664,0775),
  117. _masks(0660,0770)),
  118. ifdef(<_group_read>,
  119. ifdef(<_world_read>,
  120. _masks(0644,0755),
  121. _masks(0640,0750)),
  122. _masks(0600,0700))dnl
  123. ifdef(<_veto>,
  124. < delete veto files = Yes
  125. >)dnl
  126. ),
  127. dnl ***user read, group read***(?)
  128. dnl ***user read***
  129. )dnl
  130. ifelse($9,,,
  131. < valid users = @$9
  132. >ifdef(<_group_write>,
  133. < force group = +$9
  134. >))dnl
  135. ifelse($10,,,
  136. define(<_private>)dnl
  137. )dnl
  138. ifdef(<_private>,
  139. < browseable = no
  140. >)dnl
  141. ifdef(<_veto>,
  142. < veto files = _veto_mac
  143. >)dnl
  144. )dnl
  145. >)dnl
  146. define(<_homefiles>,
  147. <ifelse($1,win,
  148. <_files($1,$2,$3,$4,,,,,,private)>)>)dnl
  149. define(<_printer>,
  150. <ifelse($1,win,
  151. [$2]
  152. ifelse($3,,,
  153. < comment = $3
  154. >)dnl
  155. path = $4
  156. printable = yes
  157. printer name = $5
  158. ,<>)dnl
  159. >)dnl
  160. dnl
  161. include(/etc/local-COMMON/file-FQDN.m4)dnl