Kesalahan baris perintah terbesar? [Tutup]


35

Kerusakan apa yang paling banyak (dari jenis apa pun) yang pernah Anda sebabkan dengan satu baris perintah yang salah / salah ketik / salah arah? Saya menghapus database sistem produksi secara tidak sengaja beberapa waktu lalu, misalnya, tetapi saya beruntung (yaitu didukung) dan tidak ada kehilangan data permanen, kehilangan uang, kerusakan properti, dll.

Yang terpenting (untuk suara), apa yang Anda lakukan untuk memastikan itu tidak akan terjadi lagi?


9
Karena ini adalah jajak pendapat, itu harus CW
Eddie

Lalu mengapa tidak polling CW secara default?
Lukas

4
Bagaimana mereka tahu itu adalah jajak pendapat progmatis?
Mikeage

1
Jika mekanismenya sama dengan SO, bahkan jika Anda dapat mengedit pertanyaan, Anda tidak dapat mengubahnya ke CW. Hanya OP atau moderator yang dapat melakukannya.
chaos

9
Ide bagus - posting kesalahan Anda yang paling merusak secara publik di internet untuk dilihat semua pengusaha di masa depan! :)
Sam Schutte

Jawaban:


46

Di SQL server, pada sistem produksi:

update customer set password = '' <enter>

Cadangan terbaru seperti berumur seminggu.

Untuk mengurangi ini, saya sekarang biasanya menulis selectpernyataan terlebih dahulu untuk memastikan saya sudah mendapatkan whereklausa yang benar, kemudian kembali dan mengeditnya untuk memasukkan setklausa dan mengubah pernyataan menjadi update.


11
Aduh. Pilihan lain adalah 'TRANSAKSI BEGIN'; senang mengetahui bahwa Anda dapat memutar kembali. :)
Murali Suriar

5
Kombinasi keduanya, pilih count (*) untuk melihat seberapa banyak saya pikir saya akan memperbarui, dan kemudian memperbarui dalam transaksi untuk melakukan pembaruan. Jika penghitungan cocok, jika tidak kembalikan dan cari tahu alasannya. Tentu saja, saya tidak melakukan itu untuk pembaruan "sederhana", dan itu selalu yang mengacaukan Anda. :-)
WaldenL

Bersalah, saya sudah melakukannya sendiri :(
Jim OHalloran

8
Berhati-hatilah dengan TRANSAKSI MULAI pada sistem langsung (atau sistem pengujian yang digunakan oleh orang lain juga) - pastikan Anda KOMIT atau ROLLBACK segera atau Anda mungkin menemui jalan buntu proses lain menunggu kunci pada sumber daya yang memegang kunci transaksi Anda.
David Spillett

Pada beberapa sistem, Anda dapat membuat; menjadi pengidentifikasi penyelesaian pernyataan, alih-alih <enter>
J. Polfer

37

Kesalahan terbesar? Berpikir saya telah menetapkan dua variabel ketika saya belum. Jadi rm -rf $ VARIABLE / $ VARIABLE2 menjadi rm -rf /. FreeBSD baru-baru ini memperbarui alat rm mereka sehingga rm -rf / tidak mungkin lagi karena kesalahan ini!


4
Saya ingin menunjukkan, membaca ulang kalimat saya, sepertinya saya adalah alasan untuk mengubah cara saya bekerja, ini bukan masalahnya. Tampaknya orang-orang menggunakan rm dalam skrip dan hal yang sama terjadi dan mereka ingin menambahkan safe-safe.
X-Istence

3
i menarik suara saya kemudian :)
Colin Pickard

Saya pernah melihat seorang pria melakukan rm -rf / usr / local / junk ... Saya melihatnya, tetapi tidak pada waktunya untuk mencegahnya dari memukul masuk.
Satanicpuppy

Bagaimana dengan "rm -rf / *" alih-alih "rm -rf /"? Saya tidak tahu bagaimana tampilannya di BSD sekarang, tetapi harus bekerja;)
Ryszard Stawiarski

26
shutdown -h now 

dimaksudkan untuk workstation lokal, tetapi mengetiknya saat login melalui ssh pada server produksi. Sejak itu saya selalu memiliki nama host di blog saya $PS1.


Setidaknya Anda mungkin tidak akan kehilangan data apa pun ...
Zifre

Benar, tapi itu sudah lama sekali, IPMI atau KVMoIP belum populer. Kami harus menghubungi teknisi untuk benar-benar pergi ke sana dan membalik saklar.
vartec


Bahkan di workstation lokal, saya selalu menggunakan "+1" untuk berjaga-jaga.
msanford

3
Saya dulu memasukkan nama host di prompt, tetapi sekarang saya telah menambal perintah shutdown (dan terkait - halt et al) untuk meminta saya memasukkan nama mesin saat ini sebelum akan menjalankan perintah. Itu memberi saya langkah ekstra yang diperlukan untuk menyadari bahwa saya baru saja mematikan server yang salah. Masalahnya adalah, begitu saya menerapkan tambalan itu, saya tidak pernah melakukannya lagi - tetapi itu menyelamatkan beberapa rekan saya tho :)
Moo

26

Menghilangkan -r dari perintah shutdown. Di server jauh. Di sisi lain negara itu. Tanpa staf TI di kantor jarak jauh.

Kita semua sudah melakukannya, hampir seperti ritual perjalanan pada tahap ini.


25

Pada sistem VMS, saya telah menggunakan perintah ASSIGN DCL untuk menetapkan nama logis, dan saya ingin MENGINGAT lagi baris perintah ASSIGN sebelumnya. Sekarang, di VMS, Anda hanya mengetik karakter karakter sebanyak-banyaknya agar tidak ambigu. Jadi saya bermaksud mengetik

ASS REKAM

tapi saya tidak sengaja mengetik

ASS REQ

sebagai gantinya. REQ cukup jelas untuk perintah REQUEST, yang menyiarkan argumen kepada semua orang dengan privat operator (yang adalah semua orang di TI). Jadi seluruh departemen menerima pesan siaran saya yang hanya "ASS".


Lucu :-) :-)
Ludwig Weinzierl

1
Semua Perangkat Lunak Sucks, seperti yang kita semua tahu. Mengapa ada yang berpikir itu berarti sesuatu yang lain?
Adriano Varoli Piazza

24

Pada sistem Solaris: "killall dataLoader".

'dataLoader' adalah aplikasi yang sedang saya kerjakan. Di Linux, killall bekerja seperti pkill. Ini mengirimkan sinyal ke proses yang cocok dengan string yang diberikan sebagai argumen. Di Solaris, killall mencoba untuk membunuh semua yang ada di sistem yang bisa dimatikan pengguna saat ini. Saya root.


pernah ke sana, melakukan itu ...
James

2
Saya telah melakukan hal yang persis sama dua minggu lalu dalam sistem Power 5 AIX 6 ... Ok, tidak persis, saya melakukan "killall -9 java" :)
Andor

3
@Andor: Ya, Anda membunuh javadengan pasti. ;)
Bobby

16

Suatu kali, beberapa bulan yang lalu, saya perlu menemukan executable tertentu tetapi tidak dapat mengingat nama lengkapnya (tetapi dapat mengingat beberapa huruf). Jadi saya pikir saya akan memeriksa direktori / usr / bin dengan sesuatu seperti ini

rm /usr/bin/i*g*

Aneh. Tidak ada yang kembali. Mengira saya baru saja salah mengingat huruf kedua, saya mencoba lagi

rm /usr/bin/i*

Sekali lagi, tidak ada apa-apa. Setelah melakukan hal yang sama dengan / usr / local / bin, / usr / sbin, dan apa pun yang saya pikir mungkin ada di dalamnya, saya menyadari bahwa saya telah salah mengetik perintah 'ls'.

Saya tidak tahu dari mana asalnya, tapi itu jelas bukan kesalahan yang pernah saya lakukan lagi.


Ini adalah sesuatu yang harus diperhatikan ketika menggunakan kembali jalur seperti, katakanlah ls / etc / something, Ctrl + r, Ctrl + a, Del, Del, cat, Enter.
Alex

8
Bahkan di server saya tidak mengembalikan apa pun.
Mircea Vutcovici


16

Mencoba mengubah kepemilikan segala sesuatu dalam direktori, termasuk file dot, dengan:

chown -R user * .*

Coba tebak apa yang dilakukannya?


10
baca email -sangat cepat ???
Wiren

5
Pernah ke sana, ini mengajari saya. [^.] * Pola sangat baik
Maciej Pasternacki

1
@chaos: Perintah ini tampaknya menghapus semua yang ada di direktori Anda saat ini, dan bahkan file-file dot
Léo Léopold Hertz 준영

2
@chaos: Itu tidak menghapus .. dan tidak pernah dan tidak akan pernah. Anda salah besar. Tolong kutip implementasi unix tunggal yang memang memiliki perilaku ini (yang belum pernah saya lihat dan yang didokumentasikan tidak menjadi perilaku unix super-antik bahkan seperti edisi ke-7 unix).
chris

1
Apakah ./.* mencegah hal ini, atau apakah itu masih menyebarkan kembali pohon direktori melalui ./../?
tj111

15

Dimaksudkan untuk menghancurkan / dev / sdb, untungnya saya memiliki cadangan up-to-date yang bagus

dd if=/dev/urandom of=/dev/sda

Melakukan itu sekali (kecuali dengan / dev / nol), menghancurkan partisi root dari server Linux, pulih dengan menyalin semuanya kembali dari server yang sama.
Marius Gedminas

14
select * from <File1> join <file2>

Pada kotak produksi. Perhatikan kurangnya onklausa. :-) Kedua tabel adalah multi-juta tabel baris, dan ini berada di AS / 400 di pertengahan 90-an di mana setelah SQL berjalan Anda tidak bisa membunuhnya.


14

Di salah satu server produksi data kami, salah satu root saya mengetik:

chmod -R 777 /

Karena dia mendapatkan kesalahan izin dengan beberapa skrip ...

Tak lama setelah itu, kunci pribadinya dihapus dari semua server dan dia mengurus pengembalian data 1TB di server produksi data ...


12

Favorit erm saya adalah ketika saya masih di universitas. Saya sedang membangun aplikasi (saya tidak ingat apa) dan karena saya tidak root, saya sudah membuatnya

PREFIX=~username/usr/local

Jadi saya bisa menginstalnya ke direktori home saya. Sayangnya itu diinstal ke

/home/username/src/app/~username/usr/local

sebagai gantinya. Tentu untuk menghapusnya sebagai mulai lagi saya dieksekusi

rm -rf ~username

Di direktori sumber.

Saya bertanya-tanya mengapa itu begitu lama ....

:-)

Namun yang terburuk adalah ketika saya bekerja dengan workstation solaris dan setelah mendapatkan semuanya setup kami ingin menghapus konfigurasi siap untuk konfigurasi hidup. Jadi saya dieksekusi

sys-unconfig

Setuju dengan pesan peringatan dan alih-alih mesin reboot dan kembali ke "default pabrik" Jendela xterm hanya mengatakan

connection closed by foreign host.

Moral dari cerita Jangan pernah membiarkan shell root terbuka di host lain! PERNAH!!


Saya menggunakan nama host di PS1, sendiri. Pada titik tertentu saya menggunakan warna yang berbeda untuk login lokal dan jarak jauh (juga warna berbeda untuk pengguna / root).
Marius Gedminas

12

Bertahun-tahun yang lalu saya berada di rumah mengkodekan beberapa hal dalam php saat bekerja pada sebuah proyek dengan seorang teman saya yang adalah pengelola proyek. Kami saling mengirim pesan dalam upaya kolaborasi. Kami selalu bercanda bolak-balik dalam bermain.

Saya sedang mencoba untuk mendapatkan ssh-agent untuk bekerja dengan baik pada mesin saya sementara kami mengalami perang agama Perl vs PHP. Kemudian saya menyebutkan sesuatu tentang ssh-agent yang perlu dievaluasi (tidak yakin mengapa saya mengatakan itu). Jadi dia mengirimi saya pesan ini sebagai upaya, jadi saya pikir, untuk membantu saya dengan masalah saya (ingatlah bahwa saya dituntut untuk melakukan root):

\# eval $(echo ssh-agent | 
perl -pe 's/h-a/m -r/' | 
perl -pe 's/^ss/r/' | 
perl -pe 's/gent/f \//')

PERINGATAN! JANGAN LARI PERINTAH YANG !!!

JIKA Anda menghapus eval dan menjalankan perintah dalam dengan sendirinya itu adalah:

rm -rf /

Butuh saya semua 4 detik untuk melihat apa yang terjadi tetapi kerusakan sudah dilakukan. Saya harus menginstal ulang OS saya. Untungnya, tidak ada pekerjaan saya yang dihapus kecuali beberapa hal di / etc iirc. Dia tertawa besar ketika saya mengiriminya pesan horor yang menanyakan mengapa dia melakukan itu. Kami berdua adalah insinyur sistem jangka panjang. Dia tidak berpikir saya akan menjalankannya dan akan lebih berhati-hati untuk memeriksanya sebelum hanya melakukannya dan saya hanya mempercayainya sehingga saya bahkan tidak menganggap dia bermain-main. Tak perlu dikatakan, cerita kecil ini muncul sepanjang waktu di antara kami. Jadi, saya memutuskan untuk mengabadikannya.

Bagaimana saya mengurangi ini terjadi lagi? Saya tidak percaya siapa pun!

Kisah lain yang kurang menarik adalah beberapa tahun yang lalu saya melakukan beberapa pekerjaan pada kotak kritis misi di tempat kerja. Saya punya beberapa istilah yang terbuka untuk mesin yang berbeda. Saya perlu menghapus beberapa hal yang tidak perlu dalam direktori. Yah, aku tersesat dalam hal dan sengaja rm'ed tapi . di dir lokal saya tetapi pada host yang salah (istilah yang salah) !!. Saya menjalankan perintah di / var / lib / mysql bukan / tmp pada server aplikasi (istilah yang berbeda). Tidak perlu dikatakan, saya menghapus database produksi. Untungnya, kami memiliki siaga hangat yang kami lakukan ketika saya dan rekan kerja membangun kembali primer dari cadangan dan siaga. Butuh sekitar 18 jam untuk melakukannya.

Mitigasi: lebih berhati-hati tentang windows apa yang saya jalankan perintah sebelum menjalankannya.


Di tempat kerja kita semua mengkonfigurasi .bashrc dari semua server kita untuk menampilkan nama pengguna dalam bash dalam warna unik. Dengan begitu Anda selalu dapat melihat dengan instan tentang mesin apa Anda. (Ok, itu bisa menjadi masalah ketika Anda mengelola lebih dari mungkin 20-30 mesin ... Tapi masih sangat berguna.)
fgysin mengembalikan Monica

+1 untuk kepercayaan, tidak seorang pun.
Wayne Werner

11

versi singkat

#/bin/bash
$0&
$0

untuk apa nilainya, jika Anda pernah melakukan itu bukan sebagai root, jalankankill -9 -1
BCS

3
apa fungsinya?
Nathan DeWitt

6
Itu menyebut diri di latar belakang daripada tanpa menunggu sampai selesai, menyebut diri lagi: alias Fork Bomb
BCS

2
@Masi: Tidak jika komputer cukup cepat dan skripnya cukup panjang. Khususnya jika Anda tidak tahu itu akan terjadi.
voyager

3
Jatuhkan #!/bin/bash, dan saya pikir ini akan memenangkan golf kode untuk forkbomb terpendek di bash.
Joey Adams

11

Saya pernah ingin menghapus banyak file dalam direktori.

del *.*

Komputer kemudian berkata, "Apakah kamu yakin? [Y / T]" Saya pikir "TENTU SAJA Saya yakin, saya tidak akan mengetik perintah sialan di sebaliknya! Sheesh komputer bodoh menggerutu ..."

Y <enter>

C:\Windows>_

Um ... WTF? Apakah saya baru saja menghapus direktori windows saya? ....

undelete *.*

Pada hari-hari hard disk kecil saya tahu untuk apa setiap file di c: \ windows dan untuk apa namanya, tetapi bahkan setelah menghapus semua sistem tidak pernah sama. Saya mendapat sedikit rasa hormat untuk bisikan "apakah Anda yakin". Hanya sedikit.


1
Saya pernah melakukan hal yang persis sama. Saya mendapatkan sistem untuk boot dan menjalankan lagi, tetapi tidak pernah benar lagi. Saya membangun kembali sistem sekitar seminggu kemudian.
Jim OHalloran

11

Saya pikir hal paling bodoh yang pernah saya lakukan adalah menghapus rute default pada keluar firewall cluster eksternal - sementara vpn'ed ke desktop saya lebih dari seratus mil jauhnya.

Untungnya itu dalam periode yang ditentukan sebagai downtime yang direncanakan (untuk berjaga-jaga), tapi itu tidak menyelamatkan saya perjalanan pulang pergi 200 mil dan mengkonfigurasi ulang firewall di tempat. Itu juga tidak membantu bahwa ini mengeluarkan sistem produksi internet kami yang terbuka selama perjalanan saya dan perbaikan selanjutnya.

Kita semua tahu definisi nano-detik. Ohno-detik bahkan lebih kecil, dan ini adalah waktu antara memukul 'masuk' dan menyadari kesalahan Anda.


11

Pertama dari dua ...

Pada kotak Solaris kami memiliki cadangan tar dari mesin AIX ..

Salah satu Pengembang mengetik:

tax xvf AIX_Backup.tar

Tentu saja jalur dalam pajak itu absolut dan kami akhirnya membuat distro baru unix ... Solarix ... Satu-satunya masalah dengan distro adalah ia tidak bisa boot :(


10

Kisah yang diceritakan kepada saya:

Cabang lain dipanggil karena PBX lokal mereka memiliki beberapa masalah. Setelah beberapa penyelidikan, kami mengetahui bahwa mereka memperbarui server mereka, tetapi bukan konfigurasi Asterisk mereka. Jadi, admin memutuskan untuk menginstruksikan pria cabang untuk mengulang konfigurasi.

Admin: "Oke, sekarang, ketik rm -rf / etc / asterisk"

Orang: "Oke."

Admin: "Sekarang, ketik cp / var / ..."

Guy: "Tunggu, masih berjalan ..."

Admin: ??? ... !!!


1
Jika ada yang salah, itu akan salah.
Joey Adams

9
rm -rf / some/path 

dari pada

rm -rf /some/path 

Untungnya itu tidak terjadi pada saya ;-)


terjadi pada teman sekelas saya baru-baru ini. Untungnya itu hanya dengan / etc / some / other / path
Ikke

Itu harus dinonaktifkan! Saya pikir itu sekarang dinonaktifkan di banyak OS. Terlalu takut untuk mencoba, di Ubuntu rm -rf /
Lakshman Prasad

Sebenarnya, itu akan berbahaya untuk sistem hanya dengan sudo rm-rf /
voyager

Pernah ke sana, melakukan itu ...
fgysin mengembalikan Monica

9
source ~/.bash_history

Niat saya adalah sumber .bashrc, tapi saya terlalu tergesa-gesa dengan tab-complete ...


+1: Yang itu luar biasa.
Satanicpuppy


8

XCOPYadalah binatang yang kuat - tanpa ampun dalam eksekusi itu dan terbelakang oleh fakta bahwa baris perintahnya bertolak belakang dengan Window COPYdan UNIX cp.

Beberapa hari yang lalu saya tidak sengaja menulis:

xcopy src \path\to\a\new\nonexistent\directory

XCOPYcukup baik untuk menimpa srcdirektori saya dengan ... tidak ada! Dan itu tidak repot-repot untuk meletakkan file lama di keranjang sampah juga.

Oh, dan ternyata XCOPYsebenarnya menimpa sektor yang sama pada disk alih-alih mengalokasikan yang baru. Saya sudah mencoba 3 program pemulihan disk, dan yang terbaik hanya bisa memulihkan 3 dari 10 file yang hilang. Tentu saja 3 file itu hanya vshost.exedan teman-temannya. Membengkak!


8

punya masalah dengan jaringan (pada mesin remote) dan hanya ingin me-restart antarmuka

ifconfig eth0 down && ifconfig eth0 upp

Saat ini, saya memastikan seseorang berada di dekat mesin sebelum mencoba hal-hal seperti ini (iptables adalah kandidat yang baik juga). Dan ketika tidak ada orang di sana, saya pernah mengetik

sleep 600; reboot

ke terminal (layar) lain, sehingga akan reboot jika saya tidak bisa ctrl + c perintah dalam waktu 10 menit.

Saya belajar dari kesalahan itu juga (ctrl + c tidur akan menjalankan reboot) dan sekarang saya gunakan

sleep 600 && reboot

yang akan memungkinkan saya untuk ctrl + c itu.


1
shutdown -r +5akan reboot sistem dalam 5 menit, kecuali jika Anda mematikan shutdownproses dengan killall shutdownmisalnya.
gelraen

1
Saya hanya bisa melihat admin yang membuat kesalahan mihi di bawah Solaris, kemudian (belajar dari kesalahan) mencoba alternatif gelraen.
outis

8
ifconfig eth0 down

Ups, saya di sisi eksternal eth0. Server web ada di sisi lain dunia, di ruang terkunci. Tanpa akses jaringan untuk login atau reboot. Sampah.


6

Cookie gratis untuk siapa saja yang dapat memberi tahu saya mengapa saya idiot karena mencoba menghapus semua file dan direktori yang tersembunyi dengan demikian:

rm -rf. *


1
Apakah perintah Anda menghapus subdirektori di bawah direktori Anda saat ini juga?
Léo Léopold Hertz 준영

Saya ingin tahu apakah pola Anda cocok dengan ..hardlink
Mircea Vutcovici

BTW, kalian berdua memenangkan cookie :-)
Matt Simmons

6

Saat membersihkan folder rumah saya di server web produksi, saya lupa bahwa saya telah menghubungkan root web server ke suatu tempat di folder rumah saya. Tidak berpikir, saya menjalankan rm -rf pada folder itu dan hal berikutnya yang saya tahu, orang-orang menyebut situs webnya rusak!

OOPS!


5

Saya pernah membandingkan data dalam dua folder dan menjalankan rsync dengan opsi -d (hapus file pada tujuan yang tidak pada sumbernya). Dan kemudian saya beralih di sekitar sumber dan tujuan ketika saya berlari rsync. Itu menghapus semua file baru, yang ingin saya backup. Sekarang saya belajar menjalankan rsync dengan -n (dry-run).

rsync -trvd --stats --progress /destination /source

Saya tidak punya cadangan.


4

Sekali waktu (mungkin Sistem III, tapi itu sudah lama), dimungkinkan untuk membuat file bernama *dengan menggunakan kutipan shell yang tepat. Ketika saya menemukan satu di direktori rumah saya, saya telah mengetik rm *dan jari saya pada tombol kembali ketika sesuatu membuat saya ragu dan memikirkannya ...

Membuat file seperti itu untuk pengguna lain adalah lelucon umum.

Jika file itu duduk di sana dalam direktori, itu sulit untuk dimitigasi. Refleks untuk hanya mengetik namanya persis seperti yang lsditampilkan itu cukup kuat.

Prank lain (kurang berbahaya) adalah memberi nama file dengan spasi putih (atau hanya spasi putih) yang jauh lebih sulit untuk dihapus ...


2
Itulah gunanya GUI :)
Zifre

1
penyelesaian shell adalah penghemat waktu nyata untuk file-file ruang angkasa :)
Tn. Shiny dan Baru

1
Ini akan menjadi ca. 1985, dan diakses melalui dialup atau melalui kabel RS-232 dari klon terminal VT-100. Bukan emulator terminal, tetapi terminal aktual. Saya tidak ingat csh memiliki penyelesaian nama pada saat itu ... ;-) Hari ini, tentu saja, GUI dan penyelesaian nama membuat keduanya kurang berisiko, dan banyak OS membuatnya jauh lebih sulit untuk membuat file seperti itu tanpa menggunakan pengeditan sektor disk ....
RBerteig

menyentuh ./--help maka tidak rm --help atau rm * akan bekerja ...
mihi

Anda masih dapat membuat file bernama , setidaknya di Linux: "touch ' '". Dan "rm '*'" juga berfungsi ...
sleske

4

Karena beberapa pengalaman buruk dengan kelemahan JBoss umum setelah restart, saya ingin menghapus file kerja JBoss sebelum memulai ulang. Saya biasanya akan melakukan:

# cd /var/cache/jboss
# rm -rf tmp/* work/*

Untuk melindungi diri saya dari mengetik salah satu dari banyak kesalahan yang mungkin terjadi, seperti:

  • / tmp / *
  • tmp / *
  • Anda mendapatkan idenya

Saya membuat perintah terakhir:

# sudo -u jboss rm -rf tmp/* work/*

Karena pengguna JBoss akan merasa kesulitan untuk menghapus file penting yang bukan miliknya.

Sebenarnya saya tidak pernah melakukan kesalahan itu, tetapi saya aman jika saya melakukannya.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.