df 显示磁盘空间不足。它包含一个使用 mount --bind 进行 chroot sftp 的目录

df 显示磁盘空间不足。它包含一个使用 mount --bind 进行 chroot sftp 的目录

我已经为 sftp 访问设置了一个 chroot 环境(仅限 sftp,无 shell)。

sftp 用户需要对主机目录具有读写权限。我通过 /etc/fstab 挂载了它
/var/www/html /home/sftp-user/jail/html none bind 0 0

当我这样做时,df -h我得到以下输出:

Filesystem      Size  Used Avail Use% Mounted on
[...]
/dev/sda1        75G   65G  7,7G  90% /
[...]

du -sh得到以下信息:

# du -sh /* 2> /dev/null | sort -h
0   /bin
0   /dev
0   /initrd.img
0   /lib
0   /lib32
0   /lib64
0   /libx32
0   /proc
0   /sbin
0   /sys
0   /vmlinuz
4,0K    /mnt
4,0K    /opt
4,0K    /srv
8,0K    /media
16K /lost+found
44K /tmp
4,4M    /etc
52M /boot
81M /run
1,4G    /usr
13G /root
15G /home
36G /var

但家里的15GB只来自监狱

# du -sh /home/sftp-user/jail/* 2> /dev/null | sort -h
15G /home/sftp-user/jail/html

我对挂载的理解是,它更像是一个符号链接,因此磁盘空间实际上并没有被使用。是吗?

我很确定我首先尝试使用符号链接来解决这个问题,但有些东西不起作用,这就是我现在使用 mount 的原因。不幸的是,我忘记了符号链接的问题到底是什么。我认为 sftp 用户无法通过该符号链接访问主机文件夹。

有没有更好的解决方案来使符号链接工作或显示实际使用的磁盘空间?

编辑以澄清:我不明白为什么/dev/sda1看起来这么满。/var/www/html/home/sftp-user/jail/html都在/dev/sda1。我的里面没有其他东西/home,只有那个挂载。所以实际上它的实际大小应该只有几个字节。

/usr因此,将、/root和(1,4+13+15+36)的大小相加,/home/var得到 ~65G。但 15GB 文件的实际位置/home在 中/var,因此 df 显示的已用磁盘空间应该只有 ~50G (1,4+13+36)。

答案1

我不太清楚你的问题是什么。你似乎对/home有 15GB 感到吃惊。这是因为默认情况下,du它不关心挂载点。它只是沿着文件系统树向下直到叶子(即常规文件)并总结它们的大小。你可以尝试这个-x选项;它应该让它在挂载点处停止。

您似乎还对 上的空间使用情况感到担心或惊讶/dev/sda1。您可以删除文件或扩展该分区(如果 上有空间/dev/sda),但您提供的信息不足以帮助您。

我认为您的绑定安装是一个很好的解决方案。

相关内容