ไม่สามารถเข้าถึงไดเรกทอรีฉันเป็นสมาชิกกลุ่ม


10

บนเว็บเซิร์ฟเวอร์ของฉันฉันมีไดเรกทอรี 'www' ที่มีสิทธิ์drwxrwxr--และ user: group root:www-dataเพื่อให้ Apache สามารถเข้าถึงได้

ตอนนี้ฉันได้เพิ่มบัญชีของฉันไปยังกลุ่ม www-data ด้วย

sudo usermod -g www-data myuser

และถ้าฉันเป็นเช่นgroupsนั้นก็www-dataเป็นหนึ่งในพวกเขา แต่เมื่อฉันพยายามที่จะทำมันให้ได้ฉันจะได้รับ 'การอนุญาตถูกปฏิเสธ'

หากฉันเปลี่ยนผู้ใช้เป็น 'myuser' หรือตั้งกลุ่มเป็นกลุ่มอื่นที่ฉันเป็นสมาชิกอยู่ฉันสามารถเข้ามาได้

ฉันพลาดอะไรไปรึเปล่า?

คำตอบ:


14

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

ฉันขอแนะนำให้คุณเพิ่มwww-dataเป็นกลุ่มเสริมแทนที่จะเป็นกลุ่มหลัก (ซึ่งตั้งเป็นกลุ่มเฉพาะคุณเท่านั้นที่เป็นสมาชิกคุณควรทำได้ด้วยคำสั่งต่อไปนี้:

# Reset to your original primary group
sudo usermod -g myuser myuser
# Add an extra supplementary group
sudo usermod --append -G www-data group

หากคุณต้องการให้ไฟล์ที่คุณสร้างสามารถอ่านได้โดยสมาชิกคนอื่น ๆ ของwww-dataกลุ่มให้ปรับ umask ของคุณตามลำดับ:

umask 002

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

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

chmod g+s www/

1
กลับเข้าสู่ระบบในเคล็ดลับจึงโง่ ยังมีประโยชน์มากserverfault.com/questions/6895/…
dazz

ขอบคุณที่กล่าวถึง Dazz ฉันไม่เคยเข้าใจเลยว่าทำไมมันถึงไม่ทำงานสำหรับฉัน xD ตอนนี้ฉันสามารถพักผ่อนได้อย่างสงบ
f4der

0

สำหรับฉันมันเป็นสิ่งที่แตกต่างทำให้เกิดข้อผิดพลาดนี้

ชื่อผู้ใช้เดียวกันกับสองโพสต์ที่แตกต่างกัน

ฉันมีผู้ใช้ "apache" ที่กำหนดค่าแบบโลคัลด้วย UID = 123 และในไดเร็กทอรี NIS ด้วยชื่อเดียวกัน ("apache") แต่ UID ที่แตกต่างกัน = 456 ขึ้นอยู่กับลำดับเริ่มต้นและการพึ่งพาการบริการผู้ใช้ท้องถิ่นอาจถูกใช้ก่อนที่ผู้ใช้ NIS จะพร้อมใช้งาน ซึ่งหมายความว่าเมื่อคุณแสดงชื่อผู้ใช้สิ่งนี้จะทำให้เกิดความสับสนทั้งสองจะปรากฏเป็น "apache" เฉพาะเมื่อคุณดู UID ที่เป็นตัวเลข (เช่นโดยการทำls -lnคุณจะเห็นความแตกต่างตัวอย่าง: [root@mymachine]# ls -l drwxr-x--- 4 apache ggg1 88 May 31 17:12 file1 drwxr-x--- 4 apache ppp2 88 May 31 17:12 file2 ดู UID นั้นแตกต่างกันสำหรับ file2 (456 แทน 123): [root@mymachine]# ls -ln drwxr-x--- 4 123 48 88 May 31 17:12 file1 drwxr-x--- 4 456 48 88 May 31 17:12 file2

กลุ่มอื่นที่กำหนดใน Apache config

ปัญหาอื่นที่ฉันมีกับผู้ใช้ไม่ตรงกันและเกิดข้อผิดพลาดในการอนุญาตคือเมื่อฉัน จำกัด การเข้าถึงไฟล์โดยใช้กลุ่ม "httpd" นี่คือกลุ่มหลักของผู้ใช้ "apache" (ที่แสดงโดยใช้idหรือgetent) Apache เริ่มต้นเป็นรูทจากนั้นสลับไปยังผู้ใช้ที่กำหนดค่าและปล่อยสิทธิ์ ผู้ใช้ที่สลับไปถูกกำหนด/etc/httpd/conf/httpd.confโดยUserพารามิเตอร์ นี่คือปัญหาแม้ว่า - กลุ่ม (GID) ซึ่งกระบวนการจะทำงานเนื่องจากไม่ใช่กลุ่มหลักของผู้ใช้นั้น กลุ่มถูกกำหนดในไฟล์ config เดียวกันโดยใช้Groupพารามิเตอร์

ดังนั้นในกรณีของฉันมันเป็น ( /etc/httpd/conf/httpd.conf ): User apache Group apache

และไดเรกทอรีได้รับสิทธิ์การเข้าถึงเช่นนี้ drwxr-x--- 4 someuser httpd 88 May 31 17:12 mydir

เนื่องจาก httpd (GID = 444) เป็นกลุ่มหลักของผู้ใช้นั้น: [root@somemachine]# id apache uid=48(apache) gid=444(httpd) groups=444(httpd)

ส่งผลให้ใช้เวลาในการดีบักจนกว่าฉันจะรู้ว่าGroupในไฟล์กำหนดค่าเป็น "apache" ไม่ใช่ "httpd"

ข้อผิดพลาดจาก/ var / log / httpd / error_log : [Fri May 31 17:13:40.070343 2019] [authz_core:debug] [pid 2527] mod_authz_core.c(809): [client 11.22.32.21:53824] AH01626: authorization result of Require all granted: granted [Fri May 31 17:13:40.070367 2019] [authz_core:debug] [pid 2527] mod_authz_core.c(809): [client 11.22.32.21:53824] AH01626: authorization result of <RequireAny>: granted [Fri May 31 17:13:40.070396 2019] [core:error] [pid 2527] (13)Permission denied: [client 11.22.32.21:53824] AH00132: file permissions deny server access: /var/www/html/somedir/otherdir/css/file1.txt

ฉันหวังว่านี่จะช่วยได้.

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