Mengapa Anda TIDAK PERNAH mengedit file / etc / shadow secara langsung?

10

Dalam jawaban lain di sini di UNIX & Linux Stack Exchange Michael D Parker menulis , sebagai tanggapan terhadap seseorang yang mengatakan bahwa melakukan itu adalah "aman", bahwa:

Biasanya Anda TIDAK PERNAH mengedit file / etc / shadow secara langsung.

Begitu:

Mengapa Anda tidak boleh mengedit /etc/shadowfile secara langsung?

Claude Cameron
sumber
karena kata sandi Anda terenkripsi.
Milind Dumbare
7
Karena kamu akan mematahkannya. Mungkin tidak hari ini, mungkin bukan besok, tapi segera
ctrl-alt-delor
1
Perbarui pertanyaan Anda (dengan mengeditnya) dengan tautan ke mengapa menurut Anda ini masalahnya. Saya telah mengedit /etc/shadowselama lebih dari 20 tahun tanpa masalah, pernah . Dan mohon bersikap sopan untuk membaca bantuan dua menit → tur , terutama "tanpa gangguan", "tanpa obrolan". Ini adalah pertama kalinya saya harus membaca lebih banyak obrolan yang tidak relevan dalam sebuah pertanyaan daripada membaca "pertanyaan" yang relevan.
Anthon
"Biasanya Anda seharusnya tidak pernah" tidak sama dengan "tidak pernah".
roaima
2
@captcha Omong kosong. Ada alasan bagus untuk tidak melakukan itu. Hanya karena Anda tidak dapat memikirkan hal lain, Anda tidak berhak menyebut orang lain bodoh. Tolong bersikap baik .
Gilles 'SANGAT berhenti menjadi jahat'

Jawaban:

15

Ada beberapa alasan untuk tidak mengedit /etc/passwd, /etc/shadow, /etc/group, /etc/gshadowatau /etc/sudoerslangsung, melainkan menggunakan vipw, vigratau visudo:

  • Jika Anda membuat kesalahan sintaks, Anda mungkin tidak bisa masuk atau menjadi root lagi. Menggunakan alat viXXX mengurangi risiko ini karena alat melakukan pemeriksaan kewarasan sebelum memodifikasi file.
  • Jika file diedit secara bersamaan, siapa pun yang menyimpan terakhir akan menimpa perubahan yang dibuat oleh suntingan sebelumnya. Ini termasuk administrator yang mengedit file dan file yang sedang dimodifikasi karena pengguna menelepon passwd, chshatau chfnmengubah sesuatu tentang akun mereka. Jika Anda menggunakan alat yang sesuai, itu akan mencegah modifikasi bersamaan. Ini sebagian besar menjadi perhatian pada sistem dengan banyak pengguna, lebih sedikit jika Anda satu-satunya pengguna.
  • Pada beberapa sistem (sebagian besar atau hanya * BSD), vipwmemperbarui beberapa file (misalnya /etc/passwddan /etc/master.passwd). Ini tidak berlaku untuk Linux.
  • vipwsecara otomatis membuat cadangan ( passwd-,, shadow-...), yang berguna jika Anda menyadari bahwa Anda secara tidak sengaja menghapus sebuah baris. Ini hanya berguna jika Anda menyadarinya sebelum pengeditan berikutnya, jadi itu tidak menggantikan kontrol versi dan cadangan, tetapi bisa sangat baik jika Anda segera menyadari kesalahan Anda. visudotidak melakukan ini.

Anda dapat mengedit file secara langsung. Anda hanya akan mengambil risiko tambahan tanpa keuntungan nyata.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
Poin # 2 adalah masalah pada sistem mana pun di mana pengguna dapat mengubah kata sandi, shell, dan yang lainnya. Banyak administrator bukanlah prasyarat. ☺
JdeBP
3
Dan masalah utama dengan ini pada BSD adalah, lebih tepatnya, itu /etc/shadowtidak ada dan /etc/passwdfile yang salah untuk diedit, karena itu adalah file yang dihasilkan bukan file sumber. ☺
JdeBP
@ JdeBP Kecuali itu bukan masalah sama sekali dan toko BSD di master.passwd
Rob
6

Pada dasarnya ada dua cara untuk melihatnya:

  1. Jangan pernah mengedit file tertentu tanpa menggunakan alat yang ditentukan karena Anda mungkin tidak tahu apa yang Anda lakukan dan tidak apa-apa karena alat tersebut lebih tahu dan selalu tersedia.

  2. Lebih realistis lagi, Anda bisa memecahkannya sekarang sambil memikirkannya sehingga Anda dapat merencanakan ke depan dengan salinan cadangan dan membandingkan perbedaan setelah melakukannya karena pengetahuan dasar tentang seluk beluk loginproses awal dasar sistem Anda mungkin bernilai memiliki ketika Anda memecahkannya beberapa saat kemudian dan mengatakan alat tidak akan membantu Anda.

Saya kira Anda mungkin bisa tahu mana yang saya rekomendasikan. Saya mengatakan bahwa jika suatu topik menarik minat Anda bahkan untuk sesaat, Anda mungkin bisa memanfaatkan keingintahuan itu dan mendapatkan keterampilan baru saat Anda melakukannya. Terutama yang seperti ini - shadowfile ini dalam format yang cukup mendasar, dan sedikit yang saya ketahui tentang itu saya pelajari setelah memecahnya secara tidak sengaja - dan itu bukan hasil edit yang saya buat pada file itu.

Sebaliknya masalah saya terjadi setelah beberapa kesalahan lain dengan database manajemen paket menyebabkan manajer paket menimpanya tanpa menyimpan cadangan dan semua pengguna pada sistem dibuat kaput . Upaya ceroboh lebih lanjut pada perbaikan hanya menyebarkan kerusakan ke file terkait lainnya dan itu tidak lama sebelum saya harus mengembalikan sebagian besar /etcfile teks dari cadangan (kurang baru dari yang diharapkan) .

Setelah saya melakukannya dan memverifikasi bahwa saya sudah dalam keadaan bisa diterapkan, saya memutuskan untuk dengan sengaja, dengan cermat melakukan semuanya lagi. Dan sekali lagi. Ini semua beberapa bulan yang lalu, tetapi hari ini saya tetap yakin bahwa saya dapat mendiagnosis sumber loginmasalah dengan satu kali logfile tunggal pada sistem saya dan mengatasinya dengan editor dasar (dan memberikan, mungkin, sekilas atau dua at man 5 problem_file) hanya menyediakan akses dasar ke root fs yang terpengaruh. Itu tidak diperoleh dengan murah - saya butuh sebagian besar hari - dan file konfigurasi terkait tersebar di seluruh direktori (dan bahkan beberapa - seperti Linux PAM /var/run/no_login- di gunung lain) - tapi itu layak dilakukan. Dan itu bisa lebih murah dengan sedikit pemikiran ke depan.

Moral dari cerita ini adalah bahwa hal itu mungkin tidak hal yang baik bahwa format konfigurasi mission-critical seperti shadow, passwd, groups, shellsharus begitu buram kepada kita bahwa kita harus menggunakan alat mengedit khusus yang mungkin atau mungkin tidak benar pekerjaan kami dalam cara dan karena alasan kami tidak mengerti hanya untuk melakukan perubahan sederhana. Setidaknya, saya pikir, ada baiknya kita sementara memahami dengan tepat apa yang akan mereka lakukan berbeda dari yang mungkin kita lakukan.

Mungkin ini adalah hal yang baik, bahwa begitu kita menjadi cukup akrab dengan mengedit file yang kita jalankan berisiko membuat di dalamnya dan kemudian menyimpannya kesalahan kesalahan sintaksis tipografi atau sederhana bahwa ada alat yang kita miliki yang dapat memeriksa ulang pekerjaan kami dengan berbagai cara dan untuk alasan yang telah kami pahami sebelum menerapkan suntingan blase kami.

mikeserv
sumber
3

Counter point - jika Anda perlu menyalin satu set login pengguna dari satu server ke server lain, tanpa mengetahui kata sandi mereka saat ini atau menugaskan mereka yang baru, maka Anda perlu mengedit / etc / shadow secara langsung untuk memasukkan bidang kata sandi hash. vipw tidak membiarkan Anda menyentuh bidang itu, itu hanya "*"

Perbarui: atau dalam hal ini gunakan chpasswd -e "kata sandi hash", tetapi itu hanya dapat dilakukan di komputer secara langsung. Jika Anda bekerja dengan sekumpulan file yang belum digunakan untuk mesin (mis. Mesin Virtual), maka mengedit secara langsung mungkin satu-satunya solusi Anda.

yaitu Biasanya ada alat untuk melakukan apa yang ingin Anda lakukan tanpa mengedit / etc / shadow secara langsung, Anda hanya perlu tahu apa itu ...

Tomuo
sumber
Atau Anda dapat mengatur server LDAP.
Kusalananda
0

Alasan lain Anda perlu mengedit file-file ini adalah jika Anda mengedit file dalam gambar sistem file yang akan Anda boot di sistem lain, dan Anda perlu men-debug sistem setelah boot. Sebagai contoh, sistem file epheremal MAAS digunakan pada gagal komisioning atau dalam mode penyelamatan.

Tidak pernah mengatakan tidak pernah ... kecuali jika Anda bersungguh-sungguh.

Bigtexun
sumber