Lý do chiếc SPARC4 của giáo sư chậm đi là vì xroach đầy dưới xterm
(infosec.exchange)- Nhân viên hỗ trợ IT của khoa CS đến văn phòng vì giáo sư phàn nàn về hiệu năng Sparc4 bị giảm, rồi phát hiện xroach đang ẩn sau các cửa sổ
- Khi thu nhỏ một cửa sổ, phần bên dưới màn hình trông như một hình chữ nhật màu đen, trong đó những con gián di chuyển rất chậm
- Chuyển động ở mức khoảng 0,5 fps, và vì có quá nhiều gián xroach dưới xterm nên chúng trông như một khối đen
- Cốt lõi của vấn đề không hẳn nằm ở phần cứng, mà là trạng thái xroach vẫn liên tục hiển thị ở nơi người dùng không nhìn thấy
- Trong các môi trường desktop X11 cũ, ngay cả chương trình đùa nghịch cũng có thể trông như vấn đề hiệu năng thật sự, nên việc kiểm tra các cửa sổ bị che khuất và trạng thái nền là rất quan trọng
Triệu chứng được kiểm tra tại văn phòng giáo sư
- Paco Hope kể rằng khi còn làm nhân viên hỗ trợ IT cho một khoa CS trước đây, ông được gọi đến văn phòng vì một giáo sư phàn nàn rằng Sparc4 bị chậm
- Việc đầu tiên ông làm là thu nhỏ một cửa sổ, và bên dưới xuất hiện một hình chữ nhật màu đen ngoài dự đoán
- Bên trong vùng đen đó, những con gián xroach đang nhúc nhích từng chút một
- Chuyển động chậm đến mức trông như khoảng 0,5 fps
xroach phủ đầy dưới xterm
- Có quá nhiều xroach nằm dưới xterm, đến mức không còn thấy từng con gián riêng lẻ mà gần như trông như một hình chữ nhật đen đơn sắc
- Trước khi cửa sổ được thu nhỏ, giáo sư không nhìn thấy trạng thái bên dưới; manh mối cho lời phàn nàn về hiệu năng xuất hiện khi kiểm tra trạng thái màn hình bị che khuất này
Hồi tưởng ngắn và phản ứng
- Giai thoại này là một hồi tưởng ngắn được Paco Hope đăng trên Mastodon vào ngày 25 tháng 7 năm 2023
- Bài đăng hiển thị 202 lượt boost và 389 lượt yêu thích, nhận được sự đồng cảm từ những người dùng còn nhớ các môi trường desktop cũ và những chương trình đùa nghịch
1 bình luận
Các ý kiến trên Hacker News
Hồi còn làm hỗ trợ kỹ thuật tại một bệnh viện địa phương, tôi nhận được cuộc gọi từ một y tá nói rằng trên màn hình có “một cửa sổ gì đó giống dự báo thời tiết” hiện lên, nhưng chuột chui xuống bên dưới nên không thể đóng được
Thấy tò mò, tôi bảo đừng động vào máy tính và mất khoảng 10 phút để đến nơi, thì cô ấy nói: “Nó tự đóng khoảng 1 phút trước rồi. Nó đã hiện suốt 30 phút”
Nhìn cách bố trí bàn làm việc và mô tả về cửa sổ, tôi bấm nút trên màn hình thì thấy menu OSD của màn hình hiện ra do bị góc bàn phím vô tình nhấn trúng, và độ sáng 100% được hiển thị bằng biểu tượng mặt trời. Việc chuột chui xuống bên dưới nó cũng là chuyện đương nhiên
Tôi lại đi bộ 10 phút quay về và chờ cuộc gọi tiếp theo
Các y tá bận rộn cứu người và chăm sóc những người đang trải qua ngày tồi tệ nhất đời họ, vậy mà còn phải gánh thêm các workstation được triển khai và bảo trì tệ hại. Khi họ nhờ giúp đỡ, đôi khi chính những người tạo ra vấn đề lại đến và coi thường họ
Y tá không ngu ngốc hay lười biếng; họ là những người có việc quan trọng hơn phải làm thay vì mất thời gian cho các vấn đề IT vụn vặt
Những thiết bị quan trọng cho khám chữa bệnh thực tế thường do chuyên gia chuyên trách quản lý, và máy tính của thiết bị MRI có thể còn không được đưa vào Active Directory, thậm chí không nối mạng. Vấn đề được chuyển cho GE chứ không phải người sửa máy in
Đến nơi thì thấy trên màn hình CRT đặt một chiếc boombox với hai loa lớn, và khi dọn nó đi thì vấn đề được giải quyết như có phép màu
Thật ra cô y tá cũng đã mô tả khá chính xác chuyện đã xảy ra
Năm 1989, tôi một mình phụ trách bộ phận IT ở một nơi mà các nhà kinh tế học học thuật chuyển nghề đang làm mô hình kinh tế lượng trên Digital VAX 11/750
Chiếc minicomputer này chạy VMS, một hệ điều hành đa người dùng, và tất cả người dùng đều có quyền quản trị. Ai cũng nghĩ rằng nếu tự nâng mức ưu tiên tiến trình của mình lên tối đa thì mô hình sẽ chạy nhanh hơn, nhưng điều đó lại cản trở các tiến trình thời gian thực cần thiết cho việc vận hành máy tính, nên tác dụng hóa ra ngược lại
Sau khi tìm ra nguyên nhân, thu hồi quyền và khởi động lại hệ thống, mọi thứ trở lại bình thường, và tôi được cảm ơn vì đã làm hệ thống chạy nhanh hơn
Một người khác viết chương trình fork chính nó 1000 lần, hạ giá trị
nicexuống 19, rồisleep(0)và thoát. Hễ nhận được dù chỉ một chút thời gian CPU là nó kết thúc ngay, nhưng khi emacs đang chạy thì nó không có cơ hội đó. Trong lúc ấy, mức tải màxloadhiển thị trở thành một ô đen sìNgười đang dùng emacs chạy lệnh
ps -ef | grep procname | xargs killvới quyền root, nhưng xử lý kill cũng cần thời gian CPU nên mất lâu hơnsleep(0)và gần như không có tác dụngỞ trò đùa thứ hai, tên tiến trình được đặt là
ema, kết quả là toàn bộ các instance emacs cũng bị giếtLần thứ ba, tên tiến trình được đặt là
et, và tình cờ khớp cả với/etc/initd, khiến máy đột ngột khởi động lạiTrình thông dịch Scheme khởi động chậm, đặc biệt khi có hơn 20 người đăng nhập. Trợ giảng chỉ cho chúng tôi cách tạm dừng trình thông dịch bằng
ctrl-z, chỉnh sửa bằngvi, rồi quay lại bằngfgVấn đề là không phải một nửa, mà 2/3 lớp quên
fgvà sau khi chỉnh sửa lại mở thêm một instance Scheme mới. Tôi vẫn nhớ cảnh hệ thống bò lê hoàn toàn trong phòng terminal vào đêm hạn nộp bàiSau đó tôi học được cách tìm bạn cùng lớp nào đang chạy từ hai instance Scheme trở lên để nhắc họ dùng
fg, và những “lời giải” cho bài toán 8 quân hậu bằng đệ quy vô hạn cũng chẳng giúp gì cho tải hệ thống. Bài học thật sự là về sau đừng đăng nhập vào đêm hạn nộp bài CS 401Vì các terminal dùng chung được đặt chung trong một phòng, nên có thể thấy hiệu ứng của việc mình làm theo thời gian thực, rất vui
Trong một môi trường nơi mọi người đang xếp hàng, có người hỏi liệu vấn đề của họ có thể được xem xét trước người khác không. Nói cách khác, họ muốn được đưa lên đầu hàng
Anh ấy nói: “Tất nhiên rồi!” và khi người kia tỏ ra ngạc nhiên, anh ấy nói thêm: “Nhưng anh/chị biết là tôi cũng sẽ làm điều tương tự cho những người khác đưa ra yêu cầu như vậy chứ?”
Cuối cùng người đó quyết định tiếp tục chờ ở vị trí của mình
Nhớ lại thời sinh viên vàng son ngày xưa
Trường hợp của tôi là đầu những năm 2000; máy tính trong phòng thực hành đại học không mạnh, nên mọi người thường làm việc trên console Linux thay vì mở các phiên X nặng nề
Khoảng năm 2001, khi đọc trang man
console_ioctl(4), tôi phát hiện trong đó đầy thứ có thể đem ra nghịch. Tôi viết các chương trình nhỏ để thao túng phông chữ console khiến mọi ký tự bị lật ngược, đổi chữ hoa với chữ thường, làm nhấp nháy mẫu đèn LED bàn phím, hoặc đổi bảng màu để màn hình fade sang đen rồi khôi phục lạiTôi còn gắn thêm thành phần server vào đó, chạy trên một terminal trông bình thường, chờ nạn nhân tới rồi bật hiệu ứng từ xa trên một máy khác trong cùng phòng và xem phản ứng. May là chẳng bao lâu sau tôi nhận ra bản thân việc code vui hơn việc nhìn người khác hoảng hốt, nên tôi dừng phần sau lại
Một trò khác là tự gõ nội dung trông như đăng nhập root đã thành công ở prompt đăng nhập
getty. Tôi gõ cảmotd, giả lập xuống dòng bằng tab và dấu cách, tuyệt đối không nhấn RET, rồi kết thúc bằng[root@mailhost root]#Có người vì tò mò gõ
whoamirồi ngơ ngác không hiểu sao lại hiện prompt mật khẩu; có người thì sợ đến mức không dám động vào gì, lùi ra và gửi mail cho quản trị hệ thống từ một terminal khácChỉ cần người dùng đang đăng nhập, có thể dùng Task Scheduler để chạy gần như bất kỳ chương trình nào dưới quyền của người dùng đó; kết hợp với Active Directory thì còn biết được thông tin người dùng. Kiểu như biết ai đang ở đâu rồi mở
iexplorertới một trang cụ thể, hoặc bật một tài liệu Word vô hại. Trường hợp ác ý nhất là một batch script tự động đăng xuấtVề sau mọi người hiểu ra cách làm và cố bắt chước chạy từ xa, nhưng lại chạy dưới quyền của chính họ thay vì quyền của người dùng mục tiêu, nên khi quản trị IT tới thì dấu vết ai đã chạy quá rõ ràng
Tôi đã thôi không nghịch nữa, và cuối cùng đi qua mảng IT rồi trở thành kỹ sư phần mềm. Thỉnh thoảng tôi vẫn tự hỏi nếu hồi đó bị kỷ luật thì mọi chuyện đã ra sao
Trên mainframe IBM 370 có hơn 80 lập trình viên, và VM/370 tạo cho mỗi lập trình viên một máy ảo riêng. Tôi là một trong hai lập trình viên hệ thống có quyền “superuser”
Bên trong máy ảo thường chạy CMS, nhưng cũng có thể chạy thứ khác; một số máy chạy MVS
Muốn gửi lệnh cho chính máy ảo thì phải thêm một ký tự đặc biệt trước lệnh, mặc định là
#. Ví dụ#cp ...là lệnh gửi tới máy ảo, và tiền tố ma thuật này có thể đổi thành ký tự tùy ýMột hôm rảnh quá, tôi tự hỏi liệu có thể chạy lại VM bên trong máy ảo không. Tôi boot VM ở “tầng thứ hai” và đổi ký tự tiền tố thành
!, rồi có thể tạo các máy ảo mới bên trong đóSau đó tôi lại boot VM trong máy ảo “tầng thứ ba” và đổi ký tự tiền tố thành
@. Cuối cùng tôi vào tới 8 tầng lồng nhau, xác nhận rằng VM có thể chạy VM, rồi VM đó lại chạy VM nữaĐến lúc kết thúc và muốn tắt các tầng lồng nhau, theo thói quen tôi gõ
#cp shutdown, thế là VM thật trên máy thật bị tắt luôn. Hoảng quá, tôi chạy tới phòng máy và nhấn nút start trên consoleTất nhiên log hệ thống vẫn còn, và lập trình viên hệ thống còn lại tới phòng tôi nói: “Đừng bao giờ làm vậy nữa.” Đó là những ngày tháng thú vị
#là tiền tố của VM tầng 1, chứ không phải hệ điều hành tầng 0, tức hostNếu dùng
#để gửi lệnh tới tầng 0, tôi thắc mắc tiền tố của tầng 1 là gìkillall procname. Máy chết ngay lập tứcMãi đến khi quản trị hệ thống tới, chúng tôi mới biết trên Solaris
killalllàm việc khác, và được dặn đừng bao giờ dùng nó nữaNhững năm 80, khi còn là sinh viên đại học, tôi được truy cập vào VAX 11/750, chính xác hơn là một bản clone 8750 Systime, để làm bài tập lập trình
Terminal dành cho sinh viên nằm ở một nửa căn phòng lớn, nửa còn lại do nhân viên IT của trường dùng. Nếu phía quản trị IT không còn terminal trống, một hai nhân viên thường dùng terminal sinh viên ngay bên kia vách ngăn
Một ngày nọ, trong lúc chờ biên dịch dự án COBOL và quá chán, tôi tự hỏi liệu có thể bắt được tên người dùng và mật khẩu của quản trị viên hệ thống không. Tôi viết một script trên CLI bắt chước hoàn hảo prompt đăng nhập, cả tiếng bíp lẫn thông báo
Script xóa màn hình rồi chờ nhập tên người dùng và mật khẩu; khi có dữ liệu, nó gửi mail cho tôi, hiển thị lỗi tên người dùng/mật khẩu, rồi đăng xuất để chuyển sang tiến trình đăng nhập thật
Sau khi thử với vài bạn cùng lớp không nhận ra và nghịch ẩn danh một chút, tôi quyết định thử thật với các quản trị viên hệ thống. Tôi đăng nhập vào hai terminal mà nhân viên IT thường dùng và để script chạy sẵn; vài giờ sau quay lại, thật bất ngờ và hơi bất an, tôi đã lấy được mật khẩu đăng nhập SYSTEM
Trong khoảng một tháng tôi có toàn quyền kiểm soát máy đó, và thỉnh thoảng chạy lại script mỗi khi mật khẩu SYSTEM bị đổi. Tôi không nói với ai, và vào ngày cuối cùng trước khi tốt nghiệp, để phòng xa, tôi đăng nhập rồi xóa script. Khi đó ở Anh, luật về truy cập máy tính trái phép đang được siết chặt
Tôi đã dành rất nhiều thời gian với bộ manual đồ sộ của máy đó để khám phá và học VMS, nhưng không ai nhận ra
Ctrl+Alt+Deltrước để vào ngữ cảnh bảo mậthttps://en.wikipedia.org/wiki/Control-Alt-Delete
Họ đã cho tôi công việc đầu tiên :-) Ngoài ra tôi cũng cấp sẵn quyền cần thiết cho một hai tài khoản ít người biết, để nếu quyền SYSTEM bị thu hồi khỏi tài khoản “chính thức” thì vẫn có thể lấy lại
Đó là thời kỳ vui vẻ, và cũng ngây thơ. Tôi không dùng quyền hạn để phá tung mọi thứ
Giờ tôi kiếm sống bằng nghề lập trình thì cũng chẳng có gì quá ngạc nhiên
Của tôi là Visual Basic 5 cho Windows ở trường, có lẽ trên mạng Novell. Việc sửa
win.iniđể nó chạy trước màn hình đăng nhập thật rất dễCách làm là lưu tên người dùng và mật khẩu vào ổ mạng dùng chung hoặc file cục bộ, hiển thị “lỗi mật khẩu”, rồi thoát sang prompt đăng nhập thật
Cuối cùng rắc rối xảy ra khi một “người bạn” dùng cùng kỹ thuật để chép file tài khoản mạng của mọi người vào tài khoản của mình. Tôi đoán khi quota bị dùng hết, hệ thống đã cảnh báo quản trị viên mạng. Kiểm tra sơ qua thì lộ ra là cậu ta còn chép cả file luận văn của giáo viên, và đó thực sự là điều cấm kỵ lớn
Nhờ vụ này mà cuối cùng tôi có được công việc liên quan đến máy tính đầu tiên: hỗ trợ kỹ thuật/quản trị mạng cấp junior
Năm 1988, ở trường trung học, tôi cùng một người bạn phát hiện một lỗ hổng trong NetWare được triển khai trên 30 máy IBM PS/2 Model 30-286 của phòng máy tính mới, cho phép chèn chương trình vào chuỗi boot mạng
autoexecTrước đó, chúng tôi đã mày mò các thanh ghi VGA khi đó còn mới và tìm ra cách chuyển từ chế độ văn bản 80x25 sang chế độ đồ họa 320x200 256 màu mà không bị nhấp nháy hay vỡ hình. Lý do là cả hai chế độ đều có tần số quét 70Hz
Bạn tôi viết một TSR nạp sẵn ảnh số khuôn mặt hề vào
A000:0000; khoảng 4 phút sau nó hiển thị khuôn mặt hề trong vài frame rồi lập tức trả lại màn hình người dùng đang làm việcChúng tôi bị lộ vì không nhịn được cười khi thấy học sinh ở góc lớp tỏ vẻ bối rối và sợ hãi. Đặc biệt có một học sinh gọi giáo viên tới nhìn màn hình hơn 3 phút, và đúng khoảnh khắc giáo viên quay đi thì mặt hề lóe lên — timing quá hoàn hảo
Bạn tôi tên là Brian, một trong những người thông minh nhất tôi từng biết. 10 năm sau, chúng tôi tạo ra mobygames.com
Tần số âm thanh thay đổi liên tục nên không có nốt cố định nào kéo dài dù chỉ trong khoảnh khắc. Hồi đó loa thường chỉ phát tiếng bíp, và tôi hay bật nó trên những máy không dùng đến
Đầu những năm 90, tôi là sinh viên năm nhất ngành khoa học máy tính ở một đại học công lập. Phòng máy đầy những Sun SPARCstation IPC chạy SunOS, và có một hệ thống email cơ bản để mọi người trong khoa giao tiếp với nhau
Những người rành công nghệ thì đã khám phá Usenet rồi, nhưng với đa số, email là toàn bộ thế giới số
Một ngày nọ, tôi và bạn bè quyết định chơi khăm, lấy ý tưởng từ lệnh
fortunenổi tiếng vốn in ra các châm ngôn ngẫu nhiên. Chúng tôi viết một shell script đơn giản: chọn ngẫu nhiên một dòng từ file văn bản chứa những câu buồn cười và nhảm nhí do chúng tôi viết, rồi gửi email đến một người dùng ngẫu nhiên trong khoa khoa học máy tính; sau đó đăng ký nó làm cron job để mỗi giờ gửi một câuBan đầu đó là một trò đùa harmless. Mọi người thấy các thông điệp rất vui và thường chia sẻ trong phòng thực hành. Nguồn gốc của chúng trở thành chủ đề bàn tán trong khoa, nhưng không ai biết chúng đến từ đâu; chúng tôi thì thích thú nhìn bạn bè và giáo sư đoán xem người gửi bí ẩn là ai
Nhưng rồi sự việc trở nên lớn chuyện khi trưởng khoa nhận được một thông điệp đặc biệt vô lý: “Tại sao các nhà khoa học máy tính lại nhầm Giáng sinh với Halloween? Vì Oct 31 == Dec 25.” Ông không hiểu trò đùa, tưởng đó là một thông điệp kiểu mật mã hoặc một mối đe dọa tiềm tàng
Đội IT của trường được đưa vào điều tra, và một cuộc náo động kéo dài cả tuần để truy tìm nguồn gốc email đã diễn ra. Tôi và bạn bè lo lắng theo dõi, sợ bị phát hiện rồi bị đuổi học
Cuối cùng, sau vài ngày mất ngủ, chúng tôi quyết định tự thú. Chúng tôi đến gặp trưởng khoa và thú nhận; sau một khoảng im lặng dài, ông bắt đầu cười. Hóa ra một giáo sư khoa học máy tính đã giải thích câu đùa cho ông, và ông đang chờ xem bao giờ chúng tôi ra mặt
Ông rộng lượng bỏ qua trò đùa, xem sự chủ động của chúng tôi là sáng tạo, nhưng cũng cảnh báo về những hậu quả ngoài ý muốn của các trò như vậy
Nhìn lại, đó là một trò đùa vui và đáng nhớ, đồng thời cho tôi một bài học quý giá về đạo đức sử dụng công nghệ. Đây là câu chuyện tôi thường kể cho sinh viên khoa học máy tính của mình khi dạy về tầm quan trọng của hành vi đạo đức trong thế giới số
Có lần tôi phải xem giúp vì PC của trưởng khoa Toán hoạt động kỳ lạ
Hóa ra ông ấy đã để Prime95 dùng toàn bộ chu kỳ nhàn rỗi trên một nhân của Core 2 Duo suốt 10 năm, và cái máy đó chỉ khởi động được khi nó nguội xuống bằng nhiệt độ phòng
Đây là trò đùa một người bạn thời cao học của tôi chơi khăm một người bạn khác
Khi nạn nhân đăng nhập rồi tạm rời terminal một lúc, người chơi khăm đã thêm
echo sleep -1 >> .loginvào file.loginVài ngày sau, khi đã có hơn 20 câu lệnh
sleepđược nối thêm, rõ ràng là việc đăng nhập của sinh viên đó có gì đó sai sai một cách bất thường. Mỗi ngày, thời gian từ lúc đăng nhập ban đầu đến khi có terminal hoạt động lại ngày càng chậm, khiến nạn nhân càng lúc càng bực; cuối cùng, khi không chịu nổi nữa, trò đùa bị phát hiệnSau một thời gian, tôi thấy mỗi lần đăng nhập chỉ thêm 1 giây thì quá khó nhận ra
echo "echo sleep 1 >> ~/.login" >> ~/.loginThật thú vị là khá nhiều câu chuyện ngày xưa rốt cuộc đều đi đến kiểu “chỉ định làm cho vui chứ không ác ý, không ngờ nó lại nhân bản nhiều đến vậy hoặc dùng nhiều tài nguyên đến vậy”
Morris worm cũng tương tự. Dù còn có thể tranh luận, nó có thể được xem là được thiết kế như malware, và ít nhất theo những gì được kể lại thì người tạo ra nó không hề có ý định để mọi chuyện nghiêm trọng đến mức đó