Memahami sisi keamanan nano: peringatan file read-only saat permission tidak bisa ditulis, perilaku nano 9.0+ terhadap file tanpa izin tulis, peran lock file melawan race condition, serta workflow aman mengedit file dengan permission ketat seperti /etc/shadow dan sshd_config

Setelah di episode 17 kalian menandai file besar dengan anchors, kita membahas sisi yang jarang dipikirkan: keamanan. Di lingkungan produksi, file yang kalian edit punya pemilik dan permission yang ketat — dan nano harus berinteraksi dengan itu dengan benar. Episode ini menjelaskan bagaimana nano menangani file read-only, apa fungsi lock file terhadap race condition, dan bagaimana perilaku nano berubah di versi 9.0+.
Mengapa keamanan penting? Karena file config yang kalian ubah sering kali adalah garis pertahanan sistem — sshd_config, sudoers, firewall. Mengeditnya dengan sembrono sama dengan membuka celah keamanan.
Saat kalian membuka file yang tidak punya izin tulis, nano menampilkan peringatan di status bar:
sudo chmod 444 ~/nano-lab/nginx.conf
nano ~/nano-lab/nginx.conf[ File 'nginx.conf' is read-only ]Di area title bar, status read-only ditandai dengan [ read-only ]. Kalian masih bisa mengetik, tetapi ^O tidak akan menimpa file — nano menawarkan menulis ke file lain (Write Out dengan nama baru) atau mengonfirmasi jika kalian punya izin lain.
Sejak nano 9.0, ada penyempurnaan: saat nano menyadari file tidak bisa ditulis (misalnya karena permission), ia memberi tahu lebih awal dan lebih jelas saat ^O — alih-alih diam-diam menawarkan menyimpan sebagai file baru, nano menampilkan peringatan bahwa file tidak writable dan menawarkan menyimpan ke file lain.
File is not writable; please choose a different name or cancel.Perilaku ini melindungi kalian dari kejutan: tidak ada lagi "saya kira tersimpan, ternyata tidak" pada file kritis. Uji dengan:
sudo chmod 444 ~/nano-lab/nginx.conf
nano ~/nano-lab/nginx.conf # ^O → peringatan tidak writable
sudo chmod 644 ~/nano-lab/nginx.confRace condition terjadi saat dua proses menulis file yang sama bersamaan — hasilnya bisa file korup atau perubahan hilang. Lock file .swp (episode 14) mencegah ini:
Nano membuat lock file sebelum mengizinkan edit, dan menghapusnya setelah file ditutup dengan benar. Dua sesi nano di file yang sama tidak akan menimpa satu sama lain secara membabi buta.
Danger
Lock file adalah garis pertahanan, bukan pagar besi. Proses yang mati paksa bisa meninggalkan .swp (file tampak terkunci) — dan proses yang sengaja mengabaikan lock tetap bisa menulis. Untuk file yang sangat kritis, gunakan mekanisme kontrol versi (git) atau visudo yang punya lock sendiri.
File dengan permission ketat seperti /etc/shadow (root-only) dan sudoers punya aturan main sendiri:
Jangan pernah nano /etc/sudoers langsung. Gunakan visudo yang memvalidasi syntax sebelum menyimpan:
sudo visudovisudo memakai EDITOR (yang sudah kita set ke nano di episode 15) dan menolak menyimpan jika syntax salah — melindungi dari mengunci diri sendiri dari sudo.
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
sudo nano /etc/ssh/sshd_config
sudo sshd -t && echo "konfigurasi valid"Jika sshd -t gagal, pulihkan backup sebelum restart:
sudo cp /etc/ssh/sshd_config.bak /etc/ssh/sshd_configSaat nano membuat file baru, permission-nya mengikuti umask pengguna:
umask # contoh: 0022 → file baru 644
nano file-baru.txt
ls -l file-baru.txt # -rw-r--r-- (644)Untuk file yang berisi rahasia (misalnya kredensial), pertimbangkan mengetatkan umask untuk sesi itu:
(umask 077 && nano kredensial.txt)
ls -l kredensial.txt # -rw------- (600)Tip
Kalau kalian menulis file berisi rahasia, pastikan permission akhirnya 600 (-rw-------). Kebiasaan umask 077 untuk sesi nano rahasia menyelamatkan dari file yang terbaca user lain.
Pada episode 18 ini, kalian telah memahami sisi keamanan nano: permission, lock, dan workflow aman.
Inti yang harus dibawa pulang:
^O akan menawarkan nama file lain..swp mencegah race condition edit bersamaan.sudoers hanya lewat visudo; sshd_config dengan backup + sshd -t.umask 077 (permission 600).Di episode 19 selanjutnya, kita akan membahas clipboard & OSC 52 — mengintegrasikan nano dengan clipboard sistem lewat protokol OSC 52, memakai || di Execute prompt untuk menempel, dan copy-paste antar terminal maupun aplikasi lain. Nano mulai berbicara dengan dunia GUI!