ไม่สามารถเข้าถึง '/root/.config/git/attributes': การอนุญาต> ถูกปฏิเสธ”


10

ใน Ubuntu Server ของเราเราสามารถทำการโคลนนิ่งในฐานะผู้ใช้ Nginx ใน/usr/share/nginx/wwwนั้นได้ - www-data:wwwข้อมูลความเป็นเจ้าของได้รับคำเตือนดังนี้

” คำเตือน: ไม่สามารถเข้าถึง '/root/.config/git/attributes': ปฏิเสธการอนุญาต”

เรากำลังดำเนินการคำสั่งเป็น sudo -u www-data git clone <repo>.

ด้วย sudo เราได้รับคำเตือนนี้ไม่เช่นนั้นมันก็ทำงานได้ดี

เราสามารถโคลนนิ่งในฐานะผู้ใช้รูทและไม่มีปัญหา

.gitconfig ตั้งอยู่ในรูทเท่านั้นและโปรดดูเนื้อหา:

root@geo:~# cat /root/.gitconfig
[user]
        name = pc_user
        email = pcgeopc@gmail.com
root@geo:~#

ใครก็ได้โปรดช่วยเราด้วย

เราลองตัวเลือกต่าง ๆ เช่นสร้างด้วยตนเอง/root/.config/โดยตรงและเปลี่ยนสิทธิ์เป็นต้น แต่ไม่มีอะไรทำงาน ใครก็ได้โปรดช่วยฉันด้วย

โปรดดูสิ่งนี้ด้วย:

root@geo:/setup/test# ll /setup/
total 16
drwxr-xr-x  4 www-data www-data 4096 Oct  9 00:14 ./
drwxr-xr-x 24 root     root     4096 Oct  9 00:14 ../
drwxr-xr-x  3 www-data www-data 4096 Oct  9 00:14 test/

root@geo:/setup/test# sudo -u www-data git clone -v git@....../test.git
Cloning into 'test'...
remote: Counting objects: 8323, done.
remote: Compressing objects: 100% (6459/6459), done.
remote: Total 8323 (delta 1543), reused 8241 (delta 1500)
Receiving objects: 100% (8323/8323), 39.85 MiB | 19.52 MiB/s, done.
Resolving deltas: 100% (1543/1543), done.
Checking connectivity... done.
warning: unable to access '/root/.config/git/attributes': Permission denied

ดูเหมือนว่ามีปัญหากับการตั้งค่า git คนใดคนหนึ่งได้โปรดแนะนำเรา


ฉันใช้การตั้งค่านี้กับ Ubuntu 14.04 เมื่อฉันตั้งค่าเดียวกันใน Ubuntu 12.04 อื่นมันทำงานได้อย่างสมบูรณ์

นอกจากนี้ฉันทำสิ่งนี้:

สร้างผู้ใช้ geopc และเพิ่มไปยังรายการ sudoers และเมื่อเราเข้าสู่ระบบในฐานะผู้ใช้ geopc และทำคำสั่งนี้sudo -u www-data git clone -v git@....../test.git มันทำงานได้อย่างสมบูรณ์

ดังนั้นปัญหาคือเมื่อเราเข้าสู่ระบบโดยตรงในฐานะผู้ใช้รูทใน Ubuntu 14.04 และทำการโคลนตามsudo -u www-data git cloneคำเตือนนี้มา แต่มันไม่ได้อยู่ใน Ubuntu 12.04

เราใช้ git เวอร์ชั่น 1.9.1 บน Ubuntu 14.04 และเราก็อัพเกรด git เป็น 2.1.1 เหมือนกัน


1
มันเป็นธรรมโดยทั่วไปว่าสิทธิ์ของระบบไฟล์ปิดกั้นผู้ใช้อื่น ๆ ทั้งหมดรวมทั้ง www /rootข้อมูลจากการเข้าถึงไฟล์ภายใต้ หากไม่ใช่สิทธิ์ของระบบไฟล์เกินกว่าที่ควรเช่น AppArmor หรือ SELinux ควรบล็อกการเข้าถึงเว็บเซิร์ฟเวอร์ / รูท
HBruijn

ดูเหมือนว่าจะไม่ .. ฉันแก้ไขคำถามโปรดตรวจสอบ
Geo


ฉันใช้คำตอบนี้และคำตอบนี้ใช้ได้สำหรับฉัน ลองด้วยตัวคุณเอง
Toir427

คำตอบ:


10

@mu ถูกต้อง นี่เป็นปัญหาของตัวแปรสภาวะแวดล้อม HOME ของผู้ใช้ที่rootถูกส่งผ่านไปยังสคริปต์แทนที่จะwww-dataเป็นตัวแปรสภาวะแวดล้อม HOME ของผู้ใช้

คุณเพียงแค่ต้องเพิ่มสวิตช์ -H ลงในคำสั่ง sudo ดังนั้นจึงค่อนข้างง่าย:

sudo -u www-data -H git clone -v git@....../test.git

1

ฉันคิดว่าHOMEตัวแปรตั้งค่าไม่ถูกต้อง

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

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

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


สำหรับฉันมันเริ่มต้นแล้ว: HOME = / home / git git daemon ...
rofrol

-1

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

เช่น atlstash

การทำเช่นนี้จะตั้งค่าตัวแปร HOME ของคุณเป็น / home / atlstash และแก้ไขปัญหาของคุณ

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