Bài đăng nổi bật

Hướng dẫn thay đổi thư mục root mặc định của Docker trên Linux

Hoàn cảnh: người viết gặp một trường hợp như này Được team hạ tầng cấp cho một máy chủ gồm 2 phân vùng lưu trữ, 1 phân vùng 20GB được gắn và...

28 tháng 3, 2012

Sử dụng ổ đĩa SAN trên Linux với Open-iscsi

Đón xem:
Một bài viết về cách kết nối với ổ SAN trên Linux bằng Open-Iscsi

26 tháng 3, 2012

Những lệnh Linux người quản trị cần biết (update 10-08-2021)

Phần này mình chỉ đề cập đến những câu lệnh cần thiết mà một người quản trị hệ thống Linux cần biết và nắm rõ. Nội dung diễn giải cho các lệnh được viết theo ý hiểu của tác giả thế nên các bạn không nên thắc mắc tại sao nó lại thế nhé. Các lệnh sẽ được sắp xếp theo thứ tự abc và sẽ được update dần theo thời gian.
A
1. Adduser command
  • Chức năng: Thêm user vào quyền sudo
  • Hệ điều hành: Linux, *nix
  • Có sẵn: có
  • Cấu trúc lệnh: adduser user_name sudo
B
C
1 - Chage command
  • Chức năng: Xem thông tin user trong hệ thống.
  • Hệ điều hành: Linux, *nix.
  • Có sẵn: Có.
  •  Cấu trúc lệnh: 
    • chage -l user
    • chage -E yyyy-mm-dd user: Thay đổi thông tin hết hạn của user.
D
1 - Dig command
  • Chức năng: truy vấn các bản ghi trên DNS
  • Hệ điều hành: Linux, *nix
  • Có sẵn: Có
  • Cấu trúc lệnh: dig [option] domain.com
    Trong đó:
    dig: tên lệnh
    domain.com: tên miền cần truy vấn
    Option: tùy chọn
  • Option bao gồm:
    mx: truy vấn bản ghi MX
    a: truy vấn bản ghi A
2 - dpkg-reconfigure:

  • Chức năng: cấu hình lại tham số một số biến môi trường.
  • Hệ điều hành: Linux, *nix
  • Có sẵn: Có
  • Cấu trúc lệnh: dpkg-reconfigure tên_tham_số
    Trong đó:
    dpkg-reconfigure: tên lệnh
    Tên tham số: có thể là tzdata(nếu muốn đổi timezone của máy), java (nếu muốn đổi các thông số liên quan tới java),....
 3 - date
  • Chức năng: xem thông tin thời gian trên hệ thống + chỉnh lại thông tin thời gian trên hệ thống
  • Hệ điều hành: Linux, *nix
  • Có sẵn: Có
  • Cấu trúc lệnh: date tham_số
    Trong đó:
    date: tên lệnh
    Tham số: 04 (Month) 12 (Day) 1600 (Time in 24hour) 2011 (Year). Ví dụ: 041216002011 sẽ đổi giờ hệ thống thành ngày 12 tháng 4 năm 2011 lúc 16h00 
4 - dpkg -l
  •  Chức năng: xem thông tin các gói đã cài đặt trong hệ thống.
  • Hệ điều hành: Linux, *nix
  • Có sẵn: Có.
5 - df:
  • Chức năng: Xem thông tin về dung lượng ổ đĩa trong hệ thống.
  • Hệ điều hành: Linux, *nix
  • Có sẵn: Có.
E
F
1 - fg command
  • Chức năng: đưa một tiến trình đang chạy từ chế độ background sang foreground
  • Hệ điều hành: Linux, *nix
  • Có sẵn: có
  • Cấu trúc lệnh: fg [process number]
    Trong đó:
    fg: tên lệnh.
    process number: số thứ tự của background process, xem thông qua lệnh jobs.
2 - fping command:
  • Chức năng: một kiểu ping nâng cao
  • Hệ điều hành: Linux, *nix.
  • Có sẵn: không, phải cài thêm.
  • Cấu trúc lệnh: fping domain.com
    Trong đó:
    fping: tên lệnh
    domain.com: địa chỉ remote server
3 - find command:
  • Chức năng: tìm kiếm một tập tin, thư mục chỉ định trong hệ thống.
  • Hệ điều hành: Linux, *nix
  • Có sẵn: có.
  • Cấu trúc lệnh: find [path...] [expression]
    Trong đó:
    find : tên lệnh.
    path: đường dẫn cần thực hiện tìm kiếm.
    expression: yêu cầu tìm kiếm
  • Vui lòng xem thêm với lệnh find --help
  • Ví dụ: find /opt/ -name "test*" sẽ tìm kiếm trong thư mục opt tất cả các file có tên bắt đầu là test.
G
1 - Gzip command:
  • Chức năng: nén và giải nén cho định dạng gz.
  • Hệ điều hành: Linux
  • Có sẵn: có
  • Cấu trúc lệnh: gzip [option] filesource [filedestination]
    Trong đó:
    gzip: tên lệnh.
    option: các tùy chọn.
    filesource: file gốc
    filedestination: file đích.
  • option:
    d: giải nén
H
1 - Hostname command
  •  Chức năng: xem hostname của máy
  • Hệ điều hành: Linux, *nix
  • Có sẵn: có
  • Cấu trúc lệnh: hostname [option]
    Trong đó:
    hostname: tên lệnh
    option: các tùy chọn
2 - Hwinfo command:
  •  Chức năng: xem thông tin phần cứng của máy.
  • Hệ điều hành: Linux
  • Có sẵn: không.
  • Câu trúc lệnh: hwinfo [option]
I
1 - ifconfig command
  • Chức năng: xem thông tin card mạng của máy.
  • Hệ điều hành: Linux, *nix
  • Có sẵn: có
  • Cấu trúc lệnh: ifconfig [option] tên_card_mạng
    Trong đó:
    ifconfig: tên lệnh
    option: tùy chọn
    tên_card_mạng: có thể là eth0, eth1, wlan0,..
J
K
1 - ssh-keygen
  • Chức năng: unknow
  • Hệ điều hành: Linux, *nix
  • Có sẵn: có
  • Cấu trúc lệnh:
  • Ví dụ: keygen-shh -r : loại bỏ key của một host đã lưu trong hệ thống.
L
1 - lastlog comman
  • Chức năng: liệt kê danh sách các tài khoản đã từng đăng nhập vào hệ thống
  • Hệ điều hành: Linux, *nix
  • Có sẵn: có
  • Cấu trúc lênh: laslog.
2 - ls command
  • Chức năng: xem thông tin của tập tin, thư mục trong hệ điều hành.
  • Hệ điều hành: Linux, *nix
  • Có sẵn: Có.
  • Cấu trúc lệnh:
    ls [options]
  • Options:
    -i : xem thông tin inode
    -l : xem dạng thông tin file dài
3 - ldd command:
  • Chức năng: xem các thư viện được sử dụng cho một ứng dụng trên Linux
  • Hệ điều hành: Linux, *nix
  • Có sẵn: Có.
  • Cấu trúc lệnh: ldd [OPTION]... FILE...
  • Options:
4. last

  • Chức năng: Xem người dùng truy cập gần nhất trên hệ thống.
  • Hệ điều hành: Linux, *nix.
  • Có sẵn: có.
  • Cấu trúc lệnh: last.

M
N
1 - nmap command:
  • Chức năng: Hiện tại mình hay dùng lệnh này để xem một remote server đang mở những cổng gì (ngoài ra còn khá nhiều các chức năng khác nhưng mình ít dùng nên không nêu ra ở đây)
  • Hệ điều hành: Linux, *nix
  • Có sẵn: không, phải cài thêm.
  • Cấu trúc lệnh: nmap [option] domain.com
    Trong đó:
    nmap: tên lệnh
    option: các tùy chọn
    domain.com: địa chỉ của remote server.
  • Option bao gồm:
    -p: chỉ quét các cổng chỉ định, ví dụ: nmap -p143 10.2.10.123 --> chỉ quét cổng 143 máy có địa chỉ 10.2.10.123
2 - nload command:
  • Chức năng: xem lưu lượng vào ra trên một card mạng
  • Hệ điều hành: Linux, *nix
  • Có sẵn: không, phải cài thêm
  • Cấu trúc lệnh: nload [option] card_name
    Trong đó:
    nload: tên lệnh
    [option]: các tùy chọn
    card_name: tên card, ví dụ eth0, eth1, wlan0,...
  • option:
    K: xem lưu lượng ở dạng kilobyte
    M: xem lưu lượng ở dạng MB
    G: xem lưu lượng ở dạng GB
    H: auto
    u: thiết lập kiểu đơn vị vào ra cho từng thành phần
    U: thiết lập kiểu đơn vị vào ra cho phần tính tổng lưu lượng
3 - nmblookup command
  • Chức năng: xem thông tin của một máy từ xa.
  • Hệ điều hành: Linux, *nix
  • Có sẵn: có
  • Cấu trúc lệnh: nmblookup [option] địa_chỉ_máy
    Trong đó:
    nmblookup: tên lệnh.
    option: các tùy chọn
    địa_chỉ_máy: địa chỉ máy cần xem
  • Option: bao gồm
    a : xem tất cả mọi thông tin
4 - nohup:
  • Chức năng: giữ cho một tiến trình chạy ngay cả khi terminal bị tắt.
  • Hệ điều hành: Linux
  • Có sẵn: có
  • Cấu trúc lệnh: nohup lệnh [tùy chọn] &
    Trong đó:
    nohup: tên lệnh
    lệnh: lệnh cần giữ.
    tùy chọn: các tùy chọn của lệnh cần giữ.
    &: đẩy lệnh cần giữ xuống chạy nền.
  •  Sau khi chạy, gõ ctrl + D để thoát khỏi màn hình ssh.
  • Ví dụ: để chạy lệnh nohup ta làm như sau:
  • nohup command &   # create nohup.out
    nohup command >/dev/null 2>&1 &   # doesn't create nohup.out 
     
O
P
1 - perldoc command
  • Chức năng: xem thông tin trợ giúp về các hàm, lớp trong ngôn ngữ Perl.
  • Hệ điều hành: Linux,*nix.
  • Có sẵn: không rõ.
  • Cấu trúc lệnh: perl Tên_hàm_lớp_cần_truy_vấn.
  • Ví dụ: perldoc File::Copy
2 - pidoff command
  • Chức năng: xem id của một tiến trình.
  • Hệ điều hành: Linux, *nix
  • Có sẵn: Có
  • Cấu trúc lệnh: pidof tên_chương_trình
3 - passwd
  • Chức năng: đổi mật khẩu của user.
  • Hệ điều hành: Linux, *nix.
  • Có sẵn: Có.
  • Cấu trúc lệnh: passwd
  • Trong đó option là:
    • l: loại bỏ password của người dùng.
Q
R
S
1 - ssh command
  • Chức năng: tạo một kết nối SSH tới một remote server
  • Hệ điều hành: Linux
  • Có sẵn: có
  • Cấu trúc câu lệnh:
    ssh user@domain.com
    Trong đó:
    ssh: tên lệnh
    user: tên user cần kết nối trên remote server
    domain.com: địa chỉ ip hoặc domain của remote server
2 - stat command:
  • Chức năng: xem thông tin thống kê của một tập tin.
  • Hệ điều hành: Linux
  • Có sẵn: Có.
  • Cấu trúc câu lệnh:
    stat /đường/dẫn/tới/file.
3 - scp command:
  • Chức năng: Copy tập tin giữa hai máy tính
  • Hệ điều hành: Linux, Unix
  • Có sẵn: Có.
  • Cấu trúc câu lệnh:
    scp [option]  [[user@]host1:]file1 ... [[user@]host2:]file2
  • Trong đó:option là các tùy chọn
    • -P: Port sử dụng
T
1 - Top command
  • Chức năng: xem thông tin tiến trình và các tài nguyên hệ thống.
  • Hệ điều hành: Linux, *nix.
  • Có sẵn: có
  • Cấu trúc lệnh: top
2 - Tail command:
  • Chức năng: xem nội dung một file.
  • Hệ điều hành: Linux, *nix
  • Có sẵn: có
  • Cấu trúc lệnh: tail [option] path
    Trong đó:
    tail: tên lệnh
    option: các tùy chọn
    path: đường dẫn tới file cần xem.
  • Option bao gồm:
    f: xem nội dung file theo thời gian thực
    chữ số: xem số dòng cuối cùng của file đúng bằng số đã nhập vào.
3 - Traceroute command
  • Chức năng: rà tuyến đường của gói tin tới một địa chỉ đích
  • Hệ điều hành: Linux, *nix
  • Có sẵn: có.
  • Cấu trúc lệnh: traceroute [option] địa_chỉ_đích
    Trong đó:
    traceroute: tên lệnh
    địa_chỉ_đích: địa chỉ máy đích cần tìm đường
    option: các tùy chọn của lệnh
4 - Tar command
  •  Chức năng: nén và giải nén tập tin, thư mục trong linux.
  • Hệ điều hành: Linux, *nix
  • Có sẵn: có.
  • Cấu trúc lệnh: tar [options] tên_file_nén tên_file_hoặc_thư_mục_cần_nén
    Trong đó:
    tar: tên lệnh
    options: các tùy chọn
  • ví dụ để nén một thư mục ta gõ lệnh tar -zcvf file.tar.gz /home/user/data
  • Để nén một thư mục ta dùng lệnh sau: tar -zcvf prog-1-jan-2005.tgz /home/jerry/prog
U
1 - uname command
  • Chức năng: xem thông tin  tổng quan về hệ điều hành
  • Hệ điều hành: dòng debian
  • Có sẵn: có
  • Cấu trúc lệnh: uname [option]
    Trong đó:
    uname: tên lệnh
    option là các tham số đầu vào.
  • Option có thể là:
    a : xem tất cả
2. Useradd command
  • Chức năng: tạo tài khoản mới cho hệ thống
  • Hệ điều hành: Linux, *nix
  • Có sẵn: Có.
  • Cấu trúc lệnh:  useradd [option] user_name
    Trong đó:
    user_name: là tên tài khoản cần thêm
    option là các tùy chọn
  • Ví dụ:
    useradd -e {yyyy-mm-dd} {username} - Thêm user và ngày user này sẽ bị hết hạn - useradd -e 2008-12-31 jerryuseradd -f {days} {username} - Thêm user và ngày hết hạn mật khẩu - useradd -e 2009-12-31 -f 30 jerry

V
W
1 - Whois command
  • Chức năng: tra cứu thông tin của một tên miền (thực ra theo đúng định nghĩa thì là tra cứu thông tin một đối tượng trong cơ sở dữ liệu RFC 3291)
  • Hệ điều hành: Linux, *nix
  • Có sẵn: Không
  • Cấu trúc lệnh: whois [option] tên_miền
    Trong đó:
    whois: tên lệnh
    option: các tùy chọn
    tên_miền: tên miền cần tra cứu
X
Y
Z

14 tháng 3, 2012

Cách tạo ổ mã hóa bằng TrueCrypt trên Linux

Trước khi sử dụng Truecrypt trên Linux, bạn nên cập nhật kernel mới nhất cho hệ thống để đảm bảo TrueCrypt chạy tốt nhât.
TrueCrypt: là một chường trình cho phép người dùng mã hóa dữ liệu trên một phân vùng, ổ đĩa hoặc file. Các thuật toán mã hóa của TrueCrypt có thể coi là tốt nhất hiện nay, rất khó để phá vỡ khi dữ liệu bị đánh cắp nếu không có mật khẩu giải mã.
Địa chỉ download: Download
TrueCrypt hỗ trợ cả trên Windows và Linux, cả giao diện đồ họa và giao diện dòng lệnh.
Bài viết này chỉ hướng tới người sử dụng TrueCrypt trên giao diện dòng lệnh. Các bước tạo như sau:

làm lần lượt từng bước khi có dấu nhắc
  • Gõ lệnh truecrypt -c
  • Chọn kiểu volume là: normal hoặc hidden
  • Gõ đường dẫn tới file hoặc ổ cần truecrypt: ví dụ /home/taikhoan/film.avi (tên thì đặt là gì cũng được, ở đây đặt là film.avi để đánh lừa hacker không nghĩ đó là file dữ liệu)
  • Chọn định dạng dữ liệu:FAT, ext3,....
  • Chọn kích thước ổ truecrypt: ví dụ 100G = 100GB, tuỳ có thể chọn là M hoặc K.
  • Chọn thuật toán băm: tuỳ nhu cầu dùng
  • Chọn thuật toán mã hoá: tuỳ nhu cầu
  • Nhập mật khẩu cho ổ
  • Đợi tới khi truecrypt yêu cầu nhập 320 ký tự ngẫu nhiên
  • Tạo xong ổ.

08 tháng 3, 2012

Những vấn đề trong việc sử dụng Signed Applet

Bài này được tôi đúc rút kinh nghiệm từ thực tế khi xây dựng một applet sử dụng chữ ký số ký và mã hóa lên thư điện tử.
Dưới đây là các khó khăn tôi vấp phải và cách khắc phục:
1. Applet chỉ chạy với AppletViewer mà khi lên trình duyệt thì không chạy
  • Lý do: do applet sử dụng trong mục đích này có nhiều thao tác liên quan tới vấn đề bảo mật với máy ảo java nên đòi hỏi phải được ký mới có thể chạy được.
  • Cách khắc phục: tất nhiên là bạn phải ký cho applet này rồi. Bạn có thể sử dụng rất nhiều công cụ để ký, ở đây tôi sử dụng netbean bởi vì netbean hỗ trợ người dùng tự động ký cho applet (thời hạn là 6 tháng) đồng thời kí luôn lên tất cả các lib đi kèm với applet. Để yêu cầu netbean ký cho applet bạn làm như sau: Chọn Properties của project --> Web Start --> Chọn Customize trong phần Signing --> và chọn self-sign by generated key hoặc signed by a specify key
2. Xuất hiện các lỗi ClassNotFound khi chạy trên trình duyệt mặc dù bạn đã thêm đầy đủ các thư viện và applet đã chạy với AppletViewer

  • Lý do:
    Thứ nhất: applet được ký chỉ hoạt động với các thư viện đã được ký cùng với applet đó --> với các thư viện không được ký cùng applet thì nó sẽ không nhận ra.
    Thứ hai: Các thư viện đi kèm applet có sử dụng các class từ các thư viện khác --> tức là nó đang sử dụng các thư viện không được ký hoặc được ký nhưng lại không cùng chữ ký mà nó đang sử dụng (Cái này hơi phức tạp tí nhưng đại loại là thế)
    Do vậy có thể nói tóm lại là không phải do applet của bạn không nhận ra Class kia mà là thư viện bạn sử dụng không nhận ra class đó.
  • Khắc phục: Cái này hên xui, nếu bạn tìm được source code của cái thư viện chứa class bị thiếu hoặc của thư viện dùng class bị thiếu thì vui lòng bỏ công sức ra thêm nó vào applet của bạn thay vì thêm thư viện đã đóng gói.
3. Làm thế nào để xem stacktrace trong applet

  • Lý do: nếu bạn viết applet, bạn gần như không được cung cấp đầy đủ các công cụ debug (nếu bạn không biết cách mở nó ra)
  • Khắc phục: để có thể dễ dàng debug bạn hãy làm như sau: vào control panel --> java --> chọn tab advance và tick chọn tất cả các mục của phần debug rồi chọn show console trong phần java console
4. Tôi bị lỗi khi deploy một serverlet có sử dụng các thư viện java đã được ký.
  • Thường lỗi phổ biến nhất là bạn sẽ nhận được thông báo: "Invalid signature file digest for Manifest main attributes".
  • Nguyên nhân: do trong các file jar có chứa các file chữ kí, chính các file này gây ra; các file đó thường có đuôi là SF, DSA hoặc RSA.
  • Cách giải quyết: bạn hãy dùng một chương trình hỗ trợ nén và giải nén để xóa các file này đi.

06 tháng 3, 2012

RAID và các kỹ thuật RAID trên Ubuntu

Bài viết này được thực hiện từ thực tế khi đi triển khai người viết đã gặp phải.
RAID là viết tắt của Redundant Array of Independent Disk: tâp hợp các ổ đĩa có khả năng chịu lỗi. Các hệ thống sử dụng RAID cho phép người quản trị có thể nhanh chóng xác định ổ đĩa bị lỗi và thay nóng (hot plug) ngay ổ đĩa bị hỏng mà không gây ảnh hưởng tới các dữ liệu trên máy.
RAID thường được áp dụng trên các máy chủ (cả Windows và Linux) nhằm tăng độ an toàn cho dữ liệu của máy chủ.
Có rất nhiều loại RAID: RAID 0, RAID 1, RAID 5, RAID 10, RAID 0 + 1,…. (ở đây ta sẽ không đi sâu vào kỹ thuật áp dụng trên từng loại RAID)
Hiện tại trên thị trường có 3 loại hình RAID: Hardware RAID, Software RAID và fake RAID.
Hardware RAID: là kỹ thuật RAID mà việc điều khiển đọc ghi lên các ổ đĩa sẽ do một nhóm các phần cứng đặc biệt điều khiển. Loại RAID này hoạt động hoàn toàn trong suốt với hệ điều hành, không cần phải có driver, và không phụ thuộc là bạn đang dùng hệ điều hành gì.
Software RAID: là kỹ thuật RAID mà việc điều khiển đọc ghi lên các ổ đĩa sẽ do kernel của hệ điều hành điều khiển. Loại RAID này có ưu điểm là không cần phải có một phần cứng hỗ trợ RAID do đó sẽ giảm giá thành đầu tư cho máy chủ. Phải cài software RAID ngay khi cài hệ điều hành.
Fake RAID: là một kỹ thuật RAID lai giữa 2 kỹ thuật kể trên, sử dụng phần cứng để điều khiển việc đọc ghi lên ổ cứng nhưng không sử dụng các phần cứng chuyên biệt mà thực sự lại do một phần mềm nhỏ (gọi là BIOS trên card RAID) để điều khiển đọc ghi. Loại RAID này có ưu điểm là giá thành rẻ hơn Hardware RAID tuy nhiên khi hoạt động lại yêu cầu hệ điều hành phải load được driver điều khiển RAID lên dẫn tới việc đòi hỏi hoặc hệ điều hanh phải tích hợp sẵn driver của card hoặc phải yêu cầu hệ điều hành preload các driver lên trước khi đi vào quá trình boot. Nếu  hệ điều hành không hỗ trợ loại BIOS trên thiết bị RAID, dù có cấu hình như thế nào thì khi vào hệ điều hành, ta vẫn chỉ nhìn thấy các ổ đĩa riêng lẻ thay vì hệ thống ổ RAID như mong muốn.
Theo khảo sát trên mạng thì ta có thể so sánh các kỹ thuật RAID như sau (số liệu chỉ tính trên các máy chủ chạy kernel Linux):
Tốc độ đọc/ghi: Hardware RAID à Fake RAID à Software RAID
Khả năng bảo đảm an toàn dữ liệu: Hardware RAID à Software RAID à Fake RAID

Cơ chế quản lý startup trên Linux.

Cái này nếu ai dùng windows nhiều thì sẽ biết rất rõ. Nhưng với linux thì liệu có cơ chế này không, nếu có thì phải sử dụng như thế nào. Bài viết này sẽ giới thiệu cho mọi người sơ lược về cơ chế startup và cách sử dụng nó trên Linux như thế nào.
Trên Linux, Debian và các dòng dựa trên Unix về cơ bản sẽ có 6 cấp hoạt động (gọi là runlevel), có thể số lượng thay đổi tùy theo các bản phân phối. Chúng bao gồm:
·         Runlevel 0: rc0.d – Tương ứng với trạng thái Halts của máy
·         Runlevel 1: rc1.d – Tương ứng với trạng thái máy khởi động cho người quản trị.
·         Runlevel 2: rc2.d – Tương ứng với trạng thái máy khởi động không có các dịch vụ mạng (tương tự safemode trên windows)
·         Runlevel 3: rc3.d – Tương ứng với trạng thái máy khởi động bình thường
·         Runlevel 4: rc4.d – Đây là trạng thái chưa sử dụng.
·         Runlevel 5: rc5.d – Tương ứng với trạng thái máy khởi động với trình điều khiển đồ họa như gdm hay x-system.
·         Runlevel 6: rc6.d – Tương ứng với trạng thái reboot. (Khi máy reboot thì sẽ gọi các script trong thư mục này trước)
Ngoài ra còn có 2 runlevel là:
·         Rc.local: được gọi trước khi gọi các rcx.d (x là runlevel tương ứng)
·         rcS.d: được gọi sau khi máy chạy hết các script trong rcx.d (x là runlevel tương ứng).
Nội dung trong mỗi rcx.d bao gồm:
·         Các file có tên theo cấu trúc sau: SscriptNN (S: là từ khóa, NN: là số thứ tự, script: là tên script) là file khởi động dịch vụ và thứ tự khởi động là NN.
·         Các file có tên theo cấu trúc sau: KscriptNN (K: là từ khóa, NN: là số thứ tự, script: là tên script) là file tắt dịch vụ và thứ tự tắt là NN.
·         Các file có NN càng nhỏ thì thứ tự khởi động càng sớm, tức là 1 sẽ phải được gọi trước 2.
Để kiểm tra trạng thái máy chủ đang chạy ở runlevel nào có thể sử dụng lệnh: runlevel
Ví dụ ta thu được đầu ra là 2, tức là máy khi khởi động sẽ gọi các script chứa trong thư mục rc2.d
Các script trong rcx.d đều là các liên kết tới các script nằm trong thư mục /etc/init.d (có thể xem bằng lệnh ls –l /etc/rc*)
Vậy ta có thể sử dụng cơ chế startup trên linux như thế nào:
·         Để sử dụng ta phải sử dụng lệnh “update-rc.d
·         Update-rc.d tìm các script trong thư mục /etc/init.d/
·         Cấu trúc lệnh update-rc.d như sau:
o   Để loại bỏ một script ta dùng lệnh:
update-rc.d –f script_name remove.
o   Để tạo một script khởi động ta dùng lệnh
update-rc.d script_name start 48 1 3 6 . stop 36 0 2 5.
Trong đó:
script_name: tên script đặt trong thư mục /etc/init.d/ và có quyền excute (quyền “x”)
48: thứ tự Start
1, 3, 6: runlevel
dấu “.” Là bắt buộc, có 2 dấu “.” Trong đoạn script
36: thứ tự stop
0, 2, 5: runlevel

04 tháng 3, 2012

Có thể sử dụng BCC cho danh sách gửi mail được không?

Chúng ta thường hay nhận được câu hỏi này do rất nhiều người nghĩ rằng đây là cách rẻ nhất để vận hành một mailing list.
Nhưng thực tế là, BCC không phải được tạo ra cho mục đích này - nó được tạo ra để có thể gửi mail cho người nhận mà không muốn những người nhận khác trong danh sách có thể nhìn thấy địa chỉ đó.
Tuy nhiên, các spammer thường lợi dụng BCC để "hợp thức hóa" hành động spam của mình.
Dưới đây là các lý do mà ta không nên dùng BCC trong trường hợp này:
  • Số lượng địa chỉ trong BCC thường bị giới hạn, thường là 50 (tùy từng hệ thống, có thể có hệ thống còn ít hơn), vì thế nếu gửi cho một mailing list lớn người gửi thường phải chia thành các lần gửi nhỏ.
  • Các hệ thống chặn spam của máy chủ mail sẽ cho rằng thư bạn gửi đi là một thư spam do số lượng thư bạn gửi đi từ cùng một account trong một đơn vị thời gian quá lớn.
Nếu mail của bạn được chuyển tiếp thông qua một máy chủ mail của ISP, các máy chủ này cũng sẽ kiểm tra thư của bạn, và:
  • Nếu địa chỉ nhận không năm trong trường TO của thư thì thư của bạn sẽ bị đánh dấu là spam. Ngoài ra nếu như địa chỉ trong trường TO của thư tương tự như địa chỉ trong trường FROM thì thư của bạn cũng sẽ bị nghi ngờ là spam.
  • Nếu bạn soạn thư với định dạng HTML bằng cách sử dụng các chương trình xử lý văn bản, chúng sẽ tạo ra rất nhiều các thẻ không cần thiết có thể khiến thư của bạn bị nhận/nghi ngờ là thư spam.
  • Đặc biệt với những thư có các trường như header, subject,... sử dụng các ký tự hoặc mã lạ cũng sẽ bị nghi ngờ là spam (Hãy cố gắng sử dụng các tool hoặc soạn một mail có nội dung tuân theo đúng quy định)
Còn có rất nhiều lý do khác nữa mà thư của bạn có thể bị nhận là spam, bạn có thể tham khảo thêm tại địa chỉ SpamAssassin site.
==> Như vậy tóm lại: bạn không nên sử dụng BCC cho việc gửi thư tới mailing list.
Dưới đây là một số cách thay thế:
  • Sử dụng các hệ thống như Mailman
  • Cài đặt một số chương trình như phpList
  • ...
Các hệ thống này sẽ giúp bạn quản lý việc gửi thư tới mailing list bằng cách như: tự động chia nhỏ các địa chỉ nhận để gửi, phân chia thời gian để gửi,....