Mengapa SFTP memaparkan permission denied
SFTP berjalan di bawah akaun yang anda gunakan untuk log masuk dan tiada fungsi yang setara dengan sudo. Kebanyakan fail dalam /etc dimiliki oleh root, maka akaun biasa boleh membaca sebahagiannya tetapi tidak boleh menulis mana-mana fail tersebut. Ini tingkah laku yang betul dan tidak patut dibetulkan dengan melonggarkan keizinan.
Perkara yang perlu dielakkan
Jangan jalankan chmod 777 pada fail konfigurasi, jangan tukar pemilik fail /etc kepada akaun anda dan jangan dayakan log masuk root dengan kata laluan hanya untuk satu suntingan. Sesetengah perkhidmatan menolak fail dengan keizinan yang terlalu longgar, dan setiap perubahan sebegini menjadikan pelayan kurang selamat lama selepas suntingan selesai.
Gunakan sudoedit dalam terminal
sudoedit menyalin fail ke lokasi sementara, membukanya dalam penyunting di bawah akaun anda sendiri dan menulisnya kembali hanya selepas anda menyimpan. Penyunting itu sendiri tidak berjalan sebagai root.
sudoedit /etc/nginx/nginx.confMuat naik salinan, kemudian pasangkannya
Jika anda lebih suka penyunting setempat, muat naik fail ke direktori rumah anda dan pasangkannya dengan sudo. Sandarkan fail asal dahulu di tempat yang tidak dibaca oleh sebarang mekanisme penyertaan konfigurasi. Perintah install menetapkan pemilik dan mod, manakala pada sistem dengan SELinux, restorecon menetapkan konteks yang betul. Semak pemilik dan mod fail asal sebelum menyalin nilai ini, kerana bukan semua fail menggunakan root dan 644.
stat -c '%U %G %a' /etc/nginx/nginx.conf
sudo cp -a /etc/nginx/nginx.conf /root/nginx.conf.bak
sudo install -o root -g root -m 644 ~/nginx.conf.new /etc/nginx/nginx.conf
sudo restorecon -v /etc/nginx/nginx.confSahkan sebelum menggunakan perubahan
Fail dengan sintaks yang salah boleh menyebabkan perkhidmatan terhenti pada mula semula berikutnya. Jalankan semakan perkhidmatan berkenaan sebelum memuatkannya semula. Apabila mengubah tetapan SSH, biarkan sesi semasa terbuka dan uji log masuk baharu dari tetingkap kedua.
sudo nginx -t
sudo sshd -t
sudo visudo -cf /etc/sudoers.d/examplePenyuntingan dengan sudo dalam CH-J Server Manager
File Manager menawarkan untuk membuka fail dengan sudo apabila akaun SSH tidak dapat membacanya, dan memberi amaran bahawa penyimpanan memerlukan sudo. Semasa menyimpan, data dihantar ke direktori sementara peribadi akaun dan, selepas pengesahan, sudo memindahkannya ke tempatnya sambil mengekalkan pemilik, keizinan, ACL dan konteks SELinux. Sandaran pilihan menyimpan salinan fail asal sebelum menggantikannya. Kata laluan hanya dihantar kepada sudo pada pelayan dan tidak disimpan pada cakera atau dalam log. Jika dasar sudo memerlukan terminal (requiretty), aplikasi tidak memintasnya. Aplikasi tidak mengesahkan kandungan fail, jadi jalankan sendiri semakan perkhidmatan.