ไม่สามารถเข้าถึง "git / attributes"


95

คำเตือนremote: warning: unable to access '/root/.config/git/attributes': Permission deniedหมายถึงอะไรและมีผลกระทบอะไรบ้าง?

$git clone git://git.eclipse.org/gitroot/egit/egit.git
Cloning into 'egit'...
remote: warning: unable to access '/root/.config/git/attributes': Permission denied
remote: Counting objects: 57926, done.
remote: Compressing objects: 100% (11872/11872), done.
remote: Total 57926 (delta 30734), reused 56308 (delta 29136)
Receiving objects: 100% (57926/57926), 32.29 MiB | 1021 KiB/s, done.
Resolving deltas: 100% (30734/30734), done.
Checking out files: 100% (1483/1483), done.

ฉันควรรายงานปัญหาโครงสร้างพื้นฐานที่อาจเกิดขึ้นกับผู้ให้บริการโฮสต์หรือไม่


คุณสามารถแก้ไขปัญหานี้ได้หรือไม่?
. 無

@mu 無ไม่ฉันลังเลที่จะรายงานข้อบกพร่องในการโฮสต์เกี่ยวกับเรื่องนี้เนื่องจากฉันยังไม่มีคำตอบที่ชัดเจน
Basilevs

คำตอบ:


198

ฉันเจอสถานการณ์นี้ด้วยตัวเอง หลังจากการตรวจสอบว่ามันถูกมองในผมสังเกตเห็นเจ้าของโฟลเดอร์ว่าเป็น~/.config/ rootฉันเปลี่ยนเป็นmy_user_nameและใช้งานได้

cd ~/
ls -al
<Noticed .config was owned by root, unlike everything else in $HOME>
sudo chown -R $(whoami) .config

ช่วยให้ทราบสาเหตุด้วยเช่นกัน: ไดเร็กทอรีนี้สร้างขึ้นในครั้งแรกที่คุณเรียกใช้โปรแกรมที่ใช้งาน หากคำสั่งรันเป็นrootจะทำให้เกิดปัญหาสิทธิ์นี้

ตัวอย่างเช่นถ้า~/.configไดเรกทอรียังไม่มีและคุณเรียกsudo htopไดเรกทอรี~/.configและจะถูกสร้างขึ้นและเป็นเจ้าของโดย~/.config/htop rootหลังจากนั้นคำสั่ง git ทั่วไปจะไม่สามารถเข้าถึงได้~/.configและจะให้คำเตือนข้างต้น (เครดิต: ผู้ใช้ mehtunguh)

-Rตัวเลือกที่มีchownคือการปรับเปลี่ยนสิทธิ์ซ้ำ สิ่งนี้จะช่วยได้หากคุณมีโฟลเดอร์ย่อยภายใต้~/.config


6
ที่ช่วยฉันในขณะที่ใช้ linux command line ใน windows 10 - ขอบคุณ!
lukaszkups

1
นี่เป็นตัวช่วยประหยัดเวลาที่ยอดเยี่ยม
Prithvi Raj Vuppalapati

7
ช่วยให้ทราบสาเหตุด้วยเช่นกัน - ไดเร็กทอรีนี้สร้างขึ้นในครั้งแรกที่คุณเรียกใช้โปรแกรมที่ใช้มัน หากคำสั่งถูกเรียกใช้ในฐานะ root จะทำให้เกิดปัญหาสิทธิ์นี้ ตัวอย่างเช่นหากยัง~/.configไม่มีไดเร็กทอรีและคุณเรียกใช้sudo htopไดเร็กทอรี~/.configและ~/.config/htopจะถูกสร้างและเป็นเจ้าของโดย root จากนั้นgitคำสั่งปกติจะไม่สามารถเข้าถึงได้~/.configและจะให้คำเตือนนี้
mehtunguh

1
@mehtunguh โปรดพิจารณาเพิ่มสิ่งนี้ในคำตอบของฉัน! นี่เป็นข้อมูลที่มีค่าที่ต้องแน่ใจ
BlackVegetable

@mehtunguh ฉันได้เพิ่มข้อมูลเชิงลึกของคุณในคำตอบนี้ ขอขอบคุณอีกครั้ง.
BlackVegetable

9

ฉันคิดว่าHOMEตัวแปรสภาพแวดล้อมของคุณตั้งค่าไม่ถูกต้อง

จากด้ายกลุ่ม Google ,

ตัวแปรสภาพแวดล้อม HOME ถูกตั้งค่าเพื่อ/rootให้ตรวจสอบ/root/.gitconfigหรือ/root/.config/git/configเนื่องจากผู้ใช้ที่ไม่มีสิทธิ์เข้าถึง/rootจึงเกิดข้อผิดพลาด

ดังนั้นวิธีแก้ปัญหาคือให้ฉันตั้งค่า HOME env เป็นไดเรกทอรี HOME ของผู้ใช้


2

Git พยายามอ่าน config จาก root แทน user config โปรดตรวจสอบว่าตัวแปรสภาพแวดล้อมของคุณมีชุดการกำหนดค่า git ที่ถูกต้องหรือไฟล์. gitconfig ในโฟลเดอร์บ้านของคุณสามารถเข้าถึงได้


มีปัญหาที่อาจเกิดขึ้นจากสิ่งนี้หรือไม่?
Basilevs

2

ไปที่ไดเรกทอรีราก

cd ~/

เขียนรหัสต่อไปนี้:

sudo chown -R username /Users/username

โดยชื่อผู้ใช้คือชื่อผู้ใช้ของระบบของคุณ


คำตอบสำหรับ "ฉันควรเปลี่ยนการเป็นเจ้าของโฟลเดอร์. config ที่อยู่ในโฮมไดเร็กทอรีของตัวเองหรือไม่" นั้นเกี่ยวข้อง askubuntu.com/questions/852265/…
CodingMatters

0

ฉันพบปัญหาที่คล้ายกันและสามารถแก้ไขได้ที่ฝั่งเซิร์ฟเวอร์ git ทำงานที่นั่นภายใต้ uwsgi ดังนั้นฉันจึงเพิ่มใน uwsgi config บรรทัดต่อไปนี้:

env = HOME=/srv/git

โดยที่ / srv / git เป็นเจ้าของโดย uid เดียวกับที่ uwsgi ทำงานภายใต้และสร้างขึ้นchmod u+rwX /srv/git ดังนั้นคุณต้องชี้ตัวแปร HOME ที่ฝั่งเซิร์ฟเวอร์สำหรับกระบวนการที่รัน git ไปยังไดเร็กทอรีซึ่งกระบวนการนี้จะมีสิทธิ์ในการอ่าน / เขียน / สำรวจ


0

สำหรับ Windows อาจเป็นกรณีที่กระบวนการบางอย่างเช่นไคลเอนต์ CMD หรือ SSH เปิดโฟลเดอร์บางโฟลเดอร์ที่ Git พยายามลบ

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