Làm thế nào về việc chia sẻ những bài học yêu thích của bạn những khoảnh khắc học được ?
Làm thế nào về việc chia sẻ những bài học yêu thích của bạn những khoảnh khắc học được ?
Câu trả lời:
Tôi tò mò nếu chmod 000 /
sẽ làm việc.
Vâng, hoàn hảo. Vài phút sau tôi đang tìm kiếm đĩa CD cứu hộ.
Khi tôi mới bắt đầu làm tư vấn người dùng cho trường đại học mà tôi đang theo học, tôi đã được trao sudo
quyền hạn chế để giúp sinh viên bị mất / quên mật khẩu. sudo passwd <username>
là bạn mới của tôi Một giờ sau định hướng của tôi, sự tò mò của tôi đã tốt hơn với tôi và tôi gõ vào sudo passwd
và nhìn chằm chằm vào nỗi kinh hoàng trước lời nhắc lấy mật khẩu mới. Tôi hơi sợ khi ^C
thoát ra khỏi nó, nghĩ rằng (rõ ràng là hóa ra) rằng tôi có thể để tài khoản bị nghi ngờ trong trạng thái thoáng qua, vì vậy tôi đã nhập mật khẩu và ngay lập tức đi lên cầu thang đến miền 2 của tầng 2 SuperUser trong khuôn viên trường và hỏi liệu anh ta có muốn biết mật khẩu gốc của hệ thống chính không.
passwd
cư xử buồn cười khi chạy bằng root. Ví dụ, khi không kiểm tra lỗi đánh máy, nó sẽ hỏi lại.
Ngạc nhiên không ai khác đã đề cập đến điều này chưa:
rm -rf .*
(Trong khi cố gắng xóa tất cả các tệp và thư mục con bị ẩn, hoàn toàn quên rằng nó sẽ lặp lại .
và ..
)
rm
sẽ không làm điều đó ngay bây giờ. Tôi đã thử trên Darwin và nhận được lỗi rm: "." and ".." may not be removed
.
.
và ..
, hãy sử dụng .[^.]*
. (Chà, điều này thực sự sẽ bỏ lỡ tất cả các tệp bắt đầu bằng ..
, nhưng thường chỉ có một.)
.??*
, tôi thấy dễ gõ hơn. Cái này sẽ không khớp với các tệp chấm hai chữ cái .a
, nhưng chúng cũng không bình thường. Tôi tìm kiếm các tập tin cấu hình trong thư mục nhà của tôi grep -r .??*
, ví dụ.
Makefile:
clean:
@rm -f * .o
Tất nhiên, điều này làm cho việc make clean
xóa mã nguồn của bạn thay vì chỉ các tệp đối tượng.
Bài học: sử dụng kiểm soát phiên bản.
*
và.o
Có một người bạn chạy :() { :|:&}; :
trên một máy chủ từ xa nơi chúng tôi không có quyền truy cập bàn điều khiển. Không thể khởi động lại nó, hoàn toàn đóng băng, máy chủ sản xuất .
Chia nhỏ (theo yêu cầu) để làm cho nó dễ đọc hơn một chút.
:() # 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 ':'
Nó có thể dễ dàng hơn để xem xét nó như là
bomb() { bomb|bomb& }; bomb
:
nó không làm gì. Và nó hoàn toàn không sử dụng bộ nhớ, chỉ là giả mạo rất nhiều. [Vâng, tôi đã thử nó :)]. Các hiệu ứng có thể bị chặn với một hạn ngạch về số lượng quy trình cho mỗi người dùng.
Tôi có nghĩa là tốt, tôi thực sự đã làm. Cố gắng chmod
đệ quy một thư mục và cuối cùng trao đổi ./
với /
.
Như gốc tất nhiên, bởi vì chỉ với gốc mới có thể đạt được nỗi đau thực sự (và do đó giác ngộ).
Tôi vô tình lau bảng phân vùng ổ đĩa chính của mình, nghĩ rằng tôi đang làm việc trên một ổ đĩa khác.
Với cuộn ngược, sử dụng cẩn thận df
, bộ nhớ và may mắn, tôi đã có thể tạo lại chính xác, viết lại, khởi động lại và hy vọng ... Và nó đã hoạt động.
dd
việc đọc khối 4k đầu tiên của mỗi hình trụ được file -
tìm thấy để siêu khối và do đó bắt đầu hệ thống tệp. Đây là trên một đĩa CD trực tiếp và không có đủ RAM để làm mọi thứ chúng ta cần làm (bao gồm cài đặt một hoặc hai gói) vì vậy chúng tôi đã tiến hành một quy trình chạy trong ssh trên một máy khác.
sfdisk -O
để sao lưu bảng phân vùng. FYI: cssecurity.org/wiki/TestDisk có thể tự động hóa những gì @Neil Mayhew đã làm.
testdisk
lưu hộp của tôi
gpart
, tìm kiếm những thứ có thể giống với các hệ thống tệp và xây dựng một bảng phân vùng từ đó.
Không thực sự là khoảnh khắc của tôi, nhưng của người khác.
Quay lại khi tôi làm việc tại một cơ sở nghiên cứu khoa học hạt nhân, chúng tôi đã từng chạy một số máy tính SunOS, Ultrix và Linux và các nhà nghiên cứu phải chia sẻ CPU trên các máy đó. Khi các nhóm nghiên cứu riêng lẻ nhận được tài trợ nghiên cứu của riêng họ, họ đã mua máy tính của riêng họ, chủ yếu là SparcStations và họ đã tự quản trị hệ thống.
SunOS được sử dụng để giao hàng với máy tính để bàn OpenView và trình quản lý tệp đẹp, đây là giao diện của nó:
Hầu hết các nhà nghiên cứu của chúng tôi đã chạy bằng root và hơn một lần chúng tôi phải cài đặt lại hệ điều hành của họ vì ai đó đã quyết định dọn dẹp thư mục gốc và di chuyển / bin, / etc, / tmp và mọi thứ khác làm rối tung khung nhìn vào Trashcan hoặc một số thư mục con.
Những người dùng khác đã chọn dọn dẹp thư mục / bin và xóa bất kỳ lệnh nào họ không biết.
Những người may mắn đã sao lưu, hầu hết đã mua một ổ đĩa băng, nhưng không có truyền thống chạy các bản sao lưu.
Trở lại từ giữa đến cuối những năm 90, một người bạn của tôi và tôi đã thảo luận về sự điên rồ rm -rf *
và tại thời điểm nào thì một hộp Linux sẽ trở nên tốt bụng. Chúng tôi đã vào các thư viện được liên kết tĩnh so với các thư viện được liên kết động và tôi đã khẳng định rằng hệ thống có thể sống khá tốt mà không cần phải /lib
tiến hành đổi tên nó trên máy trạm của tôi. Những điều tồi tệ đã xảy ra , nhưng chúng tôi bị bỏ lại với một số cửa sổ giao diện điều khiển mở để thử và khắc phục thiệt hại (tắt máy không còn là một lựa chọn nữa). Không ai trong số các biên tập viên sẽ chạy. Thật đáng kinh ngạc khi sử dụng bí truyền mà bạn có thể tìm thấy cho echo
lệnh.
vi
và Caps-Lockso với/etc/passwd
su -
vi /etc/passwd
. Không có vipw
, và "chúng tôi chỉ đang thực hiện các chỉnh sửa nhỏ".Tôi đã làm điều này một lần. Thật đáng ngạc nhiên, hệ thống vẫn hoạt động trong nhiều tháng. Cronjobs chạy tốt, không có lỗi nào nổi bật trong logfiles.
Chúng tôi đã không nhận thấy vấn đề này cho đến khi chúng tôi khởi động lại hệ thống nhiều tháng sau đó và không thể đăng nhập tại bảng điều khiển. ps
cho thấy một loạt các công việc thuộc sở hữu của UID '0' không phải bởi người dùng 'root'.
Bạn không thể đăng nhập với quyền root, cũng không chạy su
hoặc su -
không có sudo
trong hộp này. Không có ổ đĩa mềm, CD-ROM đã bị hỏng và không có cổng USB (vì vậy không có CD-ROM bên ngoài). Chế độ một người dùng không hoạt động, bởi vì bạn cần nhập mật khẩu cho root và xuất phát từ đó /etc/passwd
.
rm -f * ~
và
rm -rf ${DIR}/
khi DIR
chưa được thiết lập
${DIR}
sao? Bởi vì $(DIR)
sẽ cố gắng thực hiện lệnh DIR.
Một cách đơn giản halt
nhận ra vài giây sau đó tôi không ở trong vỏ cục bộ và không có khả năng bật lại máy chủ sản xuất.
Bài học rút ra? Dấu nhắc của máy bây giờ giống như
[ --> root <-- @kompost:/home/echox] #
với một số đánh dấu màu đỏ đẹp ;-)
molly-guard
kiểm tra xem bạn có đăng nhập từ xa không và hỏi xem bạn có thực sự muốn làm việc này không.
Khoảnh khắc yêu thích của tôi là, khi một đồng nghiệp, một người dùng emacs, muốn chỉnh sửa một tập tin quan trọng.
Vì emacs
quá nhiều để gõ, anh ta đã thiết lập một bí danh cho emacs
:
alias em=emacs
Dưới ảnh hưởng của không đủ hoặc quá nhiều cà phê, tất nhiên anh ta đã gõ sai em
...
Chà, đây chỉ là một lý do khác để sử dụng vi
...;)
alias e=emacs
.
Hoặc một trải nghiệm khác, làm thế nào để cảm thấy thực sự ngu ngốc trong một vài bước đơn giản mà dường như tất cả đều ngu ngốc.
Bước một: thiết lập một tài khoản cho đứa trẻ, trong trường hợp nó muốn sử dụng hộp Linux. Cung cấp cho nó một mật khẩu tầm thường, vì sau tất cả, đây là một hệ thống gia đình và không được tiếp xúc với mạng.
Bước hai: cho phép thời gian trôi qua, vì vậy bạn không nhớ bước một.
Bước ba: mở cổng SSH trong tường lửa (thực ra là NAT trên bộ định tuyến) để ssh. Sau tất cả, tài khoản của tôi có mật khẩu khá tốt và không có gì có giá trị to lớn.
Bước bốn: nhận thông báo từ ISP rằng có một số loại hoạt động DOS sẽ đến một trang web của Thụy Điển. Giả sử có lẽ các hộp Windows, kiểm tra và làm cứng chúng.
Bước năm: nhận thông báo từ ISP rằng nó vẫn đang diễn ra. Hỏi một số chi tiết, lấy địa chỉ IP của trang web Thụy Điển, kích hoạt Wireshark, tìm hộp tấn công đến từ đâu.
Bước sáu: dọn sạch hộp Linux, cảm thấy ngu ngốc. Tìm thông tin đăng nhập đến từ một địa chỉ Rumani. Xóa tài khoản mà không có mật khẩu tốt.
Trong phòng thí nghiệm máy tính khi tôi học đại học, họ có một trình bảo vệ màn hình mô phỏng một loạt các quả bóng sẽ trôi qua lại. Họ kéo nhau với trọng lực mô phỏng.
Một lần, trong khi tôi đang loay hoay với các cài đặt, nó đã bị lỗi với Error: force on balls too great
Tôi đã từng phát triển trình điều khiển thiết bị cho Unix. Nó có một vấn đề về con trỏ và trong quá trình thử nghiệm, nó bắt đầu ghi ra phần cuối của một mảng trong bộ nhớ kernel. Tôi đã chậm để phát hiện ra điều này và đã không nhấn nút thiết lập lại ngay lập tức. Trình điều khiển đã viết nguệch ngoạc trên tất cả các bộ đệm bộ đệm đĩa sau đó được xóa vào đĩa trước khi tôi nhấn thiết lập lại. Rất nhiều khối là inodes và thư mục, và tôi đã kết thúc với một hệ thống tập tin hoàn toàn bị hỏng. Tôi nghĩ rằng 6000 tập tin mồ côi đã được đưa vào lost+found
trước khi tôi từ bỏ và cài đặt lại. May mắn thay, đây chỉ là một hệ thống thử nghiệm, không phải máy trạm của tôi với tất cả các tệp của tôi trên đó.
Tôi đã xóa / vv và sau đó phục hồi nó . Tôi không nghĩ rằng tôi đã học được bài học của mình ... Tôi cũng đã phải phục hồi sau khi bị xóa /bin
. Có vẻ như xảy ra khi tôi đã làm việc với a chroot
.
Năm ngoái, một đồng nghiệp của tôi đã sử dụng một trong các máy trạm linux của chúng tôi để tạo các bản sao của đĩa flash bằng dd
lệnh. Anh vô tình gõ một cái gì đó tương tự như sau:
dd if=flash-image.img of=/dev/sda1
Đến lúc anh nhận ra lỗi lầm của mình - ghi đè lên đĩa cứng của máy thay vì ổ flash - máy đã bị ho. Chúng tôi đã phải xây dựng lại chiếc hộp, tình cờ cũng là cỗ máy lưu trữ tất cả các VM phát triển của chúng tôi vào thời điểm đó ...
dd
!!! :-)
Điều này đã xảy ra với tôi năm ngoái. Tôi đã xóa một số tệp khỏi máy chủ bằng một biến tạm thời:
rm -rf ${prefix}*
Đoán xem cái gì? Biến $prefix
không được xác định!
Bạn có thể tưởng tượng thảm họa ... nó đã dẫn đến một số tệp rất quan trọng bị xóa.
Tôi gần như đã phá vỡ Control-Cvà chạy đến CPU để tháo cáp mạng !!
Hahaha Tôi chắc chắn ai đó đã làm điều này ...
Trong năm thứ 2 tôi học ngành khoa học máy tính, chúng tôi đã được giao một bài tập về nhà để viết một chương trình bằng C sẽ sinh ra một số quy trình con fork
và khiến chúng giao tiếp với các đường ống trong một "vòng tròn" và tìm ra ai sẽ là "người lãnh đạo" ".
Lúc đó chúng tôi vẫn còn khá ồn ào và hầu hết mọi người đều không có máy Linux, vì vậy chúng tôi đã làm việc trên các tài khoản của chúng tôi trên máy chủ chính của khoa (nơi cũng đang lưu trữ trang web chính thức và tài khoản nhân viên cũng như trang web). Hầu hết mọi người đã viết những cái nĩa ở một số giai đoạn cố gắng làm bài tập về nhà. Hơn một nửa nhóm của tôi đã nhận được các abusers
tập tin. Đó là tải cao nhất trên máy chủ đó trong một thời gian ngắn :)
Khi trường đại học của tôi quyết định chuyển mạng không dây sang sử dụng xác thực Cisco LEAP độc quyền ...
Bắt đầu một trận chiến rất dài mà kết thúc cũng đủ. Đã viết tài liệu cho những người khác muốn chạy Linux và có quyền truy cập internet. Sáu tháng sau họ cũng quyết định bổ sung hỗ trợ PEAP. tát vào mặt
Đó là yêu thích của tôi vì tôi đã thắng. Tôi đã nhận nó để làm việc.
Tôi là trợ lý phòng thí nghiệm cho một lớp Linux. Một trong những học sinh gọi tôi vì cô ấy không còn có thể su -
vì cô ấy đã nhận được permission denied
. OK, cô ấy đã đánh giá sai / nhập sai mật khẩu. Khởi động lại vào chế độ người dùng đơn và đặt lại. Gì?! su
VẪN không làm việc?! Nó PHẢI cúi đầu theo ý muốn của tôi! Vì vậy, tôi khởi động lại vào chế độ người dùng duy nhất để tìm hiểu những gì cô ấy đã làm. Tôi nhận ra rằng cô ấy đã chạychmod -R 777 /var/www/html/drupal-6.19 /
Lưu ý khoảng trắng giữa tên thư mục và dấu gạch chéo cuối cùng.
Sau vài phút "Tôi thực sự không muốn cài đặt lại cô ấy, vậy việc này đang làm gì và như thế nào.", Tôi đã tìm thấy / bin / su hiện có quyền truy cập tệp 777
. Điều đó cũng có thể được đọc dưới dạng quyền của tệp 0777
, loại bỏ bit setuid khỏi /bin/su
. Nhanh chóng chmod u+s /bin/su
và tôi là một anh hùng.
Không phải là đau đớn ... Nhưng một khoảnh khắc vui vẻ:
Tôi đã gõ sai ls
như sl
và phát hiện ra rằng các quản trị hệ thống có một cái gì đó được cài đặt cho trường hợp này.
git init
git clean -f
Điều này không loại bỏ các kho lưu trữ. Điều này loại bỏ tất cả mọi thứ không có trong kho lưu trữ.
Sau khi cố gắng loại bỏ repo hiện có và sau đó bắt đầu kiểm soát nguồn một lần nữa (trên phiên bản đầu tiên đã hoàn thành của một dự án), hai lệnh này đã gỡ bỏ toàn bộ mã của tôi.
Một công ty mà tôi từng làm việc đã có sản phẩm của mình chạy trên SCO. Tôi đã thực hiện một số sửa lỗi về các ứng dụng trở nên rất chậm trên máy chủ demo của chúng tôi và đồng thời có một nhóm khách hàng được cung cấp bản demo / bài giảng về các tính năng mới sắp tới.
Vì vậy, tôi đã chạy ứng dụng đã từng bị kẹt, đã thực hiện công cụ của mình trên đó để xác minh nguyên nhân gốc, nhưng vì nó vẫn bị "kẹt", tôi đã cố gắng giết nó:
pkill -9 mytestapplication
Những gì tôi đã học được là pkill không thực hiện chính xác như vậy trên SCO như trên linux =)
... Về cơ bản, nó giết chết mọi thứ mà người dùng có quyền truy cập và với root ... đó là tất cả mọi thứ =)
Việc chuyển đổi từ Debian sang Ubuntu bắt đầu vào ngày tôi cố gắng xóa một số tệp và thư mục, nghĩa là nhập
rm -r /var/tmp/*
Thật không may, tôi đã chèn một khoảng trắng giữa "/ var / tmp /" và "*" và thậm chí tệ hơn, tôi đã ở trong hệ thống tập tin gốc.
root@workstation:/# rm -r /var/tmp/ *
Xin đừng thử ở nhà!
Tôi đã có hai ổ đĩa được cài đặt tại một điểm và có hệ thống tập tin gốc của ổ đĩa thứ hai được gắn trong một thư mục bên trong /mnt
. Tôi đã ở trong thư mục đó và cố gắng xóa var
nhưng cuối cùng lại gõ rm -rf /var
. Một số bản năng dường như đá trong đó nói rằng var
phải được đi trước với một dấu gạch chéo!
Khi tôi nhận ra những gì tôi đã làm, tôi lập tức đánh Ctrl-Cnhưng đã quá muộn. rpm
Cơ sở dữ liệu của tôi đã rời khỏi tòa nhà từ lâu. Tôi đã dành nhiều năm để mọi thứ trở lại bình thường.
Bây giờ cho phần đau đớn.
Tôi quay lại thư mục đó trong /mnt
để tiếp tục những gì tôi đã làm. Tôi gõ gì? Chà, hãy nói rằng bản năng lại bắt đầu.
Ít nhất tôi đã có thể khôi phục hệ thống nhanh hơn rất nhiều lần thứ hai;)
rm
lệnh. Hoặc buồn.