快速业务通道

搭建samba文件服务器之批量用户生成

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-04-17

在单位建立samba文件服务器时, 用户数大概有60人左右,难道要一次一次useradd,再smbpasswd,再usermod,这样岂不是杯具,还是写个shell脚本吧, 本来以为挺容易的事,但因有些方面没考虑周全,写成还颇费周折,对于用户权限我是这样考虑的
(1)普通用户拥有个人空间,可对该空间可读可写(废话)
(2)每部门或项目组拥有共享空间,该部门或该组的成员对该空间内自己的文件可读可写,对其它文件可读.
(3)整个公司拥有一个共享空间.任何成员对该空间内自己的文件可读可写,对其它文件可读.

(4)部门负责人或项目负责人可对该组员工空间可读.
(5)高管对所有员工和部门或项目空间可读.
运行脚本前,有两件事情要做,建立员工列表,设置一个用户的磁盘quota.员工列表格式如下所示:

jack:staff:hr:passwd123
jilly:deptadmin:hr:passwd123
tom:companyadmin:company:passwd567

四列分别对应:员工姓名,职位,部门,密码 .职位我分了三种:staff(普通员工), deptadmin(部门管理者),companyadmin(公司管理者).companyadmin(公司管理者)所处的部门是"company".按照顺序每个部门写下来,同部门内,同职位的写在一起.脚本内部也有说明,可参照,写的不好,留做笔记.

  1. #!/bin/bash
  2. #########################################
  3. ######功能###############################
  4. #添加samba用户
  5. #samba权限分配
    Empire CMS,phome.net
  6. ######权限分配原则#######################
  7. #普通用户拥有个人空间,可对该空间可读可写(废话).
  8. #每部门或项目组拥有共享空间,该部门或该组的成员对该空间内自己的文件可读可写,对其它文件可读.
  9. #整个公司拥有一个共享空间.任何成员对该空间内自己的文件可读可写,对其它文件可读.
  10. #部门负责人或项目负责人可对该组员工空间可读.
  11. #高管对所有员工和部门或项目空间可读.
  12. ########################################
  13. #Write By: TerryYW
  14. #Version: v1.0
  15. ########################################
  16. #####前期准备##########
  17. #手动建立一个系统用户,并配置其使用磁盘quota,将该用户名赋值给initquota参数.
  18. #####init_list列表各列含义##############
  19. #name:position:department:password
  20. #####init_list包含内容如下##############
  21. #......................
  22. #jack:staff:hr:passwd123
  23. #jilly:deptadmin:hr:passwd123
  24. #tom:companyadmin:company:passwd567
  25. #...................................
  26. ########################################
  27. #设置初始化参数
  28. init_list="name_position_dept_passwd.txt"
  29. saveifs=$IFS
  30. sharegroup=
    Empire CMS,phome.net
    "company"
  31. flag=","
  32. initquota="terry"
  33. root_uid=0
  34. #必要条件判断
  35. #该脚本要以root身份运行
  36. if [ `echo $UID` -ne "$root_uid" ]; then
  37. echo "Warning:you are not root"
  38. exit 2
  39. fi
  40. #initquota用户是否存在
  41. if less /etc/passwd | awk -F: ''{print $1}'' | grep ^$initquota$ > /dev/null; then
  42. echo "Info:initquotauser[$initquota] is exist!,continue...."
  43. else
  44. echo "Fatal:initquotauser[$initquota] is not exist!"
  45. echo "Info:please add user [$initquota] to system and setup quota for it!"
  46. exit 1
  47. Empire CMS,phome.net
  48. fi
  49. #init_list列表文件是否存在
  50. if [ -f $init_list ]; then
  51. echo "Info:get [$init_list] data to runing"
  52. else
  53. echo "Fatal:file [$init_list] is not exist!,please renew setup parameter <init_list>"
  54. exit 3
  55. fi
  56. #添加全公司共享组company.
  57. if less /etc/group | awk -F: ''{print $1}''| grep ^company$ > /dev/null; then
  58. echo "Warning:group[company] is already exist!,continue execute......"
  59. else
  60. groupadd company
  61. if [ -d /home/company ]; then
  62. chmod 770 /home/company
  63. chgrp company /home/company
  64. else
  65. mkdir /home/company
  66. chmod 770 /home/company
    Empire CMS,phome.net
  67. chgrp company /home/company
  68. fi
  69. fi
  70. #添加项目或部门组.
  71. less $init_list | awk -F: ''{print $3}'' | sort -k2n | uniq > temp.log
  72. while read dept
  73. do
  74. if less /etc/group | awk -F: ''{print $1}''| grep ^$dept$ > /dev/null; then
  75. echo "Warning:group[$dept] is already exist!,continue execute......"
  76. else
  77. groupadd $dept
  78. if [ -d /home/$dept ]; then
  79. chmod 770 /home/$dept
  80. chgrp $dept /home/$dept
  81. else
  82. mkdir /home/$dept
  83. chmod 770 /home/
    Empire CMS,phome.net
    $dept
  84. chgrp $dept /home/$dept
  85. fi
  86. fi
  87. done < temp.log
  88. #添加用户到linux系统,建立用户目录,并设置权限.
  89. #添加samba用户,并设置密码.
  90. IFS=:
  91. while read name position dept passwd
  92. do
  93. if less /etc/passwd | awk -F: ''{print $1}'' | grep ^$name$ > /dev/null; then
  94. echo "Warning:user[$name] is already exist!,continue execute......"
  95. if [ -d /home/$name ]; then
  96. chmod 750 /home/$name
  97. else
  98. mkdir /home/$name
  99. chmod 750 /home/$name
  100. fi
  101. else
    Empire CMS,phome.net
    $groups $name
  102. echo "Info:[$dept]companyadminuser[$name] be add to group [$groups]"
  103. ;;
  104. esac
  105. done < $init_list
  106. IFS=$saveifs
  107. exit 0

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号