测试要求:
1、共享名为shared,工作组为magedu;
2、添加组develop,添加用户gentoo,centos和ubuntu,其中gentoo和centos以develop为附加组,ubuntu不属于develop组;密码均为用户名;
3、添加samba用户gentoo,centos和ubuntu,密码均为“magedu”;
4、此samba共享shared仅允许develop组具有写权限,其他用户只能以只读方式询问;
5、此samba共享服务仅允许来自172.16.0.0/16网络的主机访问;

配置
samba服务器:172.16.20.241
1、首先安装samba程序
[root@localhost ~]# yum -y install samba
2、修改配置文件

[root@localhost ~]# vim /etc/samba/smb.conf
修改--Network Related Options--区域的配置
workgroup = magedu    //配置工作组名
hosts allow = 172.16.0.0/16   //设置仅允许部分主机访问samba服务
在配置文件底部添加如下配置信息
[shared]                       //共享名
path = /shared/            //共享路径
comment = share for test    //  共享信息
guest ok = no                      //  禁止来宾账户访问    
browseable = yes               //  允许浏览共享资源
read only = yes                   //  访问只读   
valid users = @develop,ubuntu    //  仅允许develop组内用户和ubuntu用户访问此共享资源,设置组时需要在组名前加上"@"符号
write list = @develop                    //  仅develop组内用户在此共享目录有写权限,这里需要注意的是,如果同时配置了read only = yes和write list,那么生效的效果为:write list指定的用户可写,其他用户只读。

更详细的行为控制和参数设定,推荐一位大神的文章http://blog.sina.com.cn/s/blog_63c8c46401014uhx.html
此处也是参照了这篇文章里的内容。
3、添加用户

[root@localhost ~]# group add develop
[root@localhost ~]# useradd -G develop gentoo
[root@localhost ~]# useradd -G develop centos
[root@localhost ~]# useradd ubuntu
// 添加系统用户gentoo和centos并将这两个用户的附加组设置为develop
// 添加系统用户ubuntu
[root@localhost ~]# smbpasswd -a gentoo
New SMB password:
Retype new SMB password:
Added user gentoo.
[root@localhost ~]# smbpasswd -a centos
New SMB password:
Retype new SMB password:
Added user centos.
[root@localhost ~]# smbpasswd -a ubuntu
New SMB password:
Retype new SMB password:
Added user ubuntu.
[root@localhost ~]# 
// 将系统用户gentoo,centos,ubuntu分别添加到samba的密码文件中,成功samba服务的用户

4、创建共享目录并设置文件系统权限

[root@localhost ~]# mkdir /shared/
[root@localhost ~]# chmod -R o= /shared
[root@localhost ~]# setfacl -m g:develop:rwx /shared
[root@localhost ~]# setfacl -m u:ubuntu:rx /shared
// 将其他用户的权限全部清空,提高安全性
// 由于测试要求gentoo和centos能够在共享目录中有写权限,所以使用facl设置属组develop对shared目录具有读写执行权限,如果直接修改组权限,不灵活,且降低了安全性;对于目录的执行权限,即cd进目录,且可以对此目录使用ls -l命令
// 使用facl设置用户ubuntu对shared目录具有读和执行权限,无写权限

5、效果测试
在另一台linux主机上访问此samba服务器:
测试centos用户

[root@localhost ~]# smbclient \\172.16.20.241\shared -U centos
Enter centos's password: 
Domain=[MAGEDU] OS=[Unix] Server=[Samba 3.6.23-45.el6_9]
smb: \> 
smb: \> ls
  .                                   D        0  Thu Aug 24 14:04:35 2017
  ..                                 DR        0  Thu Aug 24 13:55:01 2017

        35727 blocks of size 524288. 29964 blocks available
smb: \> 
// 成功访问shared目录,使用ls命令查看共享目录中的内容
smb: \> lcd /etc
smb: \> put passwd
putting file passwd as \passwd (1348.5 kb/s) (average 1348.6 kb/s)
smb: \> ls
  .                                   D        0  Thu Aug 24 14:05:27 2017
  ..                                 DR        0  Thu Aug 24 13:55:01 2017
  passwd                              A     1381  Thu Aug 24 14:05:27 2017

        35727 blocks of size 524288. 29964 blocks available
smb: \> 
smb: \> rm passwd
smb: \> ls
  .                                   D        0  Thu Aug 24 14:05:35 2017
  ..                                 DR        0  Thu Aug 24 13:55:01 2017

        35727 blocks of size 524288. 29964 blocks available
smb: \> 
// 上传和删除passwd文件成功,说明具有写权限

gentoo用户已经测试,效果与centos用户一致,不在此赘述。

测试ubuntu用户

[root@localhost ~]# smbclient //172.16.20.241/shared -U ubuntu
Enter ubuntu's password: 
Domain=[MAGEDU] OS=[Unix] Server=[Samba 3.6.23-45.el6_9]
smb: \> ls
  .                                   D        0  Thu Aug 24 14:10:36 2017
  ..                                 DR        0  Thu Aug 24 13:55:01 2017
  passwd                              A     1381  Thu Aug 24 14:10:31 2017
  issue                               A       47  Thu Aug 24 14:10:36 2017

        35727 blocks of size 524288. 29964 blocks available
smb: \> get passwd
getting file \passwd of size 1381 as passwd (84.3 KiloBytes/sec) (average 84.3 KiloBytes/sec)
smb: \> rm passwd
NT_STATUS_MEDIA_WRITE_PROTECTED deleting remote file \passwd
NT_STATUS_MEDIA_WRITE_PROTECTED listing \passwd
smb: \> put shadow
NT_STATUS_ACCESS_DENIED opening remote file \shadow
smb: \> 
// 可以下载文件,无法删除和上传文件,说明具有读权限,没有写权限

总结:
以上设置完成了测试要求,不过第4题的要求:其他用户只读,我这里理解的是 centos和gentoo可写,ubuntu只读,其他用户和匿名用户只读,所以设置:
guest ok = no
valid users = @develop,ubuntu
如果理解为centos和gentoo可写,ubuntu和其他用户及匿名用户为只读,那么要设置为:
guest ok = yes
删除valid users 一列

写的比较潦草,如有遗漏错误和争议之处,欢迎大家的批评指正和讨论,谢谢。
还有些许地方不够完整,继续学习以后回来填坑。