Yanıtlar:
chmod 000 /
İşe yararsa merak ettim .
Kusursuzca. Birkaç dakika sonra bir kurtarma CD'si arıyordum.
Katıldığım üniversitede kullanıcı danışmanı olarak çalışmaya başladığımda sudo
şifrelerini kaybeden / unutmuş öğrencilere yardım etmek için sınırlı haklar verildi . sudo passwd <username>
yeni arkadaşımdı Oryantasyonumdan bir saat sonra merakım benden daha iyi anladı ve ben de girdim sudo passwd
ve yeni bir şifre isteminde dehşete düştüm . ^C
Söz konusu hesabı geçici bir durumda bırakabileceğimi düşündüğümden (hatalı bir şekilde ortaya çıktığını düşündüm), çıkış yolumdan biraz korktum , bu yüzden bir şifre girdim ve hemen üst kattaki boşluğun 2. katına kadar yürüdüm. Kampüs SuperUser ve ana sistemin kök şifresini bilmek isteyip istemediğini sordu.
passwd
root olarak çalıştırıldığında komik davranır. Örneğin, yazım hatası denetimi başarısız olduğunda, tekrar sorar.
Şaşırmış kimse henüz bundan bahsetmedi:
rm -rf .*
(Tüm gizli dosyaları ve alt dizinleri kaldırmaya çalışırken, içine yineleneceğini tamamen unutmak .
ve ..
)
rm
şimdi bunu yapmaz. Darwin'i denedim ve hatayı aldım rm: "." and ".." may not be removed
.
.
ve ..
kullanımı .[^.]*
. (Aslında, bu başlangıçta başlayan tüm dosyaları özleyecektir ..
, ancak genellikle yalnızca bir tane var.)
.??*
daha kolay bulduğum başka bir yol da . Bu, iki harfli nokta dosyalarıyla eşleşmeyecek .a
, ancak bunlar da olağandışı. grep -r .??*
Örneğin ev dizinimdeki config dosyalarında arama yapıyorum .
Makefile:
clean:
@rm -f * .o
Elbette, make clean
kaynak kodunuzu yalnızca nesne dosyaları yerine siler.
Ders: sürüm kontrolünü kullanın.
*
.o
:() { :|:&}; :
Konsol erişimine sahip olmadığımız uzak bir sunucuda çalışan bir arkadaşım vardı . Tamamen donmuş, üretim sunucusu yeniden başlatılamadı .
Biraz daha okunabilir hale getirmek için bozuldu (istek üzerine).
:() # Define ':' as a function. Every time we say ':' execute the following code block
{ # Start of code block
: # Call ':' again.
| # Pipe output to...
: # Another ':'
& # Disown process.
# All on one line this would read :|:&,
} # End of code block
; # End definition of ':' as a function
: # Call ':'
Olarak bakmak daha kolay olabilir
bomb() { bomb|bomb& }; bomb
:
hiçbir şey yapmaz. Ve hiç bellek kullanmıyor, sadece çok fazla çatal. [Evet, denedim :)]. Etkiler, kullanıcı başına işlem sayısı kotasıyla engellenebilir.
İyi demek istedim, gerçekten yaptım. Çalışılıyor chmod
yinelemeli bir dizin ve takas kadar sona erdi ./
ile /
.
Elbette kök olarak, çünkü sadece kök ile gerçek acı (ve böylece aydınlanma) elde edilebilir.
Ana sürücümün bölme tablasını kazara silip, başka bir sürücüde çalıştığımı düşündüm.
Kaydırma, df
belleği ve şansı dikkatli bir şekilde kullanma, tam olarak yeniden oluşturabildim, yeniden yazdım, yeniden başlattım ve umut ettim ... Ve işe yaradı.
dd
bloğu file -
bulmak ve böylece dosya sisteminin başlangıcını bulmak için her silindirin ilk 4k bloğunu okuyan bir bash döngüsü kullandık . Bu, canlı bir CD'deydi ve yapmamız gereken her şeyi yapmak için yeterli RAM yoktu (bir ya da iki paketin kurulması dahil), bu yüzden başka bir makinede ssh ile çalışan bir işleme yöneldik.
sfdisk -O
bölüm tablosunu yedeklemek için kullanıyorum . Bilginize: cgsecurity.org/wiki/TestDisk @Neil Mayhew’in yaptığı şeyi otomatikleştirebilir.
testdisk
Kutumu kurtardı
gpart
dosya sistemlerine benzeyebilecek şeyleri araştıran ve bundan bir bölümleme tablosu oluşturan var.
Gerçekten benim anım değil, başka birinin.
Nükleer bilimler araştırma tesisinde çalışırken eskiden birkaç SunOS, Ultrix ve Linux bilgisayar kullandık ve araştırmacılar bu makinelerde CPU'yu paylaşmak zorunda kaldılar. Bireysel araştırma grupları kendi araştırma hibelerini aldıklarında, çoğunlukla SparcStation'ları kendi bilgisayarlarını aldılar ve sistem yönetimini kendileri yaptılar.
SunOS, OpenView masaüstüyle ve hoş bir dosya yöneticisiyle gönderilirken, şöyle görünüyordu:
Araştırmacılarımızın çoğu kök olarak çalışıyordu ve bir kereden fazla işletim sistemlerini yeniden kurmak zorunda kaldık, çünkü birisi kök dizini düzenli hale getirmeye karar verdi ve / bin, / etc, / tmp ve her ikisini de içine alan her şeyi değiştirdi. Çöp Kutusu veya bazı alt klasörler.
Diğer kullanıcılar / bin dizinini düzenlemeyi ve bilmedikleri herhangi bir komutu kaldırmayı seçtiler.
Şanslı olanlar yedekler aldılar, çoğu bir teyp sürücüsü satın aldılar, ancak yedekleme yapma geleneği yoktu.
90'lı yılların ortasından ortasına kadar bir arkadaşım ve ben rm -rf *
bir Linux kutusunun ne kadar çılgına döneceğini aptalca tartışıyorduk . Dinamik olarak bağlanmış kütüphanelere karşı statik olarak bağlandık ve sistemin oldukça iyi yaşayabileceğini /lib
ve daha sonra iş istasyonumda yeniden adlandırmaya başladığımı belirttim. Kötü şeyler oldu , ancak hasarı denemek ve düzeltmek için birkaç açık konsol penceresi kaldı (artık bir seçenek değildi). Editörlerin hiçbiri yayınlanmayacaktı. echo
Komut için bulabileceğiniz ezoterik kullanımların şaşırtıcı .
vi
ve Caps-Lockvs./etc/passwd
su -
vi /etc/passwd
. Hiçbir şey yok vipw
ve yine de "sadece küçük düzenlemeler yapıyoruz".Bunu bir kere yaptım. Şaşırtıcı bir şekilde, sistem aylarca işlevsel kaldı. Cronjobs iyi çalıştı, kayıt dosyalarında hiçbir hata göze çarpmadı.
Aylar sonra sistemi yeniden başlatana ve konsola giriş yapamayana kadar bu sorunu fark etmedik. ps
'0' kullanıcısına ait 'root' kullanıcısına ait olmayan bir sürü iş gösterdi.
Kök olarak giriş yapamadınız, çalıştıramazsınız su
veya bu kutuda su -
hiçbir şey yoktu sudo
. Disket sürücü yoktu, CD-ROM bozuldu ve USB bağlantı noktası yoktu (yani harici CD-ROM yok). Tek kullanıcı modu işe yaramadı, çünkü root için bir şifre yazmanız gerekiyor ve bu mesaj bundan geliyor /etc/passwd
.
rm -f * ~
ve
rm -rf ${DIR}/
ne zaman DIR
ayarlanmadı!
${DIR}
istiyorsun Çünkü $(DIR)
DIR komutunu çalıştırmayı deneyecekti.
halt
Birkaç saniye sonra, yerel bir kabukta olmadığımı ve üretim sunucusunu tekrar açma şansım olmadığını belirten basit bir tanıma.
Dersler öğrenildi? Makinenin istemi şimdi benziyor
[ --> root <-- @kompost:/home/echox] #
bazı güzel kırmızı işaretlerle ;-)
molly-guard
Uzaktan giriş yapıp yapmadığınızı kontrol eden ve bunu gerçekten yapmak isteyip istemediğinizi soran bir araç var .
En sevdiğim an, bir emacs kullanıcısı olan bir iş arkadaşının önemli bir dosyayı düzenlemek istediği zamandı.
Çünkü emacs
yazması gereken bir takma ad oluşturması çok fazla emacs
:
alias em=emacs
Yeterince ya da çok fazla kahvenin etkisiyle elbette yanlış yazılmış em
...
Peki, bu sadece kullanmak için başka bir sebep vi
...;)
alias e=emacs
.
Ya da başka bir deneyim, tek tek o kadar aptal görünmeyen birkaç kolay adımda gerçekten aptal hissetmek nasıl.
Birinci adım: Linux kutusu kullanmak istese bile çocuk için bir hesap oluşturun. Önemsiz bir şifre verin, çünkü bunlardan sonra bir ev sistemidir ve internete maruz kalmaz.
İkinci adım: zamanın geçmesine izin verin, böylece birinci adımı hatırlamıyorsunuz.
Üçüncü adım: SSH portunu güvenlik duvarında (aslında yönlendiricideki NAT) ssh açmak için açın. Sonuçta, hesaplarımın oldukça iyi şifreleri var ve çok değerli bir şey yok.
Dördüncü adım: ISS'den bir İsveç sitesine gidilecek bir çeşit DOS etkinliği olduğuna dair bildirim alın. Muhtemelen Windows kutuları olduğunu düşünün, inceleyin ve sertleştirin.
Beşinci adım: ISS'den hala devam ettiğini bildirmek. Biraz bilgi isteyin, İsveç sitesinin IP adresini alın, Wireshark'ı ateşleyin, saldırının hangi kutudan geldiğini bulun.
Altıncı adım: Linux kutusunu temizleyin, aptal hissediyorum. Giriş bulmak Rumen adresinden geldi. Hesapları iyi şifreler olmadan kaldırın.
Üniversitedeyken bilgisayar laboratuvarlarında, ileri geri yüzebilecek bir sürü topu taklit eden bir ekran koruyucular vardı. Her biri simüle yerçekimi ile çekti.
Bir zamanlar, ben ayarları ile uğraşırken, hata ile düştü Error: force on balls too great
Bir zamanlar Unix için bir aygıt sürücüsü geliştiriyordum. Bir işaretçi sorunu vardı ve test sırasında çekirdek belleğindeki bir dizinin sonunu yazmaya başladı. Bunu tespit etmekte yavaştı ve hemen sıfırlama düğmesine basmadım. Sürücü, sıfırlama düğmesine basmadan önce diske temizlenen tüm disk arabelleği önbelleği üzerine karaladı. Blokların çoğu inode ve dizinlerdi ve tamamen çöpe atılmış bir dosya sistemiyle sonuçlanmıştı. Sanırım 6000 öksüz dosya, lost+found
pes etmeden ve tekrar kurmadan önce konuldu . Neyse ki, bu sadece bir test sistemiydi, üzerinde bulunan tüm dosyalarımı içeren iş istasyonum değil.
Ben silindi / vs ve sonra iyileşti . Dersimi öğrendiğimi sanmıyorum ... Ben de silinmiş bir şeyden kurtarmak zorunda kaldım /bin
. Bir ile çalışırken oldu gibi görünüyor chroot
.
Geçen yıl, bir meslektaşım dd
komutu kullanarak flash disklerin kopyalarını oluşturmak için linux iş istasyonlarımızdan birini kullanıyordu . Yanlışlıkla aşağıdakine benzer bir şey yazdı:
dd if=flash-image.img of=/dev/sda1
Hata yaptığını anlayınca - flash sürücü yerine makinenin sabit diskinin üzerine yazma - makine çoktan hortumlanmıştı. Bu arada, aynı zamanda tüm geliştirme VM'lerimizi barındıran makine olan kutuyu yeniden inşa etmek zorunda kaldık.
dd
!!! :-)
Bu bana geçen yıl oldu. Geçici bir değişken kullanarak bazı dosyaları sunucudan kaldırıyordum:
rm -rf ${prefix}*
Bil bakalım ne oldu? Değişken $prefix
tanımlanmadı!
Felaketi hayal edebiliyorsunuz ... sonuçta bazı çok kritik dosyaların silinmesine neden oldu.
Neredeyse kırdı Control-Cve ağ kablosunu çıkarmak için CPU koştu!
Hahaha Birinin zaten bunu yapmış olduğuna eminim.
Bilgisayar bilimi okuduğum 2. yılımdayken, C'ye bir dizi alt işlemi yerleştirecek fork
ve bunları "daire" içinde borularla iletişim kurmaları ve hangisinin "lider olması gerektiğini anlamaları için bir program yazmak için ev ödevi verildi. ".
O zamanlar hâlâ oldukça kibirliydik ve çoğu kişinin Linux makinesi yoktu, bu yüzden fakültemizin ana sunucusundaki (resmi siteyi ve personel hesaplarını ve sitelerini barındıran) hesaplarımız üzerinde çalıştık. İnsanların çoğu ödevlerini yapmaya çalışırken bir aşamada çatal yazdı. Grubumun yarısından fazlası abusers
dosyaya girdi . Uzun zamandır bu sunucudaki en yüksek yük buydu :)
Üniversitem kablosuz ağını tescilli Cisco LEAP kimlik doğrulaması kullanmaya değiştirmeye karar verdiğinde ...
Yeterince iyi biten çok uzun bir savaş başlattı. Linux çalıştırmak ve internete erişmek isteyenler için dokümantasyon yazdı. Altı ay sonra, PEAP desteği de eklemeye karar verdiler. yüz tokat
Benim favorim çünkü kazandım. İşe aldım.
Bir Linux sınıfı için laboratuar asistanlığı yaptım. Öğrencilerden biri beni aradı, çünkü artık su -
kazanamıyordu permission denied
. Tamam, şifreyi yanlış anladı / yanlış yazdı. Tek kullanıcılı moda yeniden başla ve sıfırla. Ne?! su
STILL çalışmıyor mu? İsteğime boyun eğmeli! Bu yüzden ne yaptığını bulmak için tek kullanıcı modunda yeniden başlatıyorum. Koştuğunu fark ettim.chmod -R 777 /var/www/html/drupal-6.19 /
Dizin adı ile son eğik çizgi arasındaki boşluğa dikkat edin.
Birkaç dakika sonra "Gerçekten yeniden yüklemesini istemiyorum, peki bu ne yapıyor ve nasıl.", Şimdi / bin / su dosya izinlerine sahip olduğunu bulmayı başardım 777
. Bu aynı zamanda 0777
setuid bitini kaldıran dosya izinleri olarak da okunabilir /bin/su
. Çabuk chmod u+s /bin/su
ve ben bir kahramandım.
Değil o acı ... Ama eğlenceli bir küçük anı:
ls
Olarak yanlış yazdım sl
ve sysadmin'in böyle bir şey için kurulu bir şeyi olduğunu öğrendim .
git init
git clean -f
Bu, depoyu kaldırmaz. Bu, depoda olmayan her şeyi kaldırır.
(Varolan repo kurtulmak ve yeniden kaynak kontrolünü başlatmak almak için denedikten sonra tamamlanan bir projenin ilk sürümü), bu iki komut benim tüm kod nuke.
Eskiden çalıştığım bir şirketin ürünü SCO'da çalışıyordu. Demo sunucumuzda yavaşlayan uygulamalar hakkında bazı hata ayıklamalar yapıyordum ve aynı zamanda bir grup müşteriye yaklaşmakta olan yeni özellikler hakkında bir demo / konferans verildi.
Bu yüzden, takılmaya çalışan uygulamayı koştum, kök nedenini doğrulamak için elimden geleni yaptım, ancak hala "sıkışmış" olduğundan öldürmeye çalıştım:
pkill -9 mytestapplication
Öğrendiğim şey, pkill’in SCO’da linux = 'da olduğu gibi aynısını yapmamasıydı.
... Temelde kullanıcının erişebildiği her şeyi öldürür ve root ile ... bu her şey =)
Debian'dan Ubuntu'ya geçişim, yazmak istediğiniz bazı dosyaları ve dizinleri silmeye çalıştığım gün başladı.
rm -r /var/tmp/*
Ne yazık ki, "/ var / tmp /" ve "*" arasına bir boşluk ekledim ve daha da kötüsü, dosya sisteminin kökündeydim.
root@workstation:/# rm -r /var/tmp/ *
Lütfen bunu evde denemeyin!
Bir noktada kurulmuş iki sürücüm vardı ve ikinci sürücünün kök dosya sistemini bir dizine monte ettim /mnt
. Bu dizindeydim ve silmeye çalıştım var
ama rm -rf /var
bunun yerine yazmaya başladım . Bazı içgüdüler , bir eğik çizgiden önce var
gelmesi gerektiğini söyleyen tekme gibi görünüyordu !
Ne yaptığımı anladığımda hemen çarptım Ctrl-Cama çok geçti. Benim rpm
veritabanı uzun binayı terk beri vardı. Her şeyi normale döndürmek için yaşlarımı harcadım.
Şimdi acı kısmı için.
/mnt
Ne yaptığımı sürdürmek için o dizine geri dönüyorum . Ne yazarım? Diyelim ki içgüdü tekrar başladı.
En azından, sistemi ikinci kez daha hızlı geri yükleyebildim;)
rm
emri aldığını komik . Ya da üzücü.