3.11. 允许用户在 Samba 服务器上共享目录
在 Samba 服务器上,你可以配置用户共享目录,而无需root权限。
3.11.1. 启用用户共享功能
在用户可以共享目录之前,管理员必须在 Samba 中启用用户共享。
					例如,仅允许本地 example 组的成员创建用户共享:
				
流程
- 如果本地 - example组不存在,请创建它:- groupadd example - # groupadd example- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 为 Samba 准备目录以存储用户共享定义并正确设置其权限。例如: - 创建目录: - mkdir -p /var/lib/samba/usershares/ - # mkdir -p /var/lib/samba/usershares/- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 为 - example组设置写权限:- chgrp example /var/lib/samba/usershares/ chmod 1770 /var/lib/samba/usershares/ - # chgrp example /var/lib/samba/usershares/ # chmod 1770 /var/lib/samba/usershares/- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 设置粘性位以防止用户重命名或删除此目录中其他用户存储的文件。
 
- 编辑 - /etc/samba/smb.conf文件,并将以下内容添加到- [global]部分:- 设置您配置用来存储用户共享定义的目录的路径。例如: - usershare path = /var/lib/samba/usershares/ - usershare path = /var/lib/samba/usershares/- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 设置允许在这个服务器上创建多少个用户共享 Samba。例如: - usershare max shares = 100 - usershare max shares = 100- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 如果您对 - usershare max shares参数使用默认值- 0,则用户共享将被禁用。
- 可选:设置绝对目录路径的列表。例如,要配置 Samba 只允许共享 - /data和- /srv目录的子目录,请设置:- usershare prefix allow list = /data /srv - usershare prefix allow list = /data /srv- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 - 有关您可以设置的更多与用户共享相关的参数的列表,请参阅您系统上 - smb.conf (5)手册页中的- USERSHARES部分。
- 验证 - /etc/samba/smb.conf文件:- testparm - # testparm- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 重新载入 Samba 配置: - smbcontrol all reload-config - # smbcontrol all reload-config- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 用户现在可以创建用户共享。 
3.11.2. 添加用户共享
					在 Samba 中启用了用户共享功能后,用户可以通过运行 net usershare add 命令在 Samba 服务器上共享目录,而无需 root 权限。
				
					net usershare add 命令的说明:
				
					net usershare add share_name path [[ comment ] | [ ACL ]] [ guest_ok=y|n ]
				
如果在创建用户共享时设置了 ACL,您必须在 ACL 之前指定comment参数。要设置空的comment,请在双引号中使用空字符串。
					请注意,如果管理员在 /etc/samba/smb.conf 文件的 [global] 部分中设置了 usershare allow guests = yes,用户只能对用户共享启用 guest访问。
				
例 3.5. 添加用户共享
						用户想要在 Samba 服务器上共享 /srv/samba/ 目录。该共享应命名为 example,未设置任何comment ,应该可以被 guest 用户访问。此外,对 AD\Domain Users 组的共享权限应设置为可完全访问,对其他用户设置为读权限。要添加此共享,请以用户身份运行:
					
net usershare add example /srv/samba/ "" "AD\Domain Users":F,Everyone:R guest_ok=yes
$ net usershare add example /srv/samba/ "" "AD\Domain Users":F,Everyone:R guest_ok=yes3.11.3. 更新用户共享的设置
					要更新用户共享的设置,请使用具有相同共享名称和新设置的 net usershare add 命令覆盖共享。请参阅 添加用户共享。
				
3.11.4. 显示现有用户共享的信息
					用户可以在 Samba 服务器上输入 net usershare info 命令,来显示用户共享及其设置。
				
先决条件
- 在 Samba 服务器中配置了一个用户共享。
流程
- 显示任意用户创建的所有用户共享: - net usershare info -l - $ net usershare info -l [share_1] path=/srv/samba/ comment= usershare_acl=Everyone:R,host_name\user:F, guest_ok=y ...- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 若要只列出运行命令的用户所创建的共享,请省略 - -l参数。
- 若要只显示关于特定共享的信息,请将共享名称或通配符传给命令。例如,显示名称以 - share_开头的共享的信息:- net usershare info -l share_* - $ net usershare info -l share_*- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
3.11.5. 列出用户共享
					如果您想只列出可用的用户共享,而不列出它们的设置,请使用 net usershare list 命令。
				
先决条件
- 在 Samba 服务器中配置了一个用户共享。
流程
- 列出任意用户创建的共享: - net usershare list -l - $ net usershare list -l share_1 share_2 ...- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 若要只列出运行命令的用户所创建的共享,请省略 - -l参数。
- 若要只列出特定的共享,请将共享名称或通配符传给命令。例如,只列出名称以 - share_开头的共享 :- net usershare list -l share_* - $ net usershare list -l share_*- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
3.11.6. 删除用户共享
					要删除用户共享,请以创建共享的用户身份或以 root 用户身份,使用net usershare delete 命令。
				
先决条件
- 在 Samba 服务器中配置了一个用户共享。
流程
net usershare delete share_name
$ net usershare delete share_name