Score:0

เมานต์ Samba จากบรรทัดคำสั่งว่าไม่ใช่รูท อ่าน/เขียน โดยไม่มี fstab หรือไม่

ธง id

ฉันคิดว่ามันจะง่ายกว่านี้ แต่ฉันไม่สามารถค้นหาว่าสิ่งที่ฉันต้องการจะทำได้หรือไม่

ฉันต้องการเมานต์แชร์เครือข่าย Samba จากบรรทัดคำสั่งใน Ubuntu 20.04 (MATE) - โดยเฉพาะอย่างยิ่งโดยไม่ต้องเปลี่ยนแปลงไฟล์หรือบันทึกการตั้งค่าที่ไหนสักแห่ง เพียงแค่บรรทัดคำสั่ง

ก่อนอื่นฉันลอง:

sudo mount -t cifs -o user=MYSMBUSER //192.0.2.1/myshare /tmp/myshare

วิธีนี้ใช้งานได้ดี - ในแง่ของการติดตั้ง แสดงรายการไฟล์ และให้การเข้าถึงไฟล์แบบอ่านอย่างเดียว แต่ไม่อนุญาตให้เขียนไฟล์ (ปฏิเสธการอนุญาต)

ดูเหมือนว่าเป็นเพราะ:

https://unix.stackexchange.com/questions/68079/mount-cifs-network-drive-write-permissions-and-chown

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

ใช่ ฉันต้องการ "เมานต์การแชร์เครือข่ายในฐานะผู้ใช้ทั่วไป" และนี่อาจดูเหมือนเป็นตัวเลือก - อย่างไรก็ตาม ชื่อผู้ใช้ของฉันบน Ubuntu นั้นแตกต่างจากชื่อผู้ใช้ของ Samba ดังนั้น:

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


ปัญหาแรก - คุณจะยกเลิกการต่อเชื่อมด้านบนได้อย่างไร ฉันได้ทำ:

$ sudo umount /tmp/myshare
$ 

... และเนื่องจากไม่มีรายงานข้อผิดพลาด ฉันถือว่าเสร็จสมบูรณ์ดี แต่ฉันลอง:

$ ls /tmp/myshare
file_from_share01.txt file_from_share02.txt ...

... ไฟล์ยังคงอยู่ในรายการ ดังนั้นจึงติดตั้งการแชร์ ปรากฎว่า (ผ่าน https://stackoverflow.com/questions/74626/how-do-you-force-a-cifs-connection-to-unmount ) เพื่อยกเลิกการต่อเชื่อม ฉันต้องทำ:

$ sudo umount -a -t cifs -l

นี่คือส่วนที่ยุ่งยาก - ถ้าฉันต้องการเมานต์เป็นผู้ใช้ปกติ แต่ยังระบุชื่อผู้ใช้ SMB ฉันจะต้องเขียนคำสั่งเดียวกันกับด้านบน แต่ไม่มี ซูโด:

$ mount -t cifs -o user=MYUSER //192.0.2.1/myshare /tmp/myshare
เมานต์: รูทเท่านั้นที่สามารถใช้ตัวเลือก "--options"

ดังนั้นบางทีฉัน สามารถ ได้รันสิ่งนี้ว่าไม่ใช่รูท ถ้า ฉันไม่ต้องใช้ ผู้ใช้ ตัวเลือก - แต่ฉันทำ ดังนั้นฉันจึงไม่สามารถใช้คำสั่งนี้ได้

คำแนะนำอย่างหนึ่งสำหรับการดำเนินการนี้คือระบุตัวเลือกใน fstab - via เมานต์แชร์โฟลเดอร์ cifs โดยไม่มี sudo :

เพื่อให้สามารถติดตั้งโฟลเดอร์นั้นในฐานะผู้ใช้ทั่วไป ให้รวมตัวเลือกการเมาต์สำหรับโฟลเดอร์ cifs ในไฟล์คอนฟิกูเรชัน /etc/fstab และเพิ่มตัวเลือก noauto,user,

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

ฉันพบว่านี่น่าจะเป็นฟีเจอร์ความปลอดภัยบางอย่าง:

https://unix.stackexchange.com/questions/365308/use-mount-o-with-a-non-root-user

ข้อจำกัด -o (เฉพาะรูทเท่านั้นที่สามารถระบุได้) มีไว้เพื่อป้องกันระบบ: ผู้ดูแลระบบสามารถตั้งค่าตัวเลือกใดก็ได้ที่จำเป็น ไม่ว่าจะใช้ -o โดยตรงหรือใช้ /etc/fstab; ผู้ใช้สามารถทำให้ระบบไฟล์ที่ผู้ใช้ควบคุมได้เท่านั้นถูกเมาต์หรือไม่เมาต์ โดยไม่ต้องระบุอ็อพชัน เนื่องจากอ็อพชันระบบไฟล์อนุญาตให้มีสถานการณ์ที่ไม่เป็นมิตรจำนวนหนึ่งด้วยเหตุนี้ ระบบไฟล์บางระบบจึงรองรับวิธีอื่นๆ ในการตั้งค่าตัวเลือกบางอย่าง เช่น ตัวแปรสภาพแวดล้อม USER ที่ใช้ข้างต้นกับ CIFS

ใช่ แต่สำหรับฉัน การไม่ป้อนเส้นทาง SMB ใด ๆ ปลอดภัยกว่า /etc/fstab เลย

ดังนั้นฉันอยากจะเมาจริงๆ แค่ โดยใช้บรรทัดคำสั่ง ปราศจาก เปลี่ยนไฟล์คอนฟิกูเรชันใดๆ (รวมถึง /etc/fstab) ได้ทุกที่

ฉันหวังว่าจะมีคำสั่งอื่นและฉันพบ gvfs-เมานต์ - แต่ฉันมีปัญหาเดียวกันกับ เมานต์แชร์ SMB กับ gvfs จากบรรทัดคำสั่ง :

$ ทุบตีเปิดตัว dbus
$ gvfs-mount smb://192.0.2.1/myshare
เครื่องมือนี้เลิกใช้แล้ว ใช้ 'gio mount' แทน
ดู 'gio help mount' สำหรับข้อมูลเพิ่มเติม

รหัสผ่านที่จำเป็นสำหรับการแชร์ myshare บน 192.0.2.1
ผู้ใช้ [locuser]: MYUSER
โดเมน [เวิร์กกรุ๊ป]:
รหัสผ่าน:
$

ณ จุดนี้ ดูเหมือนว่าจะติดตั้งแล้ว แต่จริงๆ แล้วไม่ได้:

$ ls /run/user/1000/gvfs/
$

...และทาง gvfs-เมานต์ -lเราจะเห็นว่าไม่มีจุดเชื่อมต่อที่สอดคล้องกัน:

$ gvfs-เมานต์ -l
...
ปริมาณ (3): test_nfs
  ชนิด: GProxyVolume (GProxyVolumeMonitorUDisks2)
  เมานต์ (0): test_nfs -> ไฟล์:///tmp/test_nfs
    ประเภท: GProxyMount (GProxyVolumeMonitorUDisks2)
เมานต์ (0): myshare บน 192.0.2.1 -> smb://192.0.2.1/myshare/
  ประเภท: GDaemonMount

... ดังนั้นเราจึงไม่สามารถเข้าถึงไฟล์ใด ๆ ด้วย "เมานต์" นี้ได้อยู่ดี


อีกครั้ง คุณจะยกเลิกการต่อเชื่อมสิ่งนี้ได้อย่างไร - คุณไม่สามารถทำได้ umount /tmp/myshareไม่ถือว่าติดตั้งด้วยซ้ำ พบว่าที่นี่ ยกเลิกการต่อเชื่อม gvfs samba ที่ใช้ร่วมกันกับไฟล์ที่เปิดอยู่ :

$ ls ~/.gvfs
ls: ไม่สามารถเข้าถึง '~/.gvfs': ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว

$ gvfs-mount -u smb://192.0.2.1/myshare
เครื่องมือนี้เลิกใช้แล้ว ใช้ 'gio mount' แทน
ดู 'gio help mount' สำหรับข้อมูลเพิ่มเติม

หลังจากนี้ตรวจสอบกับ gvfs-เมานต์ -l ยืนยันว่าหมดจริง)


และขอกล่าวถึง จิโอเมาท์ - โปรดทราบว่าหากไม่เปิดใช้ dbus-session จะล้มเหลวด้วย:

$ gio เมานต์ smb://192.0.2.1
gio: smb://192.0.2.1: วอลุ่มไม่ได้ใช้เมานต์

...จากนั้นภายในเชลล์เริ่มต้นโดย ทุบตี dbus-launchมันทำงานเหมือนกันทุกประการ gvfs-เมานต์:

$ gio เมานต์ smb://192.0.2.1/myshare
รหัสผ่านที่จำเป็นสำหรับการแชร์ myshare บน 192.0.2.1
ผู้ใช้ [locuser]: MYUSER
โดเมน [เวิร์กกรุ๊ป]:
รหัสผ่าน:
$

ดูเหมือนว่าจะติดตั้ง แต่:

$ gio เมาท์ -l
...
ปริมาณ (3): test_nfs
  ชนิด: GProxyVolume (GProxyVolumeMonitorUDisks2)
  เมานต์ (0): test_nfs -> ไฟล์:///tmp/test_nfs
    ประเภท: GProxyMount (GProxyVolumeMonitorUDisks2)
เมานต์ (0): myshare บน 192.0.2.1 -> smb://192.0.2.1/myshare/
  ประเภท: GDaemonMount

... อีกครั้งไม่มีจุดเมานต์ไดเร็กทอรีในเครื่อง


ที่กล่าวมาข้างต้น: เป็นไปได้หรือไม่ที่จะเมานต์การแชร์ SMB จากบรรทัดคำสั่ง โดยไม่ต้องเปลี่ยนไฟล์ในเครื่องใดๆ (เช่น และโดยเฉพาะอย่างยิ่ง /etc/fstab) โดยไม่มี sudo และมีสิทธิ์ r/w (ซึ่งฉันได้ยืนยันใน Windows แล้ว ผู้ใช้ SMB MYUSER มี) - และถ้าเป็นเช่นนั้น จะทำอย่างไร

Score:0
ธง id

โพสต์สิ่งนี้เป็นคำตอบเนื่องจากปรากฎว่าบางส่วน gvf/จิโอ เห็นได้ชัดว่าคำสั่งใช้งานได้ - ฉันไม่ได้ดูโฟลเดอร์เมานต์ที่ถูกต้อง เห็นได้ชัดว่าใน Ubuntu 20.04 ของฉันไม่ใช่:

$ ls ~/.gvfs
ls: ไม่สามารถเข้าถึง '~/.gvfs': ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว

... แต่แทนที่จะ:

$ ls ~/.cache/gvfs/
'smb-share:server=192.0.2.1,share=myshare'

... และไฟล์อยู่ที่นั่น และฉันสามารถอ่าน/เขียนได้ ... ตอนนี้ฉันสงสัยว่ามันยังอยู่ที่นั่นได้อย่างไร เพราะฉันคิดว่าฉันถอดมันออกแล้ว ... อืม

ฉันมีความสุขหลังจากการพัฒนามาหลายทศวรรษ การแบ่งปันไฟล์เป็นเรื่องง่ายมากในปัจจุบัน! และรอคอยการเปลี่ยนแปลงต่อไป หวังว่าเราจะได้เห็นกัน ~/.cache/.etc/gvfs-2/ ในการใช้งาน ดังนั้นเราจึงได้คำตอบที่ไร้ประโยชน์มากขึ้นไปอีก ซึ่งเราจะต้องใช้เวลาหลายชั่วโมงในการลากอวนในอนาคต! การพัฒนาเทคโนโลยีนั้นยอดเยี่ยมไม่ใช่หรือ :)

Score:0
ธง es

จุดเชื่อมต่อไม่ได้อยู่ภายใต้ ~/.cache/gvfs/ มันอยู่ภายใต้ /run/user/1000/gvfs

แทนที่ 1,000 ด้วยหมายเลข uid ของคุณเอง

ฉันจะติดตั้งหนึ่งในหุ้นของฉันเอง:

~$ ติดตั้ง gio smb://vubmate2004.local/Private
รหัสผ่านที่จำเป็นสำหรับการแบ่งปันส่วนตัวบน vubmate2004.local
ผู้ใช้ [ผู้ทดสอบ]: ผู้ทดสอบ
โดเมน [เวิร์กกรุ๊ป]: 
รหัสผ่าน: 

ฉันจะตรวจสอบว่าติดตั้งอยู่หรือไม่:

~$ ls -al /run/user/1000/gvfs
รวม 0
dr-x------ 3 เทสเตอร์ tester 0 5 ม.ค. 15:08 น.
drwx------ 10 ผู้ทดสอบ ผู้ทดสอบ 300 5 ม.ค. 15:13 น. ..
drwx------ 1 ผู้ทดสอบ ผู้ทดสอบ 0 5 ม.ค. 15:14 'smb-share:server=vubmate2004.local,share=private'

ฉันจะตรวจสอบเนื้อหาของการแชร์ที่เมาท์:

~$ ls -al /run/user/1000/gvfs/smb-share:server=vubmate2004.local,share=private
รวม 0
drwx------ 1 ผู้ทดสอบ ผู้ทดสอบ 0 5 ม.ค. 15:14 น.
dr-x------ 3 เทสเตอร์ เทสเตอร์ 0 5 ม.ค. 15:08 น. ..
-rwx------ 1 ผู้ทดสอบ ผู้ทดสอบ 0 5 ม.ค. 15:14 'ไฟล์ใหม่'

ฉันจะยกเลิกการต่อเชื่อมการแบ่งปัน:

~$ ติดตั้ง gio -u smb://vubmate2004.local/Private

ฉันจะตรวจสอบว่ายังติดตั้งอยู่หรือไม่:

~$ ls -al /run/user/1000/gvfs
รวม 0
dr-x------ 2 เทสเตอร์ เทสเตอร์ 0 5 ม.ค. 15:08 .
drwx------ 10 ผู้ทดสอบ ผู้ทดสอบ 300 5 ม.ค. 15:13 น. ..

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา