เทียบเท่า chmod เพื่อเปลี่ยนการอนุญาตไฟล์ใน Windows


คำตอบ:


25

Greg กล่าวถึง attrib - แต่attrib ไม่ใกล้เคียงchmod- attribสามารถตั้งค่าคุณสมบัติอ่านอย่างเดียว / ซ่อนของไฟล์เดียว - มันไม่ได้ให้การควบคุมที่ละเอียดเหมือนที่icaclsทำ

icaclsตั้งค่า / รีเซ็ตรายการควบคุมการเข้าถึงดังนั้นคุณสามารถให้ / ปฏิเสธสิทธิ์สำหรับ SID และกลุ่มแต่ละรายการ มันค่อนข้างซับซ้อนแม้ว่า

นี่คือตัวอย่างที่ผมได้บันทึกไว้ในของฉันเค้า GitHub ; จะรีเซ็ตความเป็นเจ้าของและรายการควบคุมการเข้าถึงสำหรับไฟล์ทั้งหมดในโฟลเดอร์และมีประโยชน์อย่างยิ่งในการแก้ไขปัญหาที่น่ารำคาญ "คุณต้องได้รับอนุญาตจาก .. เพื่อดำเนินการนี้" โดยเฉพาะอย่างยิ่งเมื่อทำการย้ายไฟล์จากการติดตั้งก่อนหน้า

icacls * /reset /t /c /q 

รีเซ็ตจะแทนที่อันที่มีอยู่ด้วยรายการเริ่มต้น
/tทำหน้าที่วนซ้ำในทุกไฟล์โฟลเดอร์ & โฟลเดอร์ย่อย
/qจะไม่แสดงข้อความความสำเร็จใด ๆ ที่
/cดำเนินต่อไปกับไฟล์ที่เหลือแม้จะมีข้อผิดพลาดเกิดขึ้น

คุณสามารถทำสิ่งต่าง ๆ เช่นสำรองข้อมูล ACL ที่มีอยู่ & นำไปใช้กับทุกสิ่งได้ ลองดูที่ss64ซึ่งอธิบายถึงตัวเลือก & สวิตช์ต่าง ๆ ที่ดีมาก


ปัญหาคือฉันไม่สามารถทำสิ่งนี้ได้สำหรับทุกไฟล์ที่มีข้อความ: "การเข้าถึงถูกปฏิเสธ" ไม่มีทางรอบนี้หรือไม่? ในระบบโรงเรียนที่บล็อกสิ่งนี้ แต่ไม่ใช่ cmd?
theonlygusti

คุณต้องมีสิทธิ์ผู้ดูแลระบบ; "ปกติ" cmdที่คุณได้รับโดยการกดปุ่ม [Win] + [R] ขาดสิ่งเหล่านี้ สำหรับความต้องการพิเศษเช่นนี้ฉันมีช็อตคัต "Admin shell" โดยมี "Execute as administrator" (หรือคล้ายกัน; ฉันใช้ระบบ Windows ของเยอรมนี) (และมีพื้นหลังสีแดงเข้ม)
โทเบียส

ฉันประสบปัญหากับข้อผิดพลาดการอนุญาตที่ถูกปฏิเสธ เหตุใดฉันจึงสามารถทำบางอย่างได้หากฉันเป็นผู้ดูแลระบบและคอนโซลที่ฉันเรียกใช้ทำงานในฐานะผู้ดูแลระบบด้วย นั่นคืออะไร?
Čamo


9

มี (เศร้า) ไม่สามารถเทียบเท่าแน่นอนเนื่องจาก Linux และ DOS / Windows ใช้คุณลักษณะสำหรับวัตถุประสงค์ที่แตกต่างกันและ (ตามที่ Chathuranga กล่าวก่อนหน้านี้) รูปแบบความปลอดภัยแตกต่างกัน:

  • ในระบบไฟล์ Windows มีแอตทริบิวต์"hidden" ( H) และ "system" ( S) ซึ่งไม่มีเทียบเท่าใน Linux ที่นั่นไฟล์ถูกซ่อนไว้โดยการเติมชื่อด้วยจุด ( .)
  • ไม่มีการเทียบเท่ากับAแอตทริบิวต์"เก็บถาวร" ( ) ของ Windows เช่นกัน
  • ไม่มีเทียบเท่ากับxแอตทริบิวต์"ปฏิบัติการ" ( ) Linux ในแอตทริบิวต์ไฟล์ DOS / Windows
  • มีเป็นเทียบเท่ากับ "ไดเรกทอรี" Windows ( D) แอตทริบิวต์ ( แต่ก็ไม่สามารถเปลี่ยนแปลงได้อยู่แล้ว)
  • ในระบบไฟล์ลีนุกซ์ทุกรายการจะถูกครอบครองโดยผู้ใช้หนึ่งรายและกลุ่มเดียวแน่นอนและสามารถอนุญาตให้อ่าน / เขียน / ดำเนินการสำหรับแต่ละรายการและสำหรับกลุ่มอื่น ๆ ACLs (เช่นที่ใช้โดย Windows) มีความยืดหยุ่นมากขึ้น แต่ซับซ้อนกว่าเช่นกันและไวยากรณ์ commandline เป็น PITA (ในความเห็นที่ต่ำต้อยของฉันแน่นอน)

ดอสแอตทริบิวต์แฟ้มR(อ่านอย่างเดียว) เป็นผู้หนึ่งที่อาจได้รับการพิจารณาให้มีการเทียบเท่า: แอตทริบิวต์นี้ชุดคือประมาณเหมือนwแอตทริบิวต์ทั้งหมดเป็นหายไป; แต่สิทธิ์ในการเปลี่ยนแอททริบิวนี้ขึ้นอยู่กับ ACL

อาจเป็นเรื่องดีที่จะมีchmod/ chownเทียบเท่าบน Windows อาจจะเขียนด้วยภาษาสคริปต์บางอย่างซึ่งในทางกลับกันattribและcacls(หรือผู้สืบทอด) แต่ฉันไม่มี


โพสต์แรกดีมาก!
slm

คุณกำลังสับสนกับคุณสมบัติของไฟล์และการอนุญาต ลินุกซ์มีแอตทริบิวต์ของแฟ้มที่สามารถเปลี่ยนแปลงได้ผ่านchattr ลินุกซ์มีการควบคุมการเข้าถึงอย่างละเอียดสำหรับแอตทริบิวต์ (เช่นแอ็ตทริบิวต์ [i] mmutable สามารถถูกตั้งค่าได้โดยรูทหรือโปรเซสCAP_LINUX_IMMUTABLE) ในขณะที่การเข้าถึงแอททริบิวต์ชุดใน Windows นั้นมีทั้งหมดหรือไม่มีอะไรเลย มันเป็นข้อผิดพลาดทั่วไปในการใช้งานของchmodสำหรับ Windows ที่จะใช้คำสั่งนี้เพื่อตั้งค่าคุณลักษณะไฟล์อ่านอย่างเดียว น่าเสียดายที่ระบบนั้นได้รับแจ้งตามที่โปรแกรมเมอร์ผู้พัฒนาพวกเขาเท่านั้น
Eryk Sun

@eryksun: น่าสนใจ - ฉันไม่ได้ตระหนักถึงchattrคำสั่งนั้น แต่คุณไม่ได้หมายความว่าฉันจะ "สร้างความสับสนให้กับคุณสมบัติของไฟล์และการอนุญาต" ใช่ไหม AFAICS ทุกคำที่ฉันเขียนเกี่ยวกับคุณสมบัติของDOSยังคงถูกต้อง
โทเบียส

ไฟล์ประกอบด้วยคุณลักษณะ (แบบขยาย) จำนวนมาก ใน Unix ชุดของคุณสมบัติหลักจะถูกเก็บไว้ใน inode รวมถึงโหมดไฟล์ (สิทธิ์) แอตทริบิวต์เพิ่มเติมอื่น ๆ (เช่น ACLs) อาจถูกจัดเก็บภายนอก Windows ไม่เทียบเท่ากับแอตทริบิวต์ "โหมด" ของ Unix นอกจากนี้ยังไม่มีบันทึกไอโหนดทั่วไปสำหรับระบบไฟล์ ระเบียน NTFS MFT นั้นคล้ายกัน จากมุมมองปกติไฟล์แอตทริบิวต์ Windows มาตรฐานเป็นคุณลักษณะเดียวของบันทึกไฟล์ สิ่งเหล่านี้สอดคล้องกับแอตทริบิวต์ของไฟล์ Linux ที่ตั้งค่าผ่านchattrยกเว้น Windows มีแอตทริบิวต์ของไดเรกทอรีเนื่องจากไม่มี inode
Eryk Sun

คำถามถามเกี่ยวกับ "[e] qualent ของ chmod เพื่อเปลี่ยนการอนุญาตไฟล์ใน Windows" ไม่มีเทียบเท่าโดยตรงกับchmodใน Windows เพราะไม่มีอะไรเหมือนแอตทริบิวต์ "mode" ของไฟล์ แอตทริบิวต์ชุดไฟล์มาตรฐานของ Windows ไม่มีส่วนเกี่ยวข้องกับสิ่งนี้ คุณลักษณะอ่านอย่างเดียวไม่ใช่สิทธิ์ของไฟล์ โดยพื้นฐานแล้วมันบอกว่าไฟล์นั้นเขียนด้วยหินดังนั้นความพยายามทั้งหมดในการแก้ไขมันจะต้องล้มเหลว แอตทริบิวต์ของไฟล์ "ไม่เปลี่ยนรูป" ของ Linux นั้นคล้ายกัน Windows ใช้ ACL สำหรับการอนุญาตเท่านั้นดังนั้น icacls.exe และสิ่งที่คล้ายกันคือคำสั่งที่คล้ายกันในหัวข้อของการอนุญาต
Eryk Sun

6
icacls "C:\folder" /grant:r "Domain\Users":(OI)(CI)M /T /C

ทำงานเหมือนเครื่องรางเพื่อเปลี่ยนการอนุญาตในโฟลเดอร์สำหรับผู้ใช้โดเมน ข้อมูลเพิ่มเติมเกี่ยวกับและcaclsicacls


โพสต์แรกที่ดี! ไม่เคยได้ยินของ icacls
slm

5

attribคำสั่งเป็นคู่ที่ใกล้เคียงที่สุดสำหรับสิ่งพื้นฐานมาก (อ่านอย่างเดียวธงถาวร) caclsจากนั้นก็มีคำสั่ง ACL (รายการควบคุมการเข้าถึง) สุดท้าย แต่ไม่ท้ายสุดเนื่องจาก Windows เป็นไปตาม Posix จริงจึงมีแฟล็กที่เหมือนยูนิกซ์อยู่ หากคุณติดตั้งชุดเครื่องมือ Cygwin, chmodคุณจะได้รับ (เล็กน้อยนอกหัวข้อเนื่องจากคุณกำลังมองหาคำสั่งเทียบเท่ายูนิกซ์การดาวน์โหลดและติดตั้ง Cgygwin อาจเป็นสิ่งที่น่าสนใจสำหรับคุณ)



2

ไม่มีสิ่งใดที่เรียกว่า chmod ใน windows เพราะโมเดลความปลอดภัยของ Windows นั้นแตกต่างจาก Linux คุณสามารถใช้attribคำสั่งเพื่อเปลี่ยนคุณสมบัติของวัตถุ (แต่พวกเขามีต่อคุณสมบัติระดับโลกมากขึ้น)


2

สำหรับฉันการแก้ปัญหาคือการติดตั้ง Cygwin และเพิ่มโฟลเดอร์ bin ลงในเส้นทางของระบบ จากนั้นหากคุณเรียกใช้ "chmod" ในบรรทัดคำสั่งมันจะทำงาน แม้ว่าฉันจะยังไม่ได้ตรวจสอบความถูกต้อง


1
การอ้างอิง: เรียบง่ายและมีรายละเอียด
Bob
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.