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