Unix: ฉันจะอนุญาตให้มีเพียงคนเดียวเท่านั้นที่เห็นโฟลเดอร์ของฉันใน fs เดียวกันได้อย่างไร


9

ฉันต้องการให้การเข้าถึง dir สำหรับเพื่อน เขามีการเข้าถึงระบบไฟล์ที่ dir ตั้งอยู่ ฉันไม่ต้องการตั้งค่าการอนุญาตให้กับผู้ใช้ทั้งหมด ฉันจะอนุญาตให้เฉพาะบุคคลที่เห็น dir ได้อย่างไร พวกเราไม่มีใครเป็น superuser

[BOUNTY CHALLENGE]ไม่มีการตอบกลับใด ๆ โดยใช้ Ubuntu:

1. วิธีการของ jamuraa ไม่ทำงาน

$ setfacl -m user:friend:rwx classroom.xml 
setfacl: classroom.xml: Operation not supported

2. วิธีการของ nik ไม่ทำงาน: ไม่สามารถเข้าถึงไฟล์ที่ไม่มีอยู่

3. วิธีการของ ba ไม่ทำงาน: ฉันไม่สามารถสร้างกลุ่มไม่ใช่รูท

4. วิธีการของ ToK ไม่ทำงานผู้ใช้อยู่ในสองกลุ่ม: "ผู้ใช้" และ "ช่อง"

chown -R myFriend:users ~/TEST
chown: changing ownership of `/u/myFriend/TEST/you_see_it': Operation not permitted
chown: changing ownership of `/u/myFriend/TEST': Operation not permitted

1
มันจะมีประโยชน์ถ้าคุณให้หนึ่งซับในว่าคำตอบเหล่านี้ก่อปัญหาให้คุณ - จะให้คำนิยามปัญหาที่ดีขึ้นสำหรับการสร้างตัวเลือกอื่น ๆ
nik

Nik: เพิ่มโปรไฟล์ข้อผิดพลาด

คำตอบ:


12

ด้วยสิทธิ์ UNIX ปกติ (ผู้ใช้กลุ่มทุกคน) คุณไม่สามารถทำสิ่งนี้ได้อย่างง่ายดาย หากคุณไม่ต้องการเข้าถึงไดเรกทอรีอีกต่อไปคุณสามารถเปลี่ยนเจ้าของไดเรกทอรีเป็นเพื่อนของคุณซึ่งใช้ได้กับ Unices บางแห่ง แต่ส่วนใหญ่ไม่ใช่ไดเรกทอรี

อย่างไรก็ตาม - หากคุณเปิดใช้งาน ACL บน Linux คุณสามารถทำได้หากคุณเป็นเจ้าของไฟล์ เพียงเรียกใช้คำสั่งsetfacl -m user:friend:rwx filenameโดยที่เพื่อนเป็นชื่อบัญชีของเพื่อนและชื่อไฟล์ของคุณคือไฟล์ คุณสามารถตรวจสอบว่ามันมีผลบังคับใช้โดยการเรียกใช้getfacl filenameคุณควรเห็นสามuser:friend:rwxในรายการ ฉันไม่ได้เห็นระบบ Linux มากเกินไปที่เปิดใช้งาน ACL อยู่


ACL เป็นโซลูชันมาตรฐานสำหรับปัญหานี้โดยสมมติว่าระบบไฟล์ของคุณเปิดใช้งาน
Ryan C. Thompson

HHH ดูเหมือนจะพูดว่าสิ่งนี้ไม่ได้ผล ฉันคิดว่าคงเป็นเช่นนั้นเว้นแต่จะมีการเปิดใช้ ACL ด้วยเหตุผลแปลก ๆ HHH ให้อะไร
pboin

pboin: วิธีนี้ใช้ไม่ได้ผลชัดเจนว่าอาจเป็นเพราะไม่ได้เปิดใช้งาน ACL หรือไม่ก็ไม่แน่ใจ

11

นี่คือสิ่งที่เราคุยกันในโรงเรียน
ไปแบบนี้

  1. สร้างไดเรกทอรี (ชื่อ dataสำหรับการอ้างอิงที่นี่)
    • เปลี่ยนสิทธิ์เป็น "chmod 711 data "
    • กลุ่มและอื่น ๆ มีเพียง x - เข้าถึงเพื่อเข้าสู่ไดเรกทอรี
    • พวกเขาไม่สามารถแสดงรายการไดเรกทอรี
    • ตอนนี้สร้างไดเรกทอรี difficult-name-here (ซึ่งอาจเป็น hashed-string)
    • เปลี่ยนสิทธิ์เป็น "chmod a+rx difficult-name-here "
    • เนื้อหาของไดเรกทอรีนี้ปลอดภัยในขณะที่ไม่สามารถแสดงรายการไดเรกทอรีภายนอก
    • คนที่รู้จัก "ชื่อยาก" สามารถข้ามไปยังไดเรกทอรีที่สองนี้ได้
      • " cd path/to/data/difficult-name-here"
      • คนอื่นไม่สามารถเห็นชื่อและไม่สามารถเข้าถึงเนื้อหาของไดเรกทอรี
      • อย่างไรก็ตามrootสามารถเข้าถึงทุกสิ่งได้เสมอ (ซึ่งไม่ใช่ปัญหาที่นี่)
    • แบ่งปันdifficult-name-hereกับคนที่คุณต้องการให้ข้อมูลนี้
    • เก็บไฟล์ที่แชร์ในไดเรกทอรีที่สองนี้

ค่อนข้างหยาบ แต่ถ้าสิ่งนี้สามารถแตกได้โดยไม่มีการแตกการควบคุมการเข้าถึงยูนิกซ์ฉันอยากจะรู้


การปรับปรุงในการแสดงความคิดเห็นจากdmckee,
ตรงนี้เป็นข้อสรุปที่เราไปถึง!
"การรักษาความปลอดภัยโดยความสับสน" มีความปลอดภัย

ต้องบอกว่าเมื่อออกแบบการปกป้องข้อมูล
เป็นสิ่งสำคัญในการระบุค่าของมัน

คุณควรตั้งเป้าหมาย

  • ค่าใช้จ่ายในการทำลายความปลอดภัยที่สูงกว่า
  • ต้นทุนของเนื้อหาที่ปลอดภัย
  • โดยเป็นสัดส่วนกับความหวาดระแวงของคุณ

ในกรณีนี้หากการrootตัดสินใจที่จะระบุต้นไม้ไดเรกทอรีที่ใดที่หนึ่งในการเข้าถึงสาธารณะ
ความลับของคุณออก! แต่คุณได้รับการปกป้องจากรากหรือความรับผิดชอบที่อาจเกิดขึ้นหรือไม่?
หากเป็นกรณีนี้คุณมีอีกมากที่ต้องกังวลเกี่ยวกับไฟล์ที่แชร์แล้ว


หมายเหตุ: การปรับปรุงเกี่ยวกับการไม่ทำงานในคำถาม
ฉันใช้สิ่งนี้ในช่วงต้น ๆ ของ linux เพื่อให้รู้ว่ามันใช้งานได้
หากคุณได้รับ ' cannot access non-existant file' แทน'permissions denied'คุณอาจทำผิดพลาดในลำดับ สิ่งที่คุณต้องการควรมีลักษณะเช่นนี้

 755 711 755 อะไรก็ตาม - === สิทธิ์การเข้าถึง

 basepath / CoverDir / ชัดเจน / protectedFile.txt
          | | ^^^^^^^^^^^^^^^ ไม่สามารถมองเห็นได้โดยไม่ต้อง
          | ^^^^^^^^ ชื่อไดเรกทอรีอ่านเข้าถึง
          ^^^^^ สาธารณะแชร์กับเพื่อน ไดเรกทอรีคลุมเครือ
                สามารถเข้าถึงได้ 
                ไดเรกทอรี
  1. หากคุณตั้งค่า ' CoverDir' การเข้าถึงเป็น'rwx--x--x'
    กลุ่มและคนอื่น ๆ สามารถป้อนไดเรกทอรี แต่ไม่สามารถอ่านเนื้อหาได้
  2. ตอนนี้ถ้าคุณใช้ชื่อไดเรกทอรีที่คลุมเครือ
    ' Obscure' อยู่ข้างในและให้สิทธิ์การอ่านแบบเต็มด้วย ' rwxr-xr-x'
    ผู้ที่รู้จักชื่อนี้จะสามารถแสดงรายการเนื้อหาได้
  3. การเข้าถึงนี้จะต้องทำจากข้างนอกด้วย ' ls BasePath/CoverDir/Obscure'
    เพราะคนในกลุ่มของคุณและคนอื่นจะไม่สามารถ ' ls BasePath/CoverDir'

7
"ถ้าสิ่งนี้สามารถทำลาย [... ], ชอบที่จะรู้ว่า"ดีมันเป็นตัวอย่างที่ดีของการรักษาความปลอดภัยโดยความสับสนและเปราะบางดังนั้น อย่าเชื่อมั่นในระยะยาว เรียบร้อยแล้ว
dmckee --- ผู้ดูแลอดีตลูกแมว

หากการควบคุมการเข้าถึงยูนิกซ์ของคุณมีการใช้งานอย่างปลอดภัยนี่เกือบจะปลอดภัยเหมือนฐานข้อมูลรหัสผ่านแบบเงา (หรือsshคีย์ส่วนตัว)
nik

5

อันที่จริงแล้วถูกต้อง 100% ย้อนหลัง เนื่องจากเพื่อนของคุณ (มีแนวโน้ม) มีกลุ่มเฉพาะที่เชื่อมโยงกับชื่อผู้ใช้ของเขา / เธอเปลี่ยนความเป็นเจ้าของกลุ่มของไดเรกทอรีที่เป็นปัญหาในกลุ่มนั้นน่าจะเป็นชื่อผู้ใช้ของเพื่อน เพื่อให้สามารถแบ่งปันเนื้อหาระหว่างคุณสองคนคุณควรเป็นเจ้าของในฐานะผู้ใช้:

chown -R youruser:friendgroup ~/foo/bar

จากนั้นกำหนดสิทธิ์ที่เหมาะสมให้กับไดเรกทอรีโดยขึ้นอยู่กับการเข้าถึงที่คุณต้องการให้ผู้ใช้รายอื่นมี:

chmod -R 770 ~/foo/bar

จะให้สิทธิ์คุณทั้งคู่ในการเข้าถึงไดเรกทอรีและเนื้อหาทั้งหมด

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


4

ฉันจะสร้างกลุ่มใหม่สำหรับคุณและเพื่อนของคุณและตั้งค่าการอนุญาตให้โฟลเดอร์เต็มสำหรับเจ้าของและกลุ่มพร้อมบิต setgid สำหรับไดเรกทอรี

แต่ขึ้นอยู่กับความต้องการของคุณคุณอาจต้องเปลี่ยนคุณและเพื่อนของคุณให้ได้รับความสนใจเพื่อให้กลุ่มสามารถเปลี่ยนไฟล์ใหม่โดยอัตโนมัติ

# groupadd bestfriends
# chmod 2770 dir
# chgrp bestfriends dir
# usermod -G bestfriends FRIENDLOGIN

3
สิ่งนี้อาจต้องใช้สิทธิ์ superuser ที่เขาไม่มี
คลื่นเหียน

1
โอ้ฉันพลาดเส้นนั้นไปทั้งหมด: x ถ้าอย่างนั้นฉันก็รู้สึกว่าแพ้ เดาว่าฉันจะไปส่งทางไปรษณีย์ในประเทศไม่ใช่ทางออกที่ดีที่สุด แต่อย่างน้อยไฟล์ก็ถูกส่งไปหาคนอื่น
gaqzi

2

รายการควบคุมการเข้าถึงเป็นวิธีที่สมบูรณ์แบบในการทำเช่นนี้

อย่างไรก็ตาม (ถ้าฉันจำได้อย่างถูกต้อง) ระบบไฟล์จำเป็นต้องเริ่มต้นด้วย ACLs (เช่น "/ dev / sda6 / ค่าเริ่มต้น ext3, acl "), ผ่าน / etc / fstab และนี่คือสิ่งที่ superuser เท่านั้นที่สามารถทำได้ ..


2

จำเป็นต้องมี RBACS เช่น grsec / selinux ..


ไม่แน่ใจว่านี่เป็นปัญหาหรือไม่คุณสามารถเพิ่มการอ้างอิงได้ไหม

2

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


การเพิ่มผู้ใช้ไปยังกลุ่มต้องการการเข้าถึงรูตซึ่ง OP บอกว่าเขาไม่มี
Dave Sherohman

2

Dropbox เป็นอย่างไร? คุณสามารถติดตั้งโดยไม่มีสิทธิ์ผู้ดูแลระบบและเชื่อมโยงไปยังบัญชีเดียวกัน

ตรวจสอบวิธีการติดตั้ง Dropbox ในสภาพแวดล้อม Linux แบบข้อความทั้งหมด


1
ขออภัยที่กำลังมองหาบางสิ่งเพิ่มเติม 'พื้นฐาน' สนใจวิธีของ mhambra มากขึ้น

2

ยังไม่ได้ลองสิ่งนี้ แต่วิธีการเกี่ยวกับไดเรกทอรีสาธารณะที่สามารถอ่านได้พร้อม FS พื้นที่ผู้ใช้ที่เข้ารหัสไว้ภายใน (ตัวอย่างเช่นการเข้ารหัส) จากนั้นคุณสามารถแชร์รหัสผ่านนั้นกับเพื่อนของคุณและไม่มีใครสามารถใช้ข้อมูลนั้นได้อีก (ฉันเดาได้เลยว่าพวกเขาสามารถรับข้อมูลและเรียกใช้แคร็กเกอร์รหัสผ่านออฟไลน์ได้หรือไม่)


2

ในการให้ Linux เป็น Finesse เช่นเดียวกับ windows ในสิทธิ์ของไฟล์คุณต้องซ้อนกลุ่ม สร้างกลุ่มหนึ่งที่มีการเข้าถึงโฟลเดอร์ของคุณตามที่คุณต้องการให้เพื่อนของคุณมี เพิ่มเขาลงในกลุ่มนั้นหรือกลุ่มที่เขาอยู่ในกลุ่มนั้น ตัวอย่างเช่น

/ foo เป็นโฟลเดอร์ที่คุณต้องการแชร์ สร้างกลุ่ม FooGroup ที่มีการเข้าถึงโฟลเดอร์ที่ต้องการ เพิ่มกลุ่มและผู้ใช้ในกลุ่มนี้ซึ่งคุณต้องการให้มีการเข้าถึงโฟลเดอร์นี้

เป็นปัญหาใหญ่ที่มีกลุ่มสำหรับแต่ละโฟลเดอร์หรือไฟล์ แต่เป็นวิธีที่ดีที่สุดในการ จำกัด การเข้าถึงในระดับเดียวกับ Windows


1

gpgคุณสามารถเข้ารหัสไดเรกทอรีที่มี และจากนั้นพยายามทำให้งงสถานที่เช่นวิธีที่นิกแนะนำ

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