ls: ไม่สามารถเข้าถึง. gvfs: ปฏิเสธการอนุญาต


11

เมื่อใดก็ตามที่ฉันเรียกใช้แอปพลิเคชันในเทอร์มินัลในฐานะรูท (เช่นsudo gedit /etc/default/varnish) จากนั้นเมื่อฉันเปิดเทอร์มินัลอื่นฉันจะได้รับ "ls: ไม่สามารถเข้าถึง. gvfs: สิทธิ์ปฏิเสธ" ข้อผิดพลาดที่บรรทัดบนสุดของเทอร์มินัล

ฉันพบวิธีแก้ปัญหาบนเน็ต

  umount /path/to/.gvfs
  rm -rf .gvfs

แต่จะแก้ไขปัญหาชั่วคราวเท่านั้น

ปรากฏว่าฉันมีสองอินสแตนซ์ที่ติดตั้งของgvfsในระบบของฉัน

  $ sudo mount |grep gvfs
    gvfsd-fuse on /run/user/1000/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,relatime,user_id=1000,group_id=33)
    gvfsd-fuse on /home/****/.gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,relatime,user_id=0,group_id=0)

ฉันไม่รู้ว่ามันเกี่ยวข้องกับเมื่อไม่กี่เดือนที่ผ่านมาฉันต้องเปลี่ยนการอนุญาตในโฟลเดอร์บ้านของฉันเช่น

  sudo chown -R $USER:www-data

คุณช่วยฉันแก้ไขได้ไหม

แก้ไข: หลังจากยกเลิกการต่อเชื่อม/run/user/1000/gvfsฉันไม่ได้รับข้อผิดพลาดนั้น


1
และนั่นเป็นหนึ่งในเหตุผลที่คุณไม่ควรใช้sudoกับโปรแกรมกราฟิก
muru


@muru ขอบคุณสำหรับการเชื่อมโยงมันอธิบายได้ดีว่าทำไมฉันไม่ควรเรียกใช้ sudo เพื่อเปิดโปรแกรมกราฟิก แต่ฉันก็ยังสงสัยว่าทำไมฉันเริ่มได้รับข้อความแสดงข้อผิดพลาดนั้น
kenn

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

1
ฉันสงสัยว่าสถานการณ์นี้อาจไม่เกี่ยวข้องกับการเรียกใช้โปรแกรมกราฟิกด้วย sudoโดยตรง สิทธิ์ / การเข้าถึงผู้ใช้.gvfsโฟลเดอร์ได้เสมอที่น่าสนใจและ (บางส่วนของเรา) น่าแปลกใจ
Eliah Kagan

คำตอบ:


10

sudoบางครั้งการเรียกใช้แอปพลิเคชันกราฟิกอาจทำให้เกิดปัญหาเช่นนี้

คำอธิบาย

sudoรันโปรแกรมด้วยสิทธิ์ superuser (เช่นการทำงานในฐานะรูท) แต่โปรแกรมยังคงเห็นโฮมไดเร็กตอรี่ปัจจุบันเป็นโฮมไดเร็กตอรี่ของคุณ .

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

ทางออกที่ดีที่สุดคืออะไร

gksudoมีทางเลือกคือ

sudo รุ่นนี้จะตั้งค่าตัวแปรสภาพแวดล้อมเช่นโฮมไดเร็กตอรี่ในลักษณะที่ทำให้การรันแอปพลิเคชั่นกราฟิกเป็นรูทที่ปลอดภัยยิ่งขึ้นและจะไม่ทำให้โปรแกรมสับสนในการสร้างไฟล์ที่เป็นเจ้าของรูทในโฮมไดเร็กตอรี่ของคุณ

เหตุใดจึงมีผลต่อแอปพลิเคชันกราฟิก

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

บางครั้งแอปพลิเคชันจะสามารถตรวจพบว่าพวกเขาทำงานด้วย sudo และปรับพฤติกรรมของพวกเขาให้สอดคล้องกัน แต่นี่ไม่ใช่เรื่องปกติสำหรับแอปพลิเคชันกราฟิกซึ่งโดยปกติแล้วไม่คาดว่าจะทำงานกับ sudo

ฉันจะแก้ไขปัญหาได้อย่างไร

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

วิธีค้นหาไฟล์ที่เป็นเจ้าของรูทในโฮมไดเร็กตอรี่ของคุณ:

find ~ -user root

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


ขอบคุณสำหรับคำอธิบาย ฉันจะแก้ไขได้อย่างไร หรือทุกคนมีปัญหาเช่นเดียวกับฉัน
เคนน์

3
โดยใช้gksudoแทนsudoเมื่อรันโปรแกรมกราฟิก
thomasrutter

ดังนั้นจึงไม่มีอะไรผิดปกติในระบบของฉัน
เคนน์

2
ใช่นอกเหนือจากความเป็นไปได้ที่คุณมีไฟล์ที่เป็นเจ้าของรูทในโฮมไดเร็กตอรี่ของคุณที่ไม่ควรเป็นเจ้าของรูท
thomasrutter

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