2010-12-18 13 views
8
में cygwin का उपयोग कर

पृष्ठभूमि: मैं एक [.bat] फ़ाइल लिखने की कोशिश कर रहा हूँ ताकि मैं इसे और एक bash स्क्रिप्ट लागू हो जाएगी डबल क्लिक कर सकते हैं। जीपीयू/सीपीयू तापमान की निगरानी के लिए बैश स्क्रिप्ट कुछ विंडोज़ जीयूआई ऐप्स शुरू करेगी। मैं सिर्फ एक ताजा cygwin v1.7.7-1 (आज से डाउनलोड) और खिड़कियों के स्थापित किया 7."अनुमति अस्वीकृत" विंडोज

कोड: मॉनिटर-temps.bat:

C:\cygwin\bin\bash.exe ~/bin/monitor-temps.bash 
pause 

कोड: मॉनिटर-temps.bash:

#!/usr/bin/bash 
"/cygdrive/c/Users/michael/Desktop/apps_and_drivers/GPU-Z.0.4.8.exe" & 

आउटपुट: मैं दोगुना करने के बाद [.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 

मैं अभी भी एक ही अनुमतियाँ त्रुटि मिलती है जब मैं निर्देशिका के लिए सीडी और मैन्युअल रूप से आवेदन निष्पादित।

अनुमतियां: लिनक्स में अनुमति समस्याओं के साथ मेरा अनुभव से, सब कुछ अच्छा लग रहा है, क्योंकि मैं उपयोगकर्ता मुझे लगता है कि मैं कर रहा हूँ हूँ, और फ़ाइल की उम्मीद अनुमतियों:

$ whoami 
michael 

$ ls -l GPU* 
-rwx------+ 1 michael  None 890720 2010-12-01 19:23 GPU-Z.0.4.8.exe 

प्रश्न: क्या कोई यह जानता है कि इसे कैसे ठीक किया जाए? क्या मैं कुछ भूल रहा हूँ?

उत्तर

5

इसे ठीक करने के लिए सबसे आसान तरीका है:

  1. डाउनलोड Sysinternals ProcMon, इसे शुरू करने और इसे थोड़ी देर के लिए चला सकते हैं।
  2. शोर उत्पन्न करने वाली सभी प्रक्रियाओं को बहिष्कृत करें।
  3. जब लॉग कम व्यस्त हो जाता है, तो अपनी फ़ाइल एक्सेस प्रयास शुरू करें।
  4. "एक्सेस अस्वीकृत" संदेशों के लिए ProcMon लॉग खोजें।
  5. जांच करें। ठीक करना आसान होना चाहिए।
4

-rwx ------ + समस्या हो सकती है। कुछ छिपे हुए एसीएल आपके लिए एक्स को रोक सकते हैं। फिर अपने एसीएल को setfacl के साथ रीसेट करें।

$ cygstart --action=runas /cygdrive/c/Users/michael/Desktop/apps_and_drivers/GPU-Z.0.4.8.exe 
9

मुझे लगता है कि आप निर्देशिका या फ़ाइल अनुमति बदलना होगा:

$ 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 

या आप ऊंचा अनुमतियाँ की जरूरत है। अगर आप किसी फ़ाइल या निर्देशिका की अनुमति बदलना चाहते हैं तो आपको कोड के साथ पूरा पथ जोड़ना होगा।

के रूप में आप सी पर Cocos2d-x फ़ोल्डर पर अनुमति बदलना चाहते हैं: \ yourDirectory (मैं विंडोज पर हूँ, मैक पर यह होगा \ के बजाय /) cygwin कंसोल पर कोड लिखने:

chmod -R 775 /cygwindrive/c/yourDirectory 
+1

यह सी में काम नहीं किया:/मेरे लिए । अनुमति अस्वीकार कर दी गई, सिग्विन कंसोल को प्रशासक के रूप में चलाने के लिए किया गया था। – jcarballo

+1

बैश फ़ाइल की बदलती अनुमति मेरे लिए पर्याप्त थी। –

12

एक डेवलपर के रूप में, मैं एक कमांड लाइन इंटरफ़ेस (सीएलआई) प्रदान करने के लिए शॉर्टकट का उपयोग करता हूं जो कि मेरे विंडोज वातावरण में लिनक्स के समान व्यवहार करता है, और फ़ाइल को अनार करने की कोशिश कर रहे एक ही मुद्दे में भाग गया।

फ़िक्स "शॉर्टकट के रूप में चलाएं" को शॉर्टकट सेट करना था।

यदि आप अपने सिगविन पर्यावरण तक पहुंचने के लिए इस विधि का उपयोग कर रहे हैं, तो शॉर्टकट के गुणों पर जाएं, "व्यवस्थापक के रूप में चलाएं" विकल्प प्राप्त करने के लिए उन्नत बटन का चयन करें, बॉक्स को चेक करें, ठीक क्लिक करें। और तुम जाओगे !! आप इसे करने के लिए शॉर्टकट करके और उपरोक्त करके, अपनी बैच फ़ाइल भी सेट कर सकते हैं।

आशा है कि मदद करता है!

+0

setfacl के साथ गड़बड़ करने से इतना आसान है, जिसने मेरे लिए चाल नहीं की।सिग्विन आइकन पर बस शिफ्ट-राइट-क्लिक करें, "व्यवस्थापक के रूप में चलाएं" का चयन करें, और अचानक संकलन-समय फ़ोल्डर निर्माण काम कर रहा था! धन्यवाद, @ डार्कस्ट्रम! – Redboots

+0

मुझे प्रोफ़ाइल समस्या को ठीक करने और टर्मिनल शुरू करने के लिए '/ etc/nsswitch.conf' को संपादित करने की आवश्यकता है क्योंकि व्यवस्थापक ही एकमात्र चीज है जो मुझे ऐसा करने की अनुमति देगी। धन्यवाद! – kenchilada

0

मुझे यह समस्या थी, और इसे cd द्वारा निर्देशिका में ठीक किया गया है जिसमें मैंने अभी बनाया है (पैक किया गया है, या पुन: संग्रहित) बॉक्स है। फिर vagrant box add <file.box> --name <name>। मुझे लगता है कि पैथ चीजें fvck, और यह असफल होने का कारण बनता है। फिर vagrant box list के साथ दोबारा जांचें। फिर मैं mkdir coolbox; cd coolbox। तब मैं बस vagrant init <name> और यह सब जादू की तरह आता है।

-1

इसे निष्पादन योग्य बनाने के लिए chmod कमांड का उपयोग करके स्क्रिप्ट का मोड बदलें। अधिक जानकारी के लिए मैन chmod देखें।

+1

यदि आप विंडोज/साइगविन अनुमतियों के मुद्दों में चल रहे हैं, तो chmod का कोई प्रभाव नहीं पड़ेगा। मेरा विश्वास करो, मैं इसे आजमा रहा हूं, लेकिन मेरी फाइलें हर बार 755 अनुमतियों के साथ समाप्त होती हैं। विंडोज़ में सुरक्षा अनुमतियों को बदलना अच्छा नहीं है। – Redboots

2
  • चेक के साथ cat /proc/mounts या mount और यह सुनिश्चित करें कि हर से बाहर बिंदु माउंट बनाने /, /usr/bin, /usr/lib एक noacl झंडा है माउंट तालिका। यदि यह गुम है, तो सही /etc/fstab और रीबूट करें। (रीबूटिंग ने मेरे लिए रूट माउंट पॉइंट के noacl ध्वज को सिंक किया, और मुझे नहीं पता कि इसे रीबूट किए बिना हासिल किया जा सकता है)।

  • फाइल के खिलाफ आईसीएक्सएल के आउटपुट में एक पूर्ण एसआईडी रिकॉर्ड और अन्य अजीब रिकॉर्ड की जांच करें। वे सिग्विन में पॉज़िक्स एसीएल अनुवाद परत द्वारा लिखित पर जोड़े गए हैं (/ etc/fstab में "नोएसीएल" का उपयोग करके इसे अक्षम करने की अनुमति मिलती है, लेकिन नुकसान पहले ही हो चुका है)।

    फ़ाइल पर केवल विंडोज एसीएल को रीसेट करना पर्याप्त नहीं हो सकता है यदि युक्त माता-पिता के पास पूर्ण एसआईडी रिकॉर्ड था। प्रत्येक को

    icacls c:\cygwin64 /reset /t /l /c 
    

    कमांड प्रॉम्प्ट से प्रत्येक फ़ाइल और निर्देशिका में विंडोज एसीएल से अपरिवर्तनीय रिकॉर्ड को हटाने के लिए है।

अद्यतन अन्य आदेशों स्वामित्व रीसेट, डिफ़ॉल्ट एसीएल हटाने और दिखाने के एक ज्ञात द्विआधारी के एसीएल से पहले और परिवर्तन के बाद:

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 
+0

उपरोक्त के अलावा मुझे लगा कि मुझे विरासत अनुमतियों को हटाने की आवश्यकता है, \ Administrators और। \ SYSTEM के लिए पूर्ण पहुंच सेट करना। मुझे लगता है कि इसे एक अतिरिक्त '' '' icacls% croot%/अनुदान के साथ स्क्रिप्ट किया जा सकता है: आर सिस्टम: एफ प्रशासक: एफ/टी/सी/एल/क्यू'''। –

+0

https://gist.github.com/ilatypov/5956ae36da8ff0aa2212eb2004def8c4 –

संबंधित मुद्दे