ฉันเคยล็อกตัวเองนอกจากไฟล์ของตัวเองด้วยคำสั่งที่พิมพ์ผิดเพียงคำเดียว นั่นคือครั้งแรกที่ฉันทำให้การติดตั้ง Linux ของฉันใช้ไม่ได้ และมันเกิดเพราะฉันไม่เข้าใจ permissions (สิทธิ์) ในขณะที่ฉันมองเทอร์มินัล ฉันรู้สึกเหมือนแขกในระบบของตัวเอง ช่วงเวลานั้นสอนให้ฉันรู้ว่า บน Linux control (การควบคุม) คือสิ่งที่ต้อง earned (ได้มาจากการทำ) ไม่ใช่ given (ได้มาโดยอัตโนมัติ) และฉันต้องจ่ายราคา DIY ของการใช้ Linux
เมื่อคุณเชี่ยวชาญว่า Linux จัดการไฟล์อย่างไร — ใครอ่าน เขียน หรือ execute (執行) ได้ — คุณจะกลายเป็น Linux admin จริงๆ ฉันเชี่ยวชาญคำสั่ง Linux permission หลายคำสั่ง และพวกมันคือคำสั่งเทอร์มินัลอันดับต้นที่ฉันแนะนำให้คุณ
chmod
ควบคุมว่าใครอ่าน เขียน หรือ execute ไฟล์ได้
หลังจากที่ฉันเรียนรู้ว่าทำไมสคริปต์บางตัวถึงรันไม่ได้ ฉันเริ่มใช้คำสั่ง "chmod" บ่อยขึ้น ไฟล์ Linux ทุกไฟล์มีระดับสิทธิ์: read (r), write (w), และ execute (x) หากคุณรันคำสั่ง chmod +x ตามด้วยชื่อสคริปต์ ระบบจะ execute (执行) ไฟล์นั้นเหมือนโปรแกรม
chmod ยังอนุญาตให้คุณเปลี่ยนสิทธิ์แบบตัวเลข chmod 755 filename ให้เจ้าของ full access (rwx) และคนอื่นๆ read และ execute (r-x) หลังจากที่คุณเจอข้อความ "Permission denied" ครั้งแรก คำสั่งนี้อาจกลายเป็น muscle memory
ฉันใช้คำสั่ง chmod -R 755 folder เมื่อตั้งค่าสคริปต์ในไดเรกทอรีโปรเจกต์ แต่ระวัง flag -R เพราะมัน apply (应用) การเปลี่ยนแปลงสิทธิ์แบบ recursive (递归) ไปยังทุกไฟล์และไดเรกทอรีในต้นไม้ นอกจากนี้ การ apply 755 แบบ recursive อาจตั้งค่า execute bits บน regular files โดยไม่ได้ตั้งใจ
chown
ครอบครองไฟล์อย่างแอดมิน
"chown" คือคำสั่งที่ช่วยชีวิตฉันเมื่อฉันคัดลอกไฟล์ระหว่างไดรฟ์และเข้าถึงไม่ได้หลังจากนั้น มันส่งผลโดยตรงต่อการเข้าถึงโดยการเปลี่ยน ownership (所有权) ของไฟล์หรือโฟลเดอร์ รูปแบบพื้นฐานคือ: sudo chown user:group filename
คุณจะต้องใช้มันหลังจากย้ายข้อมูลสำคัญของระบบ หรือ restore (还原) backup ตัวอย่างเช่น เมื่อฉันต้องการให้ web server (Apache) อ่านโฟลเดอร์ ฉันใช้คำสั่ง sudo chown -R www-data:www-data /path/to/project โดยที่ www-data คือ username และ group เฉพาะสำหรับ Apache web server
คำแนะนำของฉันคือ ใช้มันอย่างระมัดระวัง โดยเฉพาะหากคุณรวม flag recursive การเปลี่ยน ownership ให้ผู้ใช้อื่นหรือ root อาจป้องกันไม่ให้ผู้ใช้เดิมแก้ไขไฟล์ได้โดยไม่ใช้ sudo
umask
ตั้งค่าสิทธิ์เริ่มต้นสำหรับไฟล์ใหม่
บน Linux umask กำหนดว่าไฟล์และไดเรกทอรีใหม่สืบทอดสิทธิ์การเข้าถึงอย่างไร Linux ใช้ค่า umask ปัจจุบันของคุณเพื่อกำหนดว่าจะ mask (遮罩/移除) สิทธิ์ไหนจาก base permission คำสั่ง umask ให้คุณดูหรือเปลี่ยนการตั้งค่านี้สำหรับเซสชันปัจจุบัน
ค่า umask default มักเป็น 0022 และมันลบ write access ออกจาก "group" และ "other" users คุณสามารถพิมพ์ umask เพื่อดูค่าปัจจุบันของคุณ และคำสั่งอย่าง umask 0027 จะเปลี่ยนมันสำหรับเซสชันปัจจุบัน การตั้งค่านี้ทำให้ไฟล์ใหม่ปลอดภัยกว่า โดยปกติจะบล็อกการเข้าถึงจาก other users หรือใครก็ตามนอกเหนือจาก group ของคุณ
คุณอาจพิจารณาตั้งค่า umask แบบกำหนดเองในไฟล์การกำหนดค่าของคุณ (อย่าง .bashrc) เพื่อสร้าง privacy baseline (隐私基线) ที่ต่อเนื่อง การปรับแต่งง่ายๆ นี้จะปรับปรุงความปลอดภัยในสภาพแวดล้อมที่แชร์ โดยการ apply (应用) ค่าเริ่มต้นที่ปลอดภัยอัตโนมัติทั่วทุกสคริปต์และล็อกใหม่ของคุณ
sudoers
ให้หรือจำกัดสิทธิ์แอดมินอย่างปลอดภัย
บางคนอาจโต้แย้งว่าคุณเพิ่งกลายเป็น Linux admin จริงๆ หลังจาก edit (编辑) sudoers file สำเร็จ ไฟล์ /etc/sudoers ของคุณ กำหนดว่าใครมีสิทธิ์ sudo และว่าพวกเขาสามารถรันคำสั่งไหนได้ เป็นกฎ ฉันจะ edit มันด้วย sudo visudo เสมอ เพื่อป้องกัน syntax errors (语法错误) ที่อาจล็อกฉันออก
บน Linux Mint หากฉันต้องการให้ผู้ใช้อื่นมีสิทธิ์แอดมิน ฉันใช้คำสั่ง sudo usermod -aG sudo username นี่สะอาดและปลอดภัยกว่าการ edit ไฟล์ด้วยตนเอง แม้คุณอาจต้องการ command permissions เฉพาะสำหรับ advanced setups
โปรดทราบว่า บางดิสโทรใช้ชื่อกลุ่มที่แตกต่างจาก sudo (อย่าง "wheel" บน Fedora)
Linux มี security model (安全模型) ที่แข็งแกร่ง ดังนั้นขอระมัดระวังเมื่อ edit sudoers file รายการผิดพลาดอาจลบ root access ของคุณ แตเมื่อใช้ถูกต้อง คุณสามารถ automate (自动化) admin tasks ของคุณได้อย่างสะอาด
groups
ดูว่าคุณอยู่ในวงกลมการเข้าถึงไหน
Groups บน Linux กำหนดว่าคุณสามารถเข้าถึงอะไรได้ และบอกคุณว่าคุณอยู่ที่ไหนในลำดับชั้น ตัวอย่างเช่น หากฉันรันคำสั่ง groups afam มันอาจคืนค่า afam sudo adm lp แสดงว่าฉันเป็น user ที่มี admin privileges และมีสิทธิ์เข้าถึง printers
การรันคำสั่ง sudo usermod -aG project afam สามารถทำความแตกต่างได้ทั้งหมด หากฉันเข้าร่วมโปรเจกต์ใหม่ มันอนุญาตให้ฉันรันสคริปต์และแก้ไขไฟล์ร่วมกับทีมเมตโดยไม่ต้อง sudo ทุกคำสั่ง
ฉันใช้คำสั่ง groups บ่อยขณะกำหนดค่า Docker หรือ virtual machines เพื่อให้สิทธิ์ที่จำเป็นแก่ user ของฉัน เพื่อรัน daemon หรือเข้าถึงอุปกรณ์ฮาร์ดแวร์ การเข้าใจคำสั่งนี้อนุญาตให้ workflows ราบรื่นขึ้น และมี roadblocks (路障) ที่เกิดจาก permissions น้อยลง
id
ระบุตัวตนของคุณให้ระบบ
คำสั่ง id แสดงว่าคุณคือใครใน عين (眼睛) ของระบบ ซึ่งจำเป็นก่อนที่คุณจะแก้ไข permissions การรันคำสั่ง id เพียงอย่างเดียวจะแสดง user ID (UID), group ID (GID) และรายการ groups ทั้งหมดที่คุณเป็นสมาชิก แม้มันจะไม่ label (标记) user type ของคุณโดยตรง UID ของคุณสามารถ infer (推断) ได้ว่าคุณอยู่ใน user types หลัก 4 ประเภทไหนของ Linux
ฉันพึ่งพาคำสั่งนี้เมื่อฉันต้อง debug (调试) ปัญหาการเข้าถึง ดังนั้น หาก shared folder บางอย่างไม่ได้เปิด ฉันอาจใช้ id เพื่อดูว่าผู้ใช้ของฉันตรงกับ owner หรือ group หรือไม่ ยืนยันว่าปัญหา "permission denied" เกี่ยวกับ identity (身份) หรือ permissions (权限)
ฉันจับคู่ "id" กับ flag "-u" และ "-g" เพื่อได้ภาพที่ชัดเจนขึ้นของ file ownership flag "-u" แสดง numeric user ID ของฉัน และ "-g" แสดง group ID ของฉัน แม้ id จะไม่ใช่คำสั่งที่ glamorous (迷人) การรู้จักตัวตนของคุณมักเป็นครึ่งหนึ่งของการแก้ไขเมื่อฉันชนกำแพง
จาก user สู่ admin: ที่ที่การควบคุมจริงเริ่มต้น
ฉันเห็นบางคนจากไปจาก Linux ไป Windows และการขาดความเข้าใจใน Linux permissions อาจมีส่วนทำให้เกิด friction (摩擦) ที่ผลักดันพวกเขาออกไป คำสั่งทั้งหมดที่ฉันแชร์แสดงว่าระบบมองคุณอย่างไร และการควบคุมที่คุณมี นี่สำคัญบน Linux เพราะคุณจะเจอ "Permission denied" errors บ่อยกว่าที่คุณคิด
ตอนนี้คุณสามารถหยุดรู้สึก intimidated (畏惧) ด้วย Linux และเติบโตในระบบนิเวศที่วาง near-absolute control (近乎绝对的控制) กลับมายังมือคุณ