远程设置 SAMBA 共享目录的大小限制

远程设置 SAMBA 共享目录的大小限制

我被要求在我管理的服务器上为同事设置共享目录。我在该服务器上为他创建了一个帐户,设置了 Samba 密码smbpasswd,创建一个目录并将其设置在 smb.conf 文件中,我将其复制如下:

[global]
workgroup = OURWORKGROUP
server string = Samba Server %v
netbios name = server_i_run
security = user
map to guest = bad user
name resolve order = bcast lmhosts host wins 
dns proxy = no
[coworkerguy]
path = /samba/coworkerguy
valid users = coworkerguy
guest ok = no
writable = yes
browsable = yes

现在我被要求将此空间限制为 2Gb。我在网上寻找想法,但找不到任何最新的东西,设置磁盘配额显然是最流行的解决方案之一。我承认我对此没有那么有信心,而且经常出现我必须在单用户模式下重新启动的情况 - 除非我误解了某些内容。这是不可能的,因为我只能通过 ssh 远程连接到该服务器。有我可以使用的技术吗?如果没有,有人可以给我指点一个防白痴指南吗?

答案1

我知道我的解决方案不是最好的,但它有效;-)。编辑:请同时阅读我的​​其他答案,这个答案是一个邪恶的黑客!

使用 dd 创建一个 2Gb 文件,格式化该文件(例如 ext3),安装它,将其添加到 fstab 并将其用作共享。

$ dd if=/dev/zero of=filename bs=1024 count=2M
$ sudo mkfs.ext4 filename
$ cat /etc/fstab
/path/to/filename /mount/point ext4 defaults,users

现在您将共享指向/mount/point(或您选择安装它的任何位置),所以

path = /samba/coworkerguy 变成 path = /mount/point

在 UNIX 中,一切皆文件。

答案2

还有另一种更清洁的选择。它需要启用磁盘配额的内核,但没有单用户模式。

基本上,您编辑/etc/fstab并添加usrquota到分区的安装选项。然后重新挂载分区:

$ sudo mount -o remount /dev/sd<x><y>

其中<x>是磁盘盘符和<y>磁盘上的分区号(如果使用uuid,请参阅man mount使用 挂载uuid)。

然后,您可以执行以下命令来创建配额文件:

$ sudo quotacheck -avug

获得配额文件后,就可以添加以下配额coworkerguy

$ sudo edquota coworkerguy

请注意,默认情况下编辑器是vi,将EDITOR变量设置为nanogedit或您喜欢的任何编辑器,然后重新运行上面的命令。

$ export EDITOR=gedit

现在您可以添加quotacheckcron

$ sudo echo 'quotacheck -avug' >/etc/cron.daily/quotacheck

http://www.thegeekstuff.com/2010/07/disk-quota/以获得准确的步骤和输出。

另请参阅http://www.yolinux.com/TUTORIALS/LinuxTutorialQuotas.html

答案3

我将使用安装在该目录中的块设备。 LVM 在这里很有用。创建一个2G的逻辑卷并将其挂载到/samba/coworkerguy。这将绕过任何配额需求,并通过对大小进行严格限制来满足确切的要求。

相关内容