我的一个客户的备份硬盘驱动器上遇到了一个奇怪的问题:该硬盘驱动器采用 FAT32 格式,昨晚我们的备份作业在子目录上抛出了一个错误,声称它无法复制必须复制的文件。
当然,我首先检查了磁盘大小,但是有足够的空间。给出的错误是0x80070052,如果我将其放入搜索引擎,我会得到如下结果:http ://www.quickonlinetips.com/archives/2007/09/how-to-fix-error-0x80070052-on-usb-闪存驱动器/
但该分区的根目录下只有 8 个文件/目录。所以我继续决定自己测试一些东西。创建一个文件(例如名为“test.txt”)确实有效。但是使用备份作业失败的文件名之一创建文件不起作用,而是出现了与上面相同的错误。我测试了一下,发现我可以在该子目录中创建一个包含 10 个字符的文件,再多一个字符,就会失败。
检测到这一点后,我在该子目录中创建了一个目录(名为“test”),并将一些文件从子目录移动到新目录中,完成后,我尝试创建一个包含 11 个字符的文件(这不起作用)之前)并且它起作用了。
现在,显然从观察来看,对于 FAT32 的单个目录内的所有文件名可以使用多少个字符,似乎存在某种硬限制,但我找不到有关该硬限制的任何信息,或者是否有其他文件系统(尤其是 NTFS) ,我猜这将是这种情况下的替代方案)具有类似的限制。
如果有人可以向我提供有关观察到的行为的信息,那就太好了!
编辑
一位同事告诉我将确切的文件夹放在另一个 FAT32 驱动器上,因为他曾经在使用特定制造商的 USB 控制器时遇到过问题。我尝试了两个来自不同制造商的 USB 记忆棒,均为 FAT32 格式,两者都显示出与上述完全相同的行为。
让您了解所涉及的文件数量:大约有 10200 个文件,每个文件的文件名长度在 80 到 110 个字符之间,不包括文件路径(这似乎无关紧要),因此大约有涉及一百万个字符。
这适用于 Ubuntu 14.04 和 Centos 7。
我需要限制以 root 身份主动运行的用户数量。即在 CLI 上以 root 身份登录。
基本上,我一次只希望一个用户能够以 root 身份运行命令。这里的目的是审计。
我研究了在 /etc/security/limits.conf 中设置限制,但 pam_limits.so 模块似乎只影响登录。或者登录shell。没有把握。但无论具体情况如何,它确实会阻止用户多次通过 SSH 连接到一个盒子,但不会阻止多个用户通过“sudo su”成为 root 用户。因此,设置limits.conf 仍然可以允许多个用户同时以root 身份登录。
这是我尝试过的limits.conf行来限制这个:
root hard maxlogins 1
Run Code Online (Sandbox Code Playgroud)
接下来我尝试限制@admins 组中的用户。我认为这些用户是唯一允许 sudo su 到 root 的用户(基于我们现有的自定义 sudo 规则)。
@admins hard maxlogins 1
Run Code Online (Sandbox Code Playgroud)
这似乎做我想做的事,但似乎笨拙/错误。称之为直觉——我不太清楚我认为这个错误的地方。
最后,“为什么?”。为什么我有这个要求?
我们正在尝试实施控制以满足 PCI-DSS 3.1 要求 8.5“不要使用组、共享或通用 ID、密码或其他身份验证方法”——强调“共享”。在 Windows 环境中,您只需授予用户执行任何操作的权限,并且没有人共享主管理员帐户。Linux 环境的设计使得在某些情况下,您确实希望以 root 身份登录。在 Linux 环境中必须有一种符合 PCI 标准的方法来解决这个问题。
我有一个 xen HVM vps,我试图在启动时为任何人提高硬文件和软文件限制。我正在使用 Ubuntu 10.04.3 并且在 /etc/security/limits.conf 里面我有:
nobody soft nofile 10000
nobody hard nofile 30000
Run Code Online (Sandbox Code Playgroud)
但是当我检查文件限制时仍然是默认的 1024:
su nobody -c 'ulimit -Hn'
1024
su nobody -c 'ulimit -Sn'
1024
Run Code Online (Sandbox Code Playgroud)
提高 Ubuntu 文件限制的正确方法是什么?
当虚拟化是新的时,我们试图虚拟化所有东西,但后来我们注意到我们的虚拟机比裸机慢得多的用例。
对我们而言,在决定不进行虚拟化时,我们使用以下规则:
我们在 Xen 和 DRDB 以及 Hyper-V 与 DAS 的无共享方面都有过这些经验。所有管理程序都是这种情况吗?
在决定是否虚拟化应用程序/服务器时,我应该寻找哪些(其他)指标?
标题说明了一切:从哪个版本开始,LimitRequestFieldSize 不再硬编码为最大值。8k?
似乎 2.2.15 仍然受到影响。
在我的 CentOS 7 上,我cat /proc/<pid>/limits用来查看实际限制设置。我确认这个方法在这里是完全准确的,因为我在 MySQL 上使用它,它不能转储一个包含 >8000 个表的特定数据库。如果使用prlimit我将其设置为 10000,则转储成功完成。
现在,我想避免使用 prlimit,所以我配置了 /etc/security/limits.conf 文件以满足我的需求,如果我使用相应的用户(mysql)运行 bash,我可以看到正确的限制值配置运行时ulimit -a。
问题是mysql用户运行的mysqld进程仍然设置为默认值(这里是1024),导致转储数据库失败。我唯一的解决方案是在运行时运行 prlimit 但我想了解缺少的内容,以便我的进程在启动时遵守限制配置。
limits ×6
linux ×2
apache-2.2 ×1
centos ×1
centos7 ×1
fat32 ×1
http-headers ×1
httpd ×1
linux-kernel ×1
pci-dss ×1
process ×1
security ×1
sudo ×1
ubuntu-14.04 ×1