ปัญหาของสิทธิ์ใน Linux และการใช้งานที่ถูกต้องผ่านคำสั่ง "chmod" เป็นสิ่งที่เปิดเผยและพูดถึงกันมากในชุมชน SL โดยผู้ใช้ขั้นสูงช่างเทคนิคและผู้ดูแลระบบเซิร์ฟเวอร์และระบบ ตัวอย่างเช่นในบล็อกของเราเรามีสิ่งพิมพ์ที่ดีมาก 2 เรื่องซึ่ง ได้แก่ : สิทธิ์และสิทธิ์ใน Linux (01/12) y สิทธิ์พื้นฐานใน GNU / Linux พร้อม chmod (08/16).
แต่หลายครั้ง นักพัฒนา SW ใครคือคนที่สร้างแอปพลิเคชันและระบบซึ่งส่วนใหญ่เป็นระบบและเว็บไซต์ เมื่อพัฒนาพวกเขามักจะไม่พิจารณาว่าสิทธิ์ใดเป็นสิทธิ์ที่ถูกต้องที่จะดำเนินการกับพวกเขาโดยทิ้งงานไว้ที่ด้านข้างของเซิร์ฟเวอร์และผู้ดูแลระบบเกือบตลอดเวลา ในเอกสารนี้เราจะพยายามให้คำแนะนำเล็กน้อยเกี่ยวกับเรื่องนี้สำหรับพวกเขา
การแนะนำ
คำสั่ง "chmod»มีประโยชน์และสำคัญมากสำหรับการใช้งานระบบปฏิบัติการบน Linux ขั้นสูง อย่างไรก็ตาม "chmod" ดังกล่าวไม่ใช่แพ็คเกจแบบสแตนด์อโลน แต่รวมอยู่ในแพ็คเกจ "คอร์ยูทิล«. แพ็คเกจ "coreutils" เป็นแพ็คเกจที่ให้ระบบปฏิบัติการพร้อมด้วยเครื่องมือพื้นฐานมากมายสำหรับการจัดการไฟล์ตัวแปลคำสั่งและการประมวลผลคำ และโดยทั่วไปมีการติดตั้งโดยค่าเริ่มต้นแล้วใน Linux Distros ส่วนใหญ่
โดยเฉพาะแพคเกจนี้มีนอกเหนือจากคำสั่ง "chmod" แล้วคำสั่งต่อไปนี้: arch base64 basename cat chcon chgrp chmod chown chroot cksum comm cp csplit วันที่ตัด dd df dir dircolors dirname du echo env expand expr factor false flock fmt fold groups head hostid id install join link ln logname ls md5sum mkdir mkfifo mknh no mktemp mkfifo mknh no mktemp mkfifo numfmt od วาง pathchk pinky pr printenv printf ptx pwd readlink realpath rm rmdir runcon sha * sum seq shred sleep sort split stat stty sum sync tac tail tee test timeout touch tr true truncate tsort tty uname unexpand uniq unsink users vdir wc who whoami yes
โดยสรุปคำสั่ง "chmod" ช่วยให้งานที่สำคัญทั้งหมดในการจัดการสิทธิ์ของไฟล์และโฟลเดอร์แก่ผู้ใช้ทั้งหมดที่จัดการโดยระบบปฏิบัติการ เนื่องจาก Linux เป็นระบบปฏิบัติการมีผู้ใช้หลายคนดังนั้นจึงจำเป็นต้องจัดเตรียมสภาพแวดล้อมการทำงานด้วยระบบสิทธิ์เพื่อควบคุมชุดการดำเนินการที่ได้รับอนุญาตบนไฟล์และไดเร็กทอรีซึ่งรวมถึงทรัพยากรระบบทั้งหมดและ อุปกรณ์
เนื้อหา
ใช้สำหรับ SW Developers
ผู้ดูแลระบบเซิร์ฟเวอร์และระบบ (Sysadmin) เมื่อตัดสินใจว่าจะให้สิทธิ์ผู้ใช้ระดับ X หรือโปรไฟล์ใดในไฟล์หรือโฟลเดอร์ X จำเป็นต้องทราบประเภทของการดำเนินการหรือกระบวนการที่ต้องดำเนินการ ในกรณีของ Web Server ผู้ใช้สามารถแบ่งออกเป็น 2 ประเภท:
- ผู้ดูแลระบบ: ผู้ที่มีบัญชีผู้ใช้บนเซิร์ฟเวอร์เพื่อเข้าสู่ระบบมีสิทธิ์เฉพาะและผู้ที่ดำเนินการเปลี่ยนแปลงบางอย่าง (คัดลอก / ลบ / แก้ไข) ในระบบหรือเว็บไซต์ที่ติดตั้งผ่าน SSH หรือ SFTP เป็นต้น
- ผู้ใช้ที่ไม่ใช่ผู้ดูแลระบบ: พวกเขาไม่มีบัญชีผู้ใช้บนเซิร์ฟเวอร์เนื่องจากเป็นเพียงผู้เยี่ยมชมเว็บไซต์และระบบเว็บ ดังนั้นพวกเขาจึงไม่มีสิทธิ์ในการเข้าถึงไฟล์และโฟลเดอร์โดยตรง แต่จะโต้ตอบกับพวกเขาผ่านเว็บอินเตอร์เฟสของไซต์หรือระบบเว็บที่ติดตั้ง
อย่างไรก็ตามเมื่อ Sysadmin ไม่ได้รับเพียงพอหรือเพียงพอ ข้อมูลเอกสารหรือการสนับสนุนโดย SW Developers เกี่ยวกับความสามารถฟังก์ชันการทำงานหรือโครงสร้างไฟล์ของเว็บไซต์และระบบที่จะติดตั้ง จบลงด้วยการรันค่าสูงสุดที่เชื่อถือได้ซึ่งในกรณีนี้มักจะ:
chmod 777 -R /var/www/sistema-web
และหลายครั้งมันลงท้ายด้วย:
chown root:root -R /var/www/sistema-web
การเตือน
โดยปกติจะเป็นแนวทางปฏิบัติที่ไม่ดี แต่โดยปกติจะหลีกเลี่ยงปัญหาการอนุญาตและการดำเนินการที่ไม่ถูกต้องของเว็บไซต์และระบบที่ติดตั้ง การปฏิบัติที่ไม่ดีเนื่องจากเมื่อคำสั่ง chmod 777 ถูกเรียกใช้ในลักษณะนี้ในโฟลเดอร์และไฟล์ของไซต์หรือระบบเว็บจึงไม่มีความปลอดภัยเลย
ทำให้ผู้ใช้เว็บไซต์หรือระบบเว็บออนไลน์สามารถเปลี่ยนแปลงหรือลบไฟล์ใด ๆ ภายในโครงสร้างไฟล์ของเว็บไซต์หรือระบบเว็บภายในเว็บเซิร์ฟเวอร์หรือที่อื่น ๆ โดยไม่มีอุปสรรคสำคัญ เนื่องจากต้องจำไว้ว่าเป็นเว็บเซิร์ฟเวอร์ที่ทำหน้าที่ในนามของผู้ใช้ที่เยี่ยมชมและสามารถเปลี่ยนไฟล์เดียวกันกับที่กำลังดำเนินการได้
และในกรณีที่ผู้ใช้เป็นผู้โจมตีและได้รับช่องโหว่บางอย่างในเว็บไซต์หรือระบบเว็บเขาสามารถใช้ประโยชน์จากมันเพื่อทำให้เสื่อมเสียปิดการใช้งานได้อย่างง่ายดายหรือที่แย่กว่านั้นคือใส่โค้ดที่เป็นอันตรายเพื่อทำการโจมตีแบบฟิชชิงหรือขโมยข้อมูลจากเซิร์ฟเวอร์โดยที่ไม่มีใครรู้ได้ง่ายๆ
แนะนำ
เพื่อหลีกเลี่ยงมาตรการประเภทนี้เช่นกัน Sysadmin หรือ SW Developer ต้องตรวจสอบให้แน่ใจว่าโฟลเดอร์และไฟล์ของระบบหรือเว็บไซต์ต่างๆมีการอนุญาตและผู้ใช้ที่ถูกต้องและจำเป็น เพื่อหลีกเลี่ยงปัญหาด้านความปลอดภัยและความเป็นส่วนตัวในอนาคต
ในระดับสิทธิ์สามารถดำเนินการ 3 คำสั่งต่อไปนี้เพื่อคืนค่าสิทธิ์และผู้ใช้ระบบหรือเว็บไซต์ที่ติดตั้งให้เป็นปกติกล่าวอีกนัยหนึ่งตั้งค่า 755 เป็นไดเรกทอรีทั้งหมดและ 644 เป็นไฟล์
อย่าลืมดำเนินการภายในโฟลเดอร์ระบบหรือเว็บไซต์เสมอเนื่องจากหากมีการเรียกใช้งานในโฟลเดอร์ที่สูงกว่า (ไดเร็กทอรี) เช่นรูทของเซิร์ฟเวอร์คำสั่งคำสั่งจะแก้ไขการอนุญาตทั้งหมดของเซิร์ฟเวอร์ซ้ำซึ่งทำให้ไม่สามารถใช้งานได้
ตัวอย่าง
การอนุญาตไดเรกทอรีและไฟล์
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;
y
chmod 777 -R .
o
chmod 777 -R /var/www/sistema-web
ในกรณีที่อยู่นอกโฟลเดอร์ (ไดเร็กทอรี) ของระบบหรือเว็บไซต์
ผู้ใช้ระบบหรือเว็บไซต์
chown www-data:www-data -R .
o
chown www-data:www-data -R /var/www/sistema-web
ในกรณีที่อยู่นอกโฟลเดอร์ (ไดเร็กทอรี) ของระบบหรือเว็บไซต์ และ www-data ของผู้ใช้จะถูกใช้เป็นตัวอย่างเท่านั้นเนื่องจากเป็นข้อมูลที่ใช้มากที่สุดหรือเหมาะสมที่สุดเท่าที่เกี่ยวข้องกับการใช้ Apache2
เมื่อทำการเปลี่ยนแปลงสิทธิ์แล้วเราสามารถดำเนินการแก้ไขการอนุญาตของไดเร็กทอรีและไฟล์ที่เราต้องการให้มีสิทธิ์ที่แตกต่างกันได้ด้วยตนเอง. และหากจำเป็นต้องเปลี่ยนเจ้าของผู้ใช้ที่จำเป็นด้วย ดังนั้นในตอนนี้ทั้ง Sysadmin และ SW Developers จะต้องตกลงกันว่าสิทธิ์ที่จำเป็นควรเป็นอย่างไรสำหรับแต่ละโฟลเดอร์และไฟล์ในโครงสร้างระบบหรือเว็บไซต์
ข้อสรุป
การจัดการสิทธิ์ในไฟล์และโฟลเดอร์ของระบบปฏิบัติการ Linux หรือ UNIX เป็นข้อดีและประโยชน์ที่ดีอย่างหนึ่งเนื่องจากอนุญาตให้ควบคุมระดับการเข้าถึงรุ่นและการเรียกใช้ไฟล์และโฟลเดอร์ต่างๆได้ดีขึ้นแม่นยำและปลอดภัย
และอื่น ๆ อีกมากมายเมื่อพูดถึงระดับของเว็บเซิร์ฟเวอร์นั่นคือที่โฮสต์ระบบหรือเว็บไซต์ภายในและภายนอกขององค์กร เนื่องจากมีความสำคัญสูงกว่าที่จะทราบว่าควรกำหนดสิทธิ์ใดให้กับแต่ละไดเรกทอรีหรือไฟล์เพื่อให้เกิดความสมดุลระหว่างความเป็นส่วนตัวความปลอดภัยและฟังก์ชันการทำงานที่ดีที่สุด
สวัสดีตอนเช้าคุณเป็นอย่างไรบ้าง?
ฉันกำลังขลุกอยู่ใน linux ฉันมีแอปพลิเคชันที่สามารถนำเข้าไฟล์ได้ผู้ใช้อัปโหลดไฟล์. zip ที่มีโฟลเดอร์ที่มีไฟล์ xml หลังจากคลายการบีบอัดไฟล์ที่ถูกแทรกลงในฐานข้อมูล ใน windows ฉันไม่มีปัญหาเมื่อส่งแอปพลิเคชันไปยัง linux ฉันจะขาดสิทธิ์บางอย่างโดยหลักการแล้วเพื่อทดสอบทุกสิ่งที่ฉันได้ทำตามที่พวกเขาพูดได้ดีในบทความนี้และไม่ควรทำฮ่า ๆ (แต่ฉันจะเปลี่ยนเมื่อฉันสามารถตรวจสอบความถูกต้องของฟังก์ชันทั้งหมดได้) .
ความจริงก็คือไฟล์ถูกคลายการบีบอัด แต่ฉันเห็นว่าไฟล์เหล่านี้ถูกดาวน์โหลดด้วยสิทธิ์อ่านและเขียนสำหรับเจ้าของเท่านั้นอ่านสำหรับกลุ่มเจ้าของและไม่มีสิทธิ์สำหรับผู้อื่น เมื่อไฟล์เป็นของผู้ใช้ที่ใช้แอปพลิเคชัน ฉันเข้าใจว่าการไม่มีสิทธิ์ในการดำเนินการจึงไม่สามารถทำตามขั้นตอนปกติของกระบวนการและดำเนินการแทรก xml ในฐานข้อมูลได้ คำถามของฉันมาจากไหนฉันจะให้สิทธิ์กับไฟล์ที่ฉันยังไม่มีในระบบได้อย่างไร ในโฟลเดอร์ที่ดาวน์โหลด (tmp) จะมีสิทธิ์ทั้งหมดจะถูกนำไปใช้ในรูปแบบตัวเอียงซ้ำ แต่ทุกครั้งที่ดาวน์โหลดไฟล์ภายในโฟลเดอร์นั้นจะมีสิทธิ์ที่กล่าวถึงเท่านั้น มีวิธีใดบ้างที่ไฟล์ที่ปรากฏในโฟลเดอร์นั้นสามารถปล่อยให้มีสิทธิ์ดำเนินการได้เช่นกัน?
ฉันหวังว่าฉันจะชัดเจนขอบคุณมากล่วงหน้าและบล็อกที่ยอดเยี่ยม
ฉันคิดว่าโฟลเดอร์ / tmp หรือ… / tmp มีสิทธิ์ 755 แต่ถึงอย่างนั้นเมื่อผู้ใช้ที่เป็นเจ้าของแอปพลิเคชันฝากพวกเขาเขาก็ปล่อยให้พวกเขามีสิทธิ์อื่น ๆ ฉันไม่ใช่นักพัฒนา แต่ฉันคิดว่าในภาษาของแอปพลิเคชันหรือภาษาอื่นอาจบ่งบอกถึงกิจวัตรที่เรียกใช้คำสั่งคำสั่ง (ทุบตี) ของสิทธิ์ที่จำเป็น (chmod) และเจ้าของไฟล์ (chown) มิฉะนั้นคุณสามารถเรียกใช้สคริปต์ทุกนาทีที่ทำงาน