ฉันจะเมานต์แบ่งปัน CIFS ผ่าน FSTAB และมอบ RW แบบเต็มให้แก่ผู้เยี่ยมชมได้อย่างไร


33

ฉันต้องการสร้างโฟลเดอร์สาธารณะที่มีการเข้าถึง RW เต็มรูปแบบ ปัญหากับการกำหนดค่าของฉันคือผู้ใช้ Windows ไม่มีปัญหาในฐานะแขก (พวกเขาสามารถ RW และลบ), ลูกค้า Ubuntu ของฉันไม่สามารถทำเช่นเดียวกัน เราสามารถเขียนและอ่านเท่านั้น แต่ไม่สามารถสร้างหรือลบได้

นี่คือ smb.conf ของฉันจากเซิร์ฟเวอร์ของฉัน:

[global]
    workgroup = WORKGROUP
    netbios name = FILESERVER
    server string = TurnKey FileServer

    os level = 20
    security = user
    map to guest = Bad Password
    passdb backend = tdbsam
    null passwords = yes

    admin users = root
    encrypt passwords = true
    obey pam restrictions = yes
    pam password change = yes
    unix password sync = yes
    passwd program = /usr/bin/passwd %u
    passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .

    add user script = /usr/sbin/useradd -m '%u' -g users -G users
    delete user script = /usr/sbin/userdel -r '%u'
    add group script = /usr/sbin/groupadd '%g'
    delete group script = /usr/sbin/groupdel '%g'
    add user to group script = /usr/sbin/usermod -G '%g' '%u'

    guest account = nobody

    syslog = 0
    log file = /var/log/samba/samba.log
    max log size = 1000

    wins support = yes
    dns proxy = no

    socket options = TCP_NODELAY
    panic action = /usr/share/samba/panic-action %d


[homes]
    comment = Home Directory
    browseable = no
    read only = no
    valid users = %S

[storage]
    create mask = 0777
    directory mask = 0777
    browseable = yes
    comment = Public Share
    writeable = yes
    public = yes
    path = /srv/storage

รายการ FSTAB ต่อไปนี้ไม่ได้ให้สิทธิ์การเข้าถึง R / W ทั้งหมดสำหรับการแบ่งปัน

//192.168.0.5/storage /media/myname/TK-Public/ cifs rw 0 0

มันไม่ทำงานเหมือนกัน

//192.168.0.5/storage /media/myname/TK-Public/ cifs rw,guest,iocharset=utf8,file_mode=0777,dir_mode=0777,noperm 0 0

การใช้ตำแหน่งต่อไปนี้ใน Nemo / Nautilus โดยที่ไม่ต้องแชร์ที่เมาท์จะทำงาน:

smb://192.168.0.5/storage/

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

ป้อนคำอธิบายรูปภาพที่นี่

ผมทำอะไรผิดหรือเปล่า?


ดังนั้นให้ฉันดู: คุณสามารถติดตั้งส่วนแบ่งจากไคลเอนต์ Ubuntu ของคุณ (ในฐานะที่เป็นรากที่ฉันคิดว่าได้รับรายการ fstab ของคุณ) จากนั้นคุณสามารถอ่านและเขียน แต่คุณไม่สามารถลบหรือสร้าง? ทำไมคุณถึงสามารถคัดลอก (สำหรับการคัดลอกการสร้างไฟล์เป็นสิ่งที่จำเป็น)
มกราคม

คำตอบ:


56

ปรากฎว่าฉันต้องเพิ่ม UID ท้องถิ่น (ไคลเอนต์) ไปยังสายเชื่อมต่อใน FSTAB เพื่อให้งานนี้ ฉันมาถึงที่นี่ด้วยกำลังดุร้าย:

//192.168.0.5/storage /media/myname/TK-Public/ cifs guest,uid=myuser,iocharset=utf8,file_mode=0777,dir_mode=0777,noperm 0 0

3
ปัญหาที่พบบ่อยและไม่มีคำตอบเลย ... น่าทึ่ง!
dan3

โอ้โหสิ่งที่ฉันต้องการ ... ขอบคุณมาก - มองหาสิ่งนี้เป็นเวลาหลายชั่วโมง!
pkdkk

1
gotcha อื่น: ตรวจสอบให้แน่ใจว่าcifs-utilsได้ติดตั้งแล้ว (สำหรับฉันมันไม่ได้ติดตั้งต่ำกว่า 16.04 หลังจากติดตั้ง "main" samba pkg) หากคุณยังไม่ได้ติดตั้งคุณจะได้รับข้อผิดพลาด 'ตัวเลือก fs / ตัวเลือกที่ไม่ดี'
bshea

หลังจากที่ผมติดตั้งที่ผมใช้ perms ในคำตอบอื่น ๆ และเพิ่ม: //10.20.30.40/share/mysharedir /mnt/mymountpoint cifs guest,uid=nobody,iocharset=utf8,noperm 0 0 ไปแล้ว/etc/fstab sudo mount -aดูเหมือนว่าจะเมานต์ / เขียนได้ดีในขณะนี้
bshea

สำหรับฉันแล้วรุ่นที่เรียบง่ายกว่าเล็กน้อย (ไม่มี uid) ทำงานเพื่อเมานต์ R / W อย่างถูกต้องสำหรับผู้ใช้ทุกคนที่แบ่งปันสาธารณะจากเครื่องอื่นของ linux://server_name/share_name /media/local_mountpoint cifs guest,iocharset=utf8,file_mode=0777,dir_mode=0777,noperm 0 0
woohoo

6

โดยทั่วไปแล้ว CIFS จะไม่มีแนวคิดของผู้ใช้และกลุ่มดังนั้นการติดตั้งการแชร์ cifs จะเริ่มต้นด้วยการแสดงผู้ใช้และกลุ่มเป็น 'ไม่มีใคร':

drwxdrwxdrwx. 3 nobody nobody 0 Sep 29 09:00 .
drwxdrwxdrwx. 9 nobody nobody 0 Sep 29 09:00 ..

เนื่องจากคุณไม่ใช่ 'ไม่มีใคร' Linux จะไม่ยอมให้คุณเขียนอะไรที่ไม่มีสิทธิ์ 0777 เว้นแต่คุณจะใช้ sudo ในการแก้ไขปัญหานี้ให้เพิ่ม uid = mylogin, gid = mygroup ไปยัง fstab และจะทำให้การแบ่งปันปรากฏราวกับว่าเป็นไดเรกทอรีของคุณเอง:

drwxdrwxdrwx. 3 mylogin mygroup 0 Sep 29 09:00 .
drwxdrwxdrwx. 9 mylogin mygroup 0 Sep 29 09:00 ..

ตอนนี้คุณสามารถควบคุมได้อย่างเต็มที่โดยไม่ต้องใช้ sudo

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


1
ใช่ถ้าใช้แขก / ไม่มีใคร / ฯลฯ ตรวจสอบให้แน่ใจว่าโฟลเดอร์หลักมีการอ่าน / เขียน / เรียกใช้อย่างเต็มรูปแบบ ฉันใช้สิทธิ์นี้กับการแชร์เครือข่ายภายใน - ดังนั้นจึงไม่ใช่ปัญหาด้านความปลอดภัย upvoted
bshea

แต่ตรงกันข้ามกับโพสต์ของคุณ - ฉันสามารถใช้หมายเลขผู้ใช้ (ไม่มี) (สำหรับการติดตั้ง) เมื่อมีตัวเลือกที่ถูกต้องสำหรับการติดตั้ง ดูความคิดเห็นอื่น ๆ ของฉัน ..
bshea

นี่เป็นวิธีที่ดีกว่าการตั้งค่าการอนุญาตที่กว้างขวางสำหรับทุกคนในไฟล์ที่เมาท์ และมันใช้งานได้
j08lue

5

คุณเกือบจะอยู่ที่นั่นแล้ว เปิด FSTAB โดยใช้:

sudo nano /etc/fstab

ในบรรทัดสุดท้าย (หรือบนบรรทัดสุดท้าย) วาง:

//192.168.0.5/storage /media/myname/TK-Public/ cifs username=YOURUSERNAME,password=YOURPASSWORD,iocharset=utf8,file_mode=0777,dir_mode=0777

*** (นี่คือหนึ่งบรรทัดยาวทั้งหมด)

Ctrl- Xเพื่อปิดYเพื่อบันทึกและป้อนเพื่อปิดการจัดการ

รีบูตโดย:

sudo reboot

และคุณควรมีการควบคุมเครือข่ายแชร์บนอุปกรณ์ Linux ของคุณอย่างเต็มที่!


1
คุณอาจต้องการแทนที่รหัสผ่านด้วยรหัสผ่านตัวอย่าง
ปอตไลต์

9
หนึ่งไม่จำเป็นต้องรีบูตเพื่อติดตั้งfstabรายการ เพียงmount <DEVICE>หรือmount <MOUNTPOINT>หรือแม้กระทั่งmount -aทำงานได้ดี
David Foerster

1

ฉันมีปัญหานี้และเป็นเพราะผู้ใช้การแชร์ไม่ได้เป็นเจ้าของ ฉันแก้ไขด้วย "sudo chown {ชื่อผู้ใช้}: {ชื่อผู้ใช้} / {share} / {เส้นทาง}" หลังจากนั้นฉันสามารถย้ายและลบไฟล์ได้

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