summaryrefslogtreecommitdiff
path: root/samba/smb-shares.m4
blob: de8e06e790bf6018ff011ba6bdc02e426732a014 (plain)
  1. ifelse(`
  2. /etc/samba/smb-shares.m4
  3. Copyright 2002 Jonas Smedegaard <dr@jones.dk>
  4. $Id: smb-shares.m4,v 1.9 2002-04-16 22:51:27 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 (Samba: single word and max. 8 characters for backwards compatibility)
  15. <desc>: Mount point description (iso8859-1 is (fully?) supported).
  16. <uid>: user name of mountpoint owner
  17. <gid>: group name of mountpoint owner
  18. <modes>: Numeric access modes of mount point
  19. <path>: Full path to mount point
  20. <group>: Primary group with access to mountpoint (default readonly). Public access if omitted
  21. <othergroup>: Secondary group with readonly access
  22. Example:
  23. _dir(/home/fsadmin/COMMON,fsadmin,fsadmin,755)dnl
  24. _homefiles(win,homes,Personal files,%H/pc))
  25. _homefiles(mac,,Personal files,~/mac))
  26. _files(win,soft,softshare,/home/fsadmin/COMMON/software,fsadmin,fsadmin,775)dnl
  27. _printer(win,LW,Networkprinter queue for Apple LaserWriter 16/600,/tmp,lw)
  28. ')dnl
  29. changequote(<, >)dnl
  30. define(<_veto_mac>, </.AppleDouble/.AppleDesktop/Network Trash Folder/DesktopFolderDB/resource.frk/Icon^M/TheVolumeSettingsFolder/>)dnl
  31. define(<_warn>,
  32. < // WARNING: $1
  33. >)dnl
  34. define(<_masks>,
  35. < create mask = $1
  36. directory mask = $2
  37. >)dnl
  38. define(<_pre_mkdir>,
  39. < root preexec = '/bin/mkdir $1 \
  40. /bin/chown $2 $1 \
  41. /bin/chmod $3 $1'
  42. >)dnl
  43. define(<_dir>, <>)dnl
  44. define(<_files>,
  45. <ifelse($1,win,
  46. undefine(<_mkdir>)dnl
  47. undefine(<_group_read>)dnl
  48. undefine(<_world_read>)dnl
  49. undefine(<_user_write>)dnl
  50. undefine(<_group_write>)dnl
  51. [$2]
  52. path = $4
  53. ifelse($3,,,
  54. < comment = $3
  55. >)ifelse($2,<netlogon>,
  56. < browseable = no
  57. >,
  58. $2,<userprofiles>,
  59. <dnl
  60. define(<_mkdir>, <$4/%U>)dnl
  61. define(<_chown>, <%U>)dnl
  62. define(<_chmod>, <700>)dnl
  63. >,
  64. $2,<reference>,
  65. < guest ok = yes
  66. >,
  67. $2,<homes>,
  68. <dnl
  69. define(<_mkdir>, <$4>)dnl
  70. define(<_chown>, <%S>)dnl
  71. define(<_chmod>, <644>)dnl
  72. define(<_user_write>)dnl
  73. define(<_group_read>)dnl
  74. define(<_world_read>)dnl
  75. >,
  76. <>)dnl
  77. ifdef(<_mkdir>,
  78. _pre_mkdir(<_mkdir>, <_chown>, <_chmod>)dnl
  79. )dnl
  80. ifdef($8,
  81. ifelse($8,ro,
  82. <dnl
  83. define(<_group_read>)dnl
  84. >,
  85. $8,rw,
  86. ifdef($9,
  87. ifelse($9,,
  88. _warn(<share group is "rw" but no group specified>),
  89. <dnl
  90. define(<_user_write>)dnl
  91. define(<_group_write>)dnl
  92. >)),
  93. _warn(<share group is wrong. Must be "ro" or "rw">)dnl
  94. ))dnl
  95. ifdef(<_user_write>,
  96. < writeable = yes
  97. >ifdef(<_group_write>,
  98. ifdef(<_world_read>,
  99. _masks(0664,0775),
  100. _masks(0660,0770)),
  101. ifdef(<_group_read>,
  102. ifdef(<_world_read>,
  103. _masks(0644,0755),
  104. _masks(0640,0750)),
  105. _masks(0600,0700))dnl
  106. ifdef(<_veto>,
  107. < delete veto files = Yes
  108. >)dnl
  109. ),
  110. dnl ***user read, group read***(?)
  111. dnl ***user read***
  112. )dnl
  113. ifelse($9,,,
  114. < valid users = @$9
  115. >ifdef(<_group_write>,
  116. < force group = +$9
  117. >))dnl
  118. ifdef(<_veto>,
  119. < veto files = _veto_mac
  120. >)dnl
  121. )dnl
  122. >)dnl
  123. define(<_homefiles>,
  124. <ifelse($1,win,
  125. <_files($1,$2,$3,$4)>)>)dnl
  126. dnl
  127. include(/etc/local-COMMON/file-FQDN.m4)dnl