我被要求在我管理的服务器上为同事设置共享目录。我在该服务器上为他创建了一个帐户,设置了 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
变量设置为nano
或gedit
或您喜欢的任何编辑器,然后重新运行上面的命令。
$ export EDITOR=gedit
现在您可以添加quotacheck
到cron
$ 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
。这将绕过任何配额需求,并通过对大小进行严格限制来满足确切的要求。