【发布时间】:2016-03-30 09:08:10
【问题描述】:
matlab 的mkdir 命令似乎总是将权限设置为 755,并且该函数似乎不接受任何更改此设置的选项。
它甚至似乎不尊重 umask(umask 为 2 对应于权限 775 或 rwxrwxr-x)。
>> !umask
2
>> mkdir /tmp/test
>> ls -l /tmp/
drwxr-xr-x 2 username groupname 6 Mar 30 10:51 test/
如果我只创建一个目录,那么在事后使用fileattrib 是相对微不足道的,但如果我创建一个子目录,例如/tmp/test1/test2 然后 matlab 的 mkdir 默认创建所有不存在的父目录。 (好像 -p 标志已为 mkdir 的 unix 版本设置。)如果我只想设置新目录的权限,似乎没有一种简单的方法来判断树的哪些部分是新的和旧的。
为了记录,我在 linux 上使用 R2014b。
【问题讨论】:
-
我希望 Matlab 2016b 中有一个
sudo。 -
不能直接使用UNIX命令:
>> !mkdir -p /tmp/test1/test2吗? -
我认为
umask的概念无论如何都不会映射到 Windows。你所做的一开始就不是可移植的。 -
Windows 安全模型无法与类似 POSIX 的系统相比。例如,没有与组/其他权限完全相同的权限,
fileattrib实际上会在 Windows 上为这些字段返回 NaN...就像我说的,umask、chmod等是不可移植的。 -
见en.wikipedia.org/wiki/File_system_permissions,unix.stackexchange.com/q/13554/1177。如果您有兴趣,还可以查看 Cygwin 如何解决此问题:cygwin.com/cygwin-ug-net/ntsec.html
标签: matlab file-permissions mkdir