ฉันจะตั้งค่าโฟลเดอร์อย่างไรเพื่อให้สิ่งที่สร้างขึ้นในนั้นได้รับอนุญาต


18

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

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


สำหรับผู้เยี่ยมชม chmod -R g+s /parentdirถ้าคุณเพียงต้องการชื่อกลุ่มจะได้รับมรดก หมายเหตุ: เรียกใช้chmod -R ก่อนหน้านี้หากจำเป็น
Thamme Gowda

1
หมายเหตุด้านบน: การ-Rตั้งค่าสถานะให้chmodมีประโยชน์น้อยมากเพราะเราไม่ค่อยต้องการไดเรกทอรี (ซึ่งต้องมีสิทธิ์ในการเรียกใช้งานบางอย่าง) และไฟล์ปกติ (ซึ่งไม่ค่อยต้องการสิทธิ์ในการเรียกใช้งานใด ๆ ) เพื่อให้ได้รับอนุญาตแบบเดียวกัน
Zanna

คำตอบ:


17

อีกวิธีหนึ่งคือการใช้ Access Control Lists ซึ่งเป็นชุดของสิทธิ์การใช้ไฟล์

ก่อนอื่นเราต้องติดตั้งแพ็คเกจacl ติดตั้ง acl :

sudo apt-get install acl

ก่อน Ubuntu 14.04พาร์ติชั่นจะต้องทำการเมาท์พร้อมตัวเลือกaclสำหรับการทำงานต่อไปนี้ สามารถเพิ่ม/etc/fstabได้เช่นเดียวกับใน

UUID=<XXXX>  /media/shared  ext4  noatime,acl  0  2

หรือสำหรับระบบไฟล์ที่เมาท์แล้ว

sudo mount -o remount,acl /media/shared

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

sudo addgroup usershare

ตอนนี้เราเพิ่มผู้ใช้enzotibและsteevcกลุ่ม:

sudo gpasswd -a steevc  usershare
sudo gpasswd -a enzotib usershare

(มีผลในการเข้าสู่ระบบครั้งต่อไป)

จากนั้นเราเพิ่ม ACL ที่มีrwxสิทธิ์สำหรับกลุ่มusershareไปยังไฟล์ทั้งหมดที่มีอยู่แล้ว/media/shared

sudo setfacl -Rm g:usershare:rwX /media/shared

ในที่สุดเราก็เพิ่ม ACL เริ่มต้นพร้อมrwxสิทธิ์สำหรับกลุ่มusershareสำหรับไฟล์ทั้งหมดที่สร้างขึ้นจากนี้ไปข้างใน/media/shared

sudo setfacl -d -Rm g:usershare:rwX /media/shared

ขณะนี้ผู้ใช้ทั้งหมดของกลุ่มมีสิทธิ์เต็มรูปแบบในไฟล์ทั้งหมดภายใต้usershare /media/sharedสิทธิ์ของผู้ใช้แต่ละรายในโฮมไดเร็กตอรี่ของเขาและของผู้อื่นจะไม่ได้รับผลกระทบ

ฉันทดสอบโซลูชันนี้และดูเหมือนว่าจะใช้งานได้ แต่ยินดีให้คำแนะนำและการแก้ไข

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


ฉันไม่รู้ acl เป็นอย่างดีคุณสามารถทดสอบและคัดลอกไฟล์ที่มีสิทธิ์เช่น rw-r - r-- จากโฟลเดอร์บ้านของคุณไปยังโฟลเดอร์ที่แชร์และดูว่าการอนุญาตเปลี่ยนเป็น rwx เริ่มต้นของusershareกลุ่มหรือไม่
จัดการ

@ จัดเรียง: ไม่มันไม่ทำงานตามที่ตั้งใจไว้ จะชี้ให้เห็นในคำตอบ ขอบคุณ
enzotib

ฉันจะเพิ่มที่/etc/fstab/ remountขั้นตอนไม่จำเป็นเพราะext4ควรจะติดตั้งด้วยaclตัวเลือกที่ใช้งานโดยค่าเริ่มต้น
enzotib

8
  1. สร้างโฟลเดอร์

    ตัวอย่างเช่น:

    mkdir /mnt/family
    

    หากคุณต้องการติดตั้งพาร์ทิชันกับพวกเขา ... ถ้า ext4 ทั้งหมดที่คุณต้องการ/etc/fstabคือ

    UUID=xxx    /mnt/family ext4    **rw,exec,defaults,auto,async   0   2**
    
  2. สร้างกลุ่ม myfam

    addgroup myfam
    
  3. เพิ่มผู้ใช้บางคนในกลุ่มนั้น

    adduser papa myfam  
    adduser mom myfam
    
  4. ตอนนี้รับและอนุญาต

    umaskฉันคิดว่าคุณควรจะเริ่มต้นจากการเปลี่ยน

    สิทธิ์ระบบไฟล์เริ่มต้นและสิทธิ์การเข้าถึงใน 12.04

    chown -R you.myfam /mnt/family  
    chmod -R g+rwx /mnt/family  
    

    ตอนนี้สำคัญที่สุด บรรทัดที่สร้างสิ่งที่คุณสร้างภายใต้โฟลเดอร์ที่มีผู้ใช้ของคุณในฐานะเจ้าของและกลุ่มsetgid myfamที่ให้ระบบแทนที่กลุ่มผู้ใช้หลัก

    chmod -R g+s /mnt/family   
    

3

สิ่งที่ง่ายที่สุดที่นึกถึงคือการเพิ่มผู้ใช้แต่ละคนไปยังกลุ่มผู้ใช้อื่นทั้งหมด

แล้วเปลี่ยน umask ของผู้ใช้ 022-002 /etc/profileแต่ละนี้สามารถทำได้ใน

แก้ไข

ขั้นตอนแรกสามารถถูกแทนที่ด้วยสิ่งต่อไปนี้: ทำให้ผู้ใช้ทั้งหมดอยู่ในusersกลุ่มเป็นกลุ่มหลัก

Edi2

ตามที่ @James_Henstridge แนะนำสามารถตั้งค่าบิต setgid ในไดเรกทอรีหลักได้อย่างสะดวกดังนั้นไฟล์และไดเรกทอรีใหม่ที่สร้างขึ้นจะมีกลุ่มเดียวกันโดยไม่ขึ้นกับผู้ใช้ ด้วยวิธีนี้คุณสามารถหลีกเลี่ยงการตั้งค่าusersเป็นกลุ่มหลักสำหรับผู้ใช้


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

edit3 :) หากคุณคัดลอกไฟล์ไปยัง/dataโฟลเดอร์สิทธิ์จะไม่ได้รับการสืบทอดดังนั้นไฟล์เก่าที่มีสิทธิ์ gw จะไม่สามารถแก้ไขได้โดยผู้อื่น edit4: การตั้งค่าusersเป็นกลุ่มหลักของคุณและumask0002 นั้นไม่ใช่ความคิดที่ดีเพราะทุกคนในกลุ่มนั้นจะสามารถแก้ไขไฟล์ใด ๆ ที่คุณสร้างขึ้นใหม่ได้
จัดการ

@arrange: เกี่ยวกับ edit4 ของคุณฉันแนะนำให้ใส่ในusersกลุ่มเฉพาะผู้ใช้ที่ได้รับอนุญาตให้เข้าถึงการแบ่งปัน rw มันเป็นเรื่องของความสะดวกสบายมันสามารถสร้างกลุ่มอื่นขึ้นมาได้ เกี่ยวกับการแก้ไข 3 ของคุณมันไม่ถูกต้องคัดลอกไฟล์ได้รับกลุ่มโฟลเดอร์
enzotib

@enzotib: เพื่อย้ำจุดของฉันในคำอื่น ๆ : edit4 - ถ้าusersเป็นกลุ่มหลักของฉันและมีผู้ใช้มากขึ้นในกลุ่มนี้พวกเขาจะสามารถแก้ไขไฟล์ของฉันแม้จะอยู่นอกไดเรกทอรีที่ใช้ร่วมกัน; แก้ไข 3 - ฉันเขียนการอนุญาตไม่ใช่กลุ่มโฟลเดอร์
จัดการ

@ จัดเรียง: จุดของคุณถูกต้องฉันเพิ่งเขียนคำตอบอีกอาจจะน่าสนใจที่จะได้ยินความคิดเห็นของคุณ
enzotib

2

ดูเหมือนว่างานสำหรับ ACL ไจล์มีคำตอบอย่างละเอียดมากเกี่ยวกับไซต์ SE Unix และ Linuxที่ช่วยฉันแก้ปัญหาเดียวกันนี้


1
นั่นได้ผล! ฉันเห็นคำตอบอื่น ๆ โดยใช้ ACL แต่นี่เป็นคำตอบเดียวที่ฉันเห็นว่าการเปลี่ยนแปลงการอนุญาตไม่เพียง แต่ไฟล์และไดเรกทอรีใหม่ที่สร้างขึ้นในไดเรกทอรีที่ใช้ร่วมกัน แต่ยังรวมถึงสิ่งที่คัดลอกหรือย้ายเข้ามา
ダンボー

0

ฉันไม่เข้าใจเลยว่าทั้งหมดคือ linux-linux, linux-windows, linux - ???, ใช้ Samba หรือไม่, SSH?, Pigeons?; อย่างไรก็ตามคุณต้องรวมคนอื่น ๆ ในกลุ่มด้วยชื่อผู้ใช้ของคุณ (กลุ่มของคุณ) และพวกเขาจะได้รับสิทธิ์เช่นเดียวกับคุณ


นี่คือผู้ใช้หลายคนบนพีซีเครื่องเดียว ฉันแน่ใจว่าต้องมีวิธีที่จะได้รับสิทธิ์ในการเริ่มต้นสิ่งที่มีประโยชน์
steevc

0

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

ดังนั้นฉันจึงใส่ใจที่จะตอบ

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

ฉันมีเซิร์ฟเวอร์เอนกประสงค์บน lan ของฉันซึ่งใช้ ubuntu 12.04 LTS Desktop Edition ฉันมีเครื่องไคลเอนต์แบบผสมของ linux และ windows

นี่เป็นวิธีที่ฉันตั้งขึ้น:

1. บนเซิร์ฟเวอร์ของฉันฉันมีบัญชีผู้ใช้ชื่อadminและclientone

adminบัญชีเป็นบัญชีที่สร้างขึ้นเมื่อติดตั้งอูบุนตูและclientoneบัญชีเป็นบัญชีที่สร้างขึ้นโดยใช้บัญชีผู้ใช้คลิกที่เมนูในอูบุนตู มีสิทธิ์มาตรฐานเท่านั้นไม่มีผู้ดูแลระบบระดับสูงและเพิ่มลงในusersกลุ่ม แน่นอนว่าคุณสามารถทำได้โดยใช้เพียงเครื่องเทอร์มินัล เพิ่มบัญชีผู้ใช้เพิ่มเติมสำหรับเครื่องไคลเอ็นต์ของคุณ

2. พาร์ติชั่น / โฟลเดอร์แชร์ถูกติดตั้งอัตโนมัติใน fstab โดยใช้ตัวเลือกค่าเริ่มต้นเท่านั้น

3. เครือข่ายของฉันอยู่ในสภาพแวดล้อมเวิร์กกรุ๊ปและอยู่ในmylanเวิร์กกรุ๊ป

เครื่องทั้งหมดใน lan ของฉันถูกตั้งค่าให้ใช้ mylanเวิร์กกรุ๊ป

4. โฟลเดอร์ที่แชร์ของฉันชื่อsharedมีไฟล์อยู่แล้ว ดังนั้นฉันจึงเปลี่ยนเจ้าของและกลุ่มเพื่อใช้คำสั่งด้านล่างซ้ำ

 sudo chown -Rv admin:users /shared

5. ฉันยังตั้งค่าโฟลเดอร์และไฟล์อนุญาตไปยัง/sharedโฟลเดอร์ซ้ำโดยใช้คำสั่ง

 sudo chmod -Rv 750 /shared

เครื่องของแขกในmylanเวิร์กกรุ๊ปของฉันไม่สามารถเข้าถึงส่วนแบ่งโดยใช้ chmod 750

คุณอาจใช้

 sudo chmod -Rv 755 /shared

บัญชีผู้ใช้ในอนาคตทั้งหมดภายในusersกลุ่มมีสิทธิ์อ่านเพื่อดำเนินการเท่านั้น

6.In เครื่องลูกค้าคนหนึ่งของฉัน (Windows XP) clientoneผมตั้งค่าบัญชีผู้ใช้ที่ชื่อ ชื่อผู้ใช้และรหัสผ่านเดียวกันกับที่สร้างในเซิร์ฟเวอร์อูบุนตูของฉัน บัญชีที่สองที่ชื่อว่าclienttwoถูกสร้างขึ้นในเซิร์ฟเวอร์ ubuntu และเป็นบัญชีผู้ใช้เดียวกับที่ใช้ในเครื่องที่สองของฉัน (linuxmint 15)

7. ในเครื่องไคลเอนต์ของฉันเมื่อเข้าสู่ระบบโดยใช้clientoneบัญชีฉันไปเรียกใช้คำสั่งแล้วป้อน

 //192.168.10.254/shared

192.168.10.254เป็นที่อยู่ ip ของเซิร์ฟเวอร์ ubuntu ของฉัน/sharedเป็นโฟลเดอร์ที่แชร์ในเซิร์ฟเวอร์ ubuntu ของฉันในเครื่องไคลเอนต์ของฉันสอง (linuxmint 15) ฉันไปที่เมนู> เครือข่ายและในตำแหน่ง: แถบโต้ตอบที่ฉันพิมพ์ใน:

 smb://192.168.10.254/shared

หากคุณถูกถามให้ใส่รหัสผ่านให้ป้อนรหัสผ่านของผู้ใช้ของคุณ และรหัสผ่านพวงกุญแจของคุณหากเปิดใช้งาน KEYRING ในเครื่อง Linux ของคุณ

อันนี้ใช้ได้สำหรับฉันในการตั้งค่าเครือข่ายของฉันเอง เซิร์ฟเวอร์ของฉันเป็นเซิร์ฟเวอร์เอนกประสงค์ที่ทำหน้าที่เป็นเซิร์ฟเวอร์ squid, เซิร์ฟเวอร์ xbmc และ mediatomb และเซิร์ฟเวอร์ amahi

ฉันยังคงมองหาวิธีปรับปรุงส่วนการแชร์ไฟล์ในการตั้งค่าของฉัน คำแนะนำข้างต้นไม่ได้เป็นวิธีแก้ปัญหากระสุน, ซื้อคุณอาจลอง ฉันทดสอบและลองใช้ ACL” ร่วมกับการติดตั้งโฟลเดอร์แชร์อัตโนมัติ เมื่อข้อกำหนดการแชร์โฟลเดอร์ของคุณซับซ้อนคำแนะนำข้างต้นจะไม่รับประกันความสำเร็จของคุณ

เพิ่มข้อมูล:

ฉันติดตั้งเซิร์ฟเวอร์ Amahi ในเซิร์ฟเวอร์แล้วฉันยังใช้เพื่อสร้างบัญชีผู้ใช้ที่ฉันต้องการเข้าถึงโฟลเดอร์ที่แชร์ ฉันยังใช้เพื่อสร้างการแชร์โฟลเดอร์ใหม่

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


0

ฉันมีไฟล์วิดีโอในชื่อของฉัน แต่เมื่อฉันลงชื่อเข้าใช้ด้วยลูกสาวของฉันชื่อบัญชีของเธอไม่สามารถดูไฟล์วิดีโอได้ ดังนั้นสิ่งที่ฉันทำก็คือไปที่บัญชีผู้ใช้ปลดล็อค (บนขวา) จากนั้นเปลี่ยนประเภทบัญชีของเธอจาก "มาตรฐาน" เป็น "ผู้ดูแลระบบ (ซึ่งเป็นที่บัญชีของฉัน) และตอนนี้ทุกไฟล์วิดีโอทุกอย่างปรากฏขึ้นจริง ๆ เมื่อเข้าสู่ระบบภายใต้บัญชีของเธอ

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