Mik*_*ike 15 cygwin file-permissions windows-7
背景: 我正在尝试编写[.bat]文件,因此我可以双击它,并调用bash脚本.bash脚本将启动一些Windows GUI应用程序来监控GPU/CPU温度.我刚刚安装了cygwin v1.7.7-1(今天下载)和windows 7.
代码: monitor-temps.bat:
C:\cygwin\bin\bash.exe ~/bin/monitor-temps.bash
pause
Run Code Online (Sandbox Code Playgroud)
代码: monitor-temps.bash:
#!/usr/bin/bash
"/cygdrive/c/Users/michael/Desktop/apps_and_drivers/GPU-Z.0.4.8.exe" &
Run Code Online (Sandbox Code Playgroud)
输出: 双击[.bat]文件后,我得到一个:
C:\Users\michael\Desktop>C:\cygwin\bin\bash.exe ~/bin/monitor-temps.bash
C:\Users\michael\Desktop>pause
Press any key to continue . . . /home/michael/bin/monitor-temps.bash: line 2: /cygdrive/c/Users/michael/Desktop/apps_and_drivers/GPU-Z.0.4.8.exe: Permission denied
Run Code Online (Sandbox Code Playgroud)
当我cd到目录并手动执行应用程序时,我仍然得到相同的权限错误.
权限: 根据我在Linux中的权限问题的经验,一切看起来都很好,因为我是我认为的用户,并且该文件具有预期的权限:
$ whoami
michael
$ ls -l GPU*
-rwx------+ 1 michael None 890720 2010-12-01 19:23 GPU-Z.0.4.8.exe
Run Code Online (Sandbox Code Playgroud)
问题: 有谁知道如何解决这个问题?我错过了什么吗?
小智 15
作为开发人员,我使用快捷方式在我的Windows环境中提供与Linux类似的命令行界面(CLI),并遇到尝试解压缩文件的同一问题.
修复方法是将快捷方式设置为"以管理员身份运行".
如果您使用此方法访问Cygwin环境,请转到快捷方式的属性,选择"高级"按钮以获取"以管理员身份运行"选项,选中该框,然后单击"确定".你走吧!您也可以通过设置快捷方式并执行上述操作来设置批处理文件.
希望有所帮助!
Saj*_*man 11
我认为你必须更改目录或文件权限.如果要更改文件或目录的权限,则必须使用代码添加完整路径.
好像你想在C:\ yourDirectory上更改cocos2d-x文件夹的权限(我在Windows上;在Mac上它将/代替\)在cygwin控制台上编写代码:
chmod -R 775 /cygwindrive/c/yourDirectory
Run Code Online (Sandbox Code Playgroud)
检查安装表cat /proc/mounts或mount并确保每个安装点出/,/usr/bin,/usr/lib有一个noacl标志.如果它丢失了,请更正/etc/fstab并重新启动.(重新启动同步了noacl我的root挂载标志,我不知道是否可以在不重新启动的情况下实现相同的功能).
检查icacl输出中针对该文件的NULL SID记录和其他奇怪记录.它们出现在Cygwin中的POSIX ACL转换层写入时添加(在/ etc/fstab中使用"noacl"允许禁用它,但损坏已经完成).
如果包含父项具有NULL SID记录,则仅在文件上重置Windows ACL可能是不够的.一个人必须跑
icacls c:\cygwin64 /reset /t /l /c
Run Code Online (Sandbox Code Playgroud)
从命令提示符中删除每个文件和目录中的Windows ACL中的无关记录.
更新 其他命令重置所有权,删除默认ACL并在更改之前和之后显示已知二进制文件的ACL:
set croot=c:\cygwin64
icacls %croot%\bin\ls.exe
%croot%\bin\getfacl /bin/ls
takeown /F %croot% /R /D Y > nul
icacls %croot% /reset /T /C /L /Q
icacls %croot%\bin\ls.exe
%croot%\bin\getfacl /bin/setfacl
%croot%\bin\getfacl /bin/find
%croot%\bin\setfacl -bk /bin/find
%croot%\bin\find -P / -xdev -exec /bin/setfacl -bk "{}" +
icacls %croot%\bin\ls.exe
%croot%\bin\getfacl /bin/ls
Run Code Online (Sandbox Code Playgroud)
解决这个问题的最简单方法是:
-rwx ------ +可能是问题.一些隐藏的acl可能会禁止x给你.然后用setfacl重置你的acl.
$ cat >/tmp/faclx <<EOF
user::rwx
group::r--
mask:rwx
other:r--
EOF
$ setfacl -f /tmp/faclx /cygdrive/c/Users/michael/Desktop/apps_and_drivers/GPU-Z.0.4.8.exe
Run Code Online (Sandbox Code Playgroud)
或者您需要提升权限:
$ cygstart --action=runas /cygdrive/c/Users/michael/Desktop/apps_and_drivers/GPU-Z.0.4.8.exe
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
69243 次 |
| 最近记录: |