客户 Linux 系统使用 ls 将文本文件视为二进制文件

客户 Linux 系统使用 ls 将文本文件视为二进制文件

我正在通过共享文件夹将一个简单的文本文件复制到 VirtualBox 上的客户 Linux 系统,但复制之后,虚拟机似乎认为该文件是二进制文件(它显示为绿色ls):

有什么方法可以把它转换回来吗?

Linux 发行版是 SANS SIFT,我相信它可以在 Ubuntu 14 上运行。

答案1

这种情况经常发生在我身上,通常是当我通过samba服务器端管理的网络共享将 Windows 上生成的文本文件复制到我的 Linux 服务器上时。Hastur 在评论中说得对,Joe Sewell 在他的回答中也说得对:这只是设置了“可执行”权限标志。我的解决方案是:

chmod u-x,go+r filename

这使得我的用户无法执行该文件,但“组”和“其他人”可以读取该文件。此,go+r部分是可选的,只要您是唯一需要访问该文件的人即可。

编辑:应该可以更改samba这些权限的默认行为。我还没费心去弄清楚,但快速谷歌搜索后发现了serverfault 帖子描述了我要尝试的第一件事:

我通常使用 SAMBA 的本机功能来管理共享上的权限和组。例如..

force user=user1
force group=sharedgroup
create mask=775

您将在共享下指定这些设置。配置更改后务必重新加载 SAMBA,这可以通过 init 脚本完成。

根据该问题/答案的评论,有许多细微且具体的设置必须正确设置。恐怕我在这方面帮不上什么忙。

答案2

如果您已LS_COLORS设置默认值(或至少是我在 RHEL 中看到的默认值),文件名的绿色并不意味着它是二进制文件,而只是表示设置了一个或多个可执行位。ls -l应该会为您提供确认这一点所需的信息。请记住,在 Linux 中,shell 脚本是文本文件,必须可执行才能工作(除非您执行source它们)。

答案3

我认为您看到了不同的属性:可执行属性x,可能现在您已经有了-rwxrw-r-- 为确保万无一失,请从您的客户系统尝试一下ls -l yourfile,您将看到您的文件被显示在哪个属性上。

如果是可执行属性设置的问题(x),chmod u-x您可以使用它来修复该问题。
查看布莱恩的回答解决读取组属性的问题。

这取决于你如何安装共享文件夹,具有哪些属性,遗憾的是,下次您必须再次修复它。

如果你不能用其他方式做到这一点,你可以随时尝试修复它,按照建议手动安装它们,例如服务器故障并选择适当的选项。建议

在 Linux 客户机中,使用以下命令:

mount -t vboxsf [-o OPTIONS] sharename mountpoint

要在启动期间挂载共享文件夹,请将以下条目添加到/etc/fstab

sharename   mountpoint   vboxsf   defaults  0   0

参考文献和注释:

  • man mount以及man fstab如何通过以下方式挂载分区的所有选项命令行以及开机时间
  • Virtualbox 共享文件夹手动的
  • 旧帖virtualbox 论坛

  • 如果您想查看它是否是二进制文件type yourfile,请始终从您的客户系统使用来检查。

相关内容