Eri*_*ric 5 desktop network-shares
我有一个应用文件夹图标的简单 desktop.ini 文件。它在本地文件夹中工作得很好。
我希望它在网络位置上工作,因为我们有一个外部硬盘驱动器连接到我们的网络。但是,该desktop.ini
文件似乎对所述网络没有影响。
我究竟做错了什么?
desktop.ini
除非它是系统文件,否则Windows 不会读取它(看似只读也有效,但系统文件意味着即使您将非系统隐藏文件设置为可见,它也可以保持隐藏状态)。
在 Samba 共享(SMB/网络共享协议的 Unix 实现)上,有时即使您例如转到属性并设置“只读”,它也会被忽略而不是设置。这是因为 Samba 默认不存储这些权限——这似乎带来了(可能可以忽略不计的)性能税,因为权限是(AFAIK)设置的,并作为文本数据在备用流中读取(如果你是共享一些基本的 FS,例如FAT)。
首先确保 Samba 存储 DOS 样式的权限(如“系统”),通过在您的共享定义中添加以下行:
store dos attributes = yes
Run Code Online (Sandbox Code Playgroud)
也许您可以将此添加到[Global]
,我已将其添加到特定共享。
此外,有些人会告诉您编辑错误的文件。
/usr/share/samba/smb.conf
<= 废话/etc/samba/smb.conf
<= 正确的文件重新启动 Samba ( sudo service samba restart
),然后快速检查是否可以使用 Windows 资源管理器将文件设为只读,例如,它是否仍然存在。
好的,现在,您可以制作desktop.ini
系统/隐藏文件。为此,请使用命令提示符转到它所在的文件夹,然后使用:
attrib +s +h desktop.ini
Run Code Online (Sandbox Code Playgroud)
也可以选择(如果您的图标是相对的并且与我的图标存储在同一文件夹中)。
attrib +s +h folder.ico
Run Code Online (Sandbox Code Playgroud)
最后,您需要将文件夹本身标记为只读(毫无意义且听起来很愚蠢,所以您知道它是合法的)。
attrib +r .
Run Code Online (Sandbox Code Playgroud)
当然,您可以(应该)编写此脚本。使用 MSysGit 的 bash,我在我的整个 NAS 上做了这个:
find . -type f -iname desktop.ini | while read -r i; do
echo "Processing \"$(basename "${i%/*}")\""
attrib +s +h "$i"
attrib +s +h "${i%/*}/folder.ico" # Optional, in case you have these.
attrib +r "${i%/*}"
done
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8442 次 |
最近记录: |