ฉันต้องการแทนที่สิทธิ์ของโฟลเดอร์ ครั้งแรกที่ฉันทำสิ่งนี้:
icacls folder /grant user:(oi)(ci)f
จากนั้นฉันต้องการเปลี่ยนการอนุญาตและการสืบทอดเป็น:
icacls folder /grant:r user:(oi)(io)rx
(oi)(ci)f
หลังจากนี้สิทธิ์สำหรับผู้ใช้ยังคงเป็น
ทำไมไม่เปลี่ยนสิทธิ์
การแทนที่การอนุญาตและการสืบทอดด้วย setacl ทำงานได้ตามที่คาดไว้:
setacl -on folder -ot file -actn ace -ace
"n:user;p:read_ex;i:io,so;m:set;w:dacl"
ขอบคุณสำหรับคำตอบ. แต่นี่คือโดยการออกแบบ? หรือนี่คือข้อผิดพลาด? การใช้สวิตช์ ": r" คืออะไรหากวิธีเดียวที่คุณสามารถแน่ใจได้ว่าแทนที่สิทธิ์ (และการสืบทอด) คืออะไร
icacls folder /remove user
icacls folder /grant user:(oi)(io)rx
ฉันได้ทดสอบการทำงานของ "icacls / grant" และฉันพบว่า icacls เขียนรายการสำหรับการสืบทอดทุกประเภท
ลองสิ่งนี้:
md test
icacls test /inheritance:r
icacls test /grant user:f
icacls test /grant:r user:(oi)rx
icacls test /grant:r user:(ci)rx
icacls test /grant:r user:(oi)(ci)rx
icacls test /grant:r user:(ci)(oi)(io)rx
icacls test /grant:r user:(io)(oi)rx
icacls test /grant:r user:(io)(ci)rx
จากนั้นเพื่อดู ACL:
icacls test
ผลลัพธ์คือ:
test PC\user:(F)
PC\user:(OI)(IO)(RX)
PC\user:(OI)(RX)
PC\user:(CI)(IO)(RX)
PC\user:(CI)(RX)
PC\user:(OI)(CI)(IO)(RX)
PC\user:(OI)(CI)(RX)
ดังนั้นฉันจึงพบว่าicacls /grant:r
แทนที่สิทธิ์สำหรับการสืบทอดประเภทเดียวกันเท่านั้น ในคำถามเดิมของฉัน:
md test
icacls test /inheritance:r
icacls test /grant user:(oi)(ci)f
icacls test /grant:r user:(oi)(io)rx
การทดสอบ icacls ให้ผลลัพธ์
test PC\user:(OI)(IO)(RX)
PC\user:(OI)(CI)(F)
และฉันคิดว่า GUI แสดงเฉพาะ (OI) (CI) (F) เพราะมี (OI) (IO) (RX)
ฉันพลาดอะไรไปรึเปล่า? นี่เป็นข้อบกพร่องหรือจากการออกแบบ?
grant:r
คำสั่งไม่เปลี่ยนสิทธิ์ทั้งหมดสำหรับผู้ใช้ที่ระบุ ฉันเดาว่าเป็นเพราะผู้ดูแลระบบต้องการวิธีแทนที่สิทธิ์ที่เฉพาะเจาะจง + การสืบทอด ACE (เช่นให้สิทธิ์การอ่านเป็นไฟล์เท่านั้น) โดยไม่ต้องแตะ (หรือระบุอีกครั้ง) การอนุญาตอื่น ดูเหมือนว่าจะมีการให้สวิตช์/reset
หรือ/remove
สวิตช์สำหรับกรณีเมื่อต้องเปลี่ยนสิทธิ์ทั้งหมดสำหรับผู้ใช้ ฉันเห็นด้วยกับข้อความช่วยเหลือ/grant:r
ของฟังก์ชั่นที่ไม่ครบถ้วนสมบูรณ์