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à...

17 tháng 12, 2015

Hướng dẫn sử dụng Fdisk trên Linux

Trong bài viết này tôi hướng dẫn các bạn sử dụng công cụ Fdisk để phân vùng ổ đĩa trên hệ thống Linux.
Nói về việc phân vùng ổ thì hầu như bất kì một quản trị hệ thống nào cũng phải biết đến, nhưng để biết rõ và sử dụng được nó thì không phải ai cũng có thể vỗ ngực tự xưng cả.
Nội dung bài viết sẽ đưa ra kinh nghiệm sử dụng công cụ này + một số tip nho nhỏ về khắc phục một số vấn đề khi sử dụng.
Mời mọi người tham khảo.
 1. Đầu tiên, là phần giới thiệu về công cụ Fdisk:
Fdisk là một ứng dụng chạy ở chế độ dòng lệnh cho phép xem và quản lý các phân vùng ổ cứng cho các dòng máy chạy hệ điều hành Linux.
Trên các hệ điều hành Ubuntu, Linux Mint hoặc một số biến thể Ubuntu khác, ứng dung fdisk khi chạy cần phải sử dụng ở chế độ root hoặc dưới đặc quyền sudo.

2. Đây là phần hướng dẫn sử dụng:
Liệt kê các phân vùng:
Để liệt kê các phân vùng, bạn chạy lệnh sudo fdisk -l. Lệnh này sẽ liệt kê tất cả các phân vùng của tất cả các ổ cứng có trong hệ thống.
Để liệt kê các phân vùng trong một ổ cứng chỉ định, bạn chạy lệnh sudo fdisk -l /dev/sda. Tức là bạn thêm đường dẫn tới ổ cứng muốn xem ở cuối dòng lệnh.
Lưu ý: Không nên tác động tới các phân vùng đang được sử dụng hoặc đã có dữ liệu. Việc này có thể làm hỏng hệ điều hành hoặc mất dữ liệu của bạn.

Truy cập công cụ Fdisk:
Để truy cập công cụ fdisk bạn gõ lệnh sudo fdisk /dev/sda
Lưu ý, bạn phải chỉ rõ cho fdisk biết mình muốn tác động vào ổ đĩa nào trước khi truy cập công cụ.

Xem giúp đỡ về các tùy chọn của công cụ:
Từ màn hình của công cụ Fdisk, bạn gõ m để xem trợ giúp.
Xem chi tiết thông tin các phân vùng trên ổ đĩa
 Để xem chi tiết thông tin các phân vùng trên ổ đĩa, bạn gõ p.

Xóa phân vùng trên ổ đĩa:
Để xóa phân vùng trên ổ đĩa, bạn gõ d.
Bạn sẽ được hỏi số thứ tự của phân vùng bạn muốn xóa (bạn có thể xem thông tin này thông qua lệnh p). Ví dụ, nếu muốn xóa phân vùng /dev/sda5, bạn gõ 5 (như trong hình).
Sau khi xóa, bạn có thể gõ p để xem các phân vùng hiện tại còn trên ổ đĩa. Như hiện tại, phân vùng đã bị xóa, tuy nhiên fdisk chưa ghi các thay đổi này lên địa cho tới khi bạn gõ lệnh w.


Tạo phân vùng mới:
Để tạo phân vùng mới, bạn gõ lệnh n.
Bạn có thể tạo một phân vùng logic hoặc primary (chọn l để tạo phân vùng logic và p để tạo phân vùng primary) Một ổ đĩa chỉ có thể có tối đa 4 phân vùng primary, số phân vùng logic thì không giới hạn.
Tiếp theo, bạn cần chỉ định sector bắt đầu cho phân vùng. Gõ Enter để chấp nhận sector mặc định, thông thường nó là sector rảnh đầu tiên của ổ đĩa.
Tùy chọn cuối cùng cần bạn chỉ ra sector cuối cùng cho phân vùng trên đĩa. Nếu muốn sử dụng toàn bộ không gian ổ đĩa, bạn chỉ cần chấp nhận giá trị mặc định của dòng lệnh bằng cách gõ Enter. Bạn cũng có thể chỉ ra kích thước ổ đĩa thay vì nhập số sector, ví dụ nhập +5G để tạo một phân vùng có dung lượng 5G (có thể chọn M,G tương ứng với MB và GB). Nếu khong chỉ ra một đơn vị tính sau dấu +, fdisk sẽ cói nó là số sector. Ví dụ, nếu nhập +10000 thì sector cuối cùng cho phân vùng sẽ là 10000.

System ID:
Lệnh t được sử dụng để xem các chỉ số tương ứng của phân vùng.
Lệnh L được dùng để xem danh sách các định dạng ổ đĩa mà công cụ hỗ trợ.
Nhập số tương ứng với phân vùng cần chọn, ví dụ gõ 82 để chọn phân vùng swap:


Ghi lại các thay đổi:
Sau khi thao tác với ổ đĩa, bạn cần ghi lại các thay đổi để có hiệu lực. Bạn chạy lệnh w để tiến hành ghi lại thay đổi lên ổ đĩa.
Nếu không chạy lệnh w mà sử dụng lệnh q, mọi thay đổi của bạn se bị hủy bỏ.
Định dạng phân vùng.
Lưu ý, sau khi chạy lệnh fdisk, bạn nên khởi động lại hệ thống đồng thời chạy lệnh partprobe. Bởi vì thường thì sau khi có một phân vùng được tạo ra, bạn sẽ thấy tên tập tin thiết bị tương ứng với phân vùng đó hiện ra trong thư mục /dev/mapper/. Tuy nhiên vì một số lý do nào đó bạn có thể không thấy tên tập tin thiết bị tương ứng được tạo ra sau khi sử dụng lệnh fdisk. Lệnh partprobe sẽ giải quyết vấn đề này.
Sau khi tạo phân vùng, bạn cần định dạng lại phân vùng trước khi sử dụng. Bạn có thể thực hiện bằng cách sử dụng lệnh mkfs tương ứng. Ví dụ, lệnh sau được sử dụng để định dạng lại phân vùng theo định dạng ext4:
sudo mkfs.ext4 /dev/sda5

Hoặc để tạo phân vùng swap thì chạy lệnh sau:
sudo mkswap /dev/sda4.
Ngoài ra còn một số lệnh khác trên Fdisk nhưng ít dùng nên tôi sẽ dành một bài viết khác để giới thiệu.
Link tham khảo:
http://www.howtogeek.com/106873/how-to-use-fdisk-to-manage-partitions-on-linux/
http://askubuntu.com/questions/174956/after-making-partition-i-couldnt-see-device-dev-sda3



14 tháng 12, 2015

Các fix lỗi VPN: ERROR: netsh command failed: returned error code 1

Cũng lâu không viết Tut. Tới hôm nay mới có thời gian viết lại.
Tut này ngắn thôi, chỉ là hướng dẫn cách fix lỗi với OpenVPN.
Tôi có một tài khoản VPN và hay sử dụng nó để làm một số việc. Tuy nhiên gần đây rất hay gặp lỗi  ERROR: netsh command failed: returned error code 1. Sau đó tôi không thể truy cập VPN được nữa.
Sau một hồi lục lọi tìm tòi thì tôi phát hiện ra card TunelTap (do OpenVPN sinh ra) bỗng tự đặt IP cho nó.
Vậy là đơn giản muốn sửa lỗi này thì bạn chỉ cần đặt lại cho nó ở chế độ Automatic IP là được.

26 tháng 4, 2015

Các thủ thuật trên Postgres (26/04/2015)

Bài viết này tôi nghiệm ra sau một số lần làm việc trên cơ sở dữ liệu Postgres.
Nó chỉ mang tính kinh nghiệm chứ không tập trung vào vấn đề kỹ thuật.
Tất cả các nội dung đều đã đảm bảo là hoạt động chính xác như tác giả mong muốn.
1. Làm thế nào để copy dữ liệu từ 1 bảng sang 1 bảng khác.
Trên công cụ pgAdmin đi kèm bộ cài postgress (Link download) bạn có thể dùng query tool để chạy lệnh sau:
INSERT INTO table_name
         [ ( column_name [, ...] ) ]
         query
Ví dụ:
INSERT INTO books (id, title, author_id, subject_id)
SELECT nextval('book_ids'), title, author_id, subject_id         
FROM book_queue WHERE approved;
Xem thêm tại: http://www.commandprompt.com/ppbook/x5504
Phần Insert from other tables
2. Cast kiểu giá trị trong postgres
Để cast từ string sang integer trong postgres ta dùng hàm cast theo cấu trúc sau:
cast( var1 as int)
Nếu muốn xử lý trong trường hợp xâu là rỗng (không phải null) thì dùng lệnh sau:
cast( nullif(var1, '') as int)
3. Sinh chuỗi UUID cho bảng trong Postgres
Để sinh chuỗi UUID cho bảng trong Postgres ta sử dụng extension đi kèm bộ cài.
Để kiểm tra xem extension này có đang chạy không ta thử bằng truy vấn sau:
Select uuid_in(md5(random()::text || now()::text)::cstring);
Nếu có kết quả đầu ra là một uuid thì ok, nếu không thì phải cài extension này bằng lênh:
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
Xem thêm

05 tháng 3, 2015

Sinh key bằng OpenSSL trên Ubuntu

1. Tạo Private key
Chạy lệnh sau:
openssl genrsa -des3 -out www.example.com.key 1024
Trong đó:
  • www.example.com.key: đầu ra của lệnh, là key cần sinh
  • 1024: là độ dài của key
2.  Tạo CSR từ private key vừa sinh ra:
Chạy lệnh:
openssl req -new -key www.example.com.key -out www.example.com.csr
Trong đó:
  • www.example.com.key : là private key được sinh ở phần 1
  • www.example.com.csr: là đầu ra của lệnh
3. Tạo Self-Signed SSL Certificate
Chạy lệnh sau:
openssl x509 -req -days 365 -in www.example.com.csr -signkey www.example.com.key -out www.example.com.crt
Trong đó:
  • 365: là số ngày hiệu lực của chứng chỉ.
  • www.example.com.csr: là csr sinh ra ở bước 2.
  • www.example.com.key: là private key sinh ra ở bước 1.

26 tháng 12, 2014

Whitelist, blacklist trong Zimbra

Bài viết này tôi sẽ tập trung vào việc hướng dẫn các bạn các cách thiết lập whitelist và blacklist trong phiên bản Zimbra 8.x
1. Hướng dẫn cách đưa địa chỉ thư local vào whitelist.
Để đưa tên miền nội bộ vào whitelist (Không bị đưa vào thư mục spam) ta làm như sau:
- Giả sử tên miền nội bộ có tên là domain.com
- Ta thêm dòng sau vào trong tập tin /opt/zimbra/conf/amavisd.conf.in:
"domain.com" => -10.0,
- Thêm nội dung sau vào tập tin /opt/zimbra/conf/amavis.conf.in:
read_hash(\%whitelist_sender, ‘/opt/zimbra/whitelist’);
read_hash(\%blacklist_sender, ‘/opt/zimbra/blacklist’);
read_hash(\%spam_lovers, ‘/opt/zimbra/spamlovers’);

- Tạo tập tin /opt/zimbra/whitelist với nội dung:
domain.com
- Thêm vào tập tin /opt/zimbra/conf/spamassassin/local.cf nội dung sau:
trusted_networks your_ip
Lưu ý thay your_ip bằng ip tương ứng của bạn
- Khởi động lại các dịch vụ bằng lênh sau:
zmmtactl restart
zmamavisdctl restart
zmcontrol restart
2. Đưa địa chỉ thư nội bộ ra khỏi bộ quét virus, spam.
Để đưa địa chỉ thư nội bộ ra khỏi bộ quét virus, spam (Không bị kiểm tra nữa) ta làm như sau:
- Chỉnh nội dung tham số amavis_originating_bypass_sa thành true và chạy lệnh zmamavisdctl restart
- Một khi đã được bật, tất cả các thư được gửi từ địa chỉ nằm trong dải trustednetwork sẽ không bị đưa qua bộ lọc nữa.
Xem thêm tại đây
 

28 tháng 10, 2014

Các plugin tốt dành cho Notepad++

1. Compare:
Được sử dụng để so sánh 2 văn bản.
Plugin sẽ hỗ trợ đánh dấu các vị trí có sự khác biêt: bị xóa, nội dung không khớp, có nội dung mới,...
2. JSTool
Là công cụ hỗ trợ thao tác với các dữ liệu có định dạng JSON.
Tool sẽ giúp người lập trình định dạng lại dữ liệu để thuận tiện cho việc thao tác.
3. XML Tools
Là công cụ hỗ trợ định dạng lại dữ liệu XML để thuận tiện cho người phát triển.
4. Plugin Manager
Là công cụ hỗ trợ việc tìm kiếm và cài đặt các plugin khác nhau cho Notepad++
5. MIME Tools
Là công cụ hỗ trợ thao tác với các dữ liệu theo chuẩn MIME.
Chức năng của nó bao gồm: encode/decode chuẩn base64,...

13 tháng 9, 2014

fstab trong Linux

Fstab là gì? Hiểu nôm na nó là một tập tin hỗ trợ việc quản lý gắn kết (mount) và sử dụng các phân vùng của hệ điều hành.
Trong bài viết này, tôi sẽ giới thiệu cho bạn cách để làm chủ tập tin cấu hình này, tất nhiên là chỉ với những kiến thức nằm trong tầm hiểu biết của cá nhân tôi.
Cấu trúc chung của một fstab bao gồm các dòng có nội dung như sau:

[Device] [Mount Point] [File System Type] [Options] [Dump] [Pass]

Trong đó:
Device: là thiết bị hoặc phân vùng (có thể là đường dẫn của tập tin đại diện hoặc UUID của đối tượng), device được ở đây còn có thể là thiết bị mạng, phân vùng chia sẻ,...
Có thể xem thông tin UUID của thiết bị bằng lệnh:  sudo blkid
Một ổ phân vùng thường có đường dẫn dạng: /dev/sdxy
 Hoặc có dạng LABEL=label
Hoặc các dạng ổ mạng, chia sẻ:
  • Samba: //server/share
  • NFS: //server:/share
  • SSHFS : sshfs#user@server:/share
Mount point: địa chi gắn kết thiết bị, ví dụ /opt/data/
File System Type: định dạng của thiết bị, có thể là:
  • auto
  • vfat: dành cho các phân vùng có định dạng FAT
  • ntfs, ntfs-3g: dành cho các phân vùng có định dạng NTFS
  • ext2, ext3, ext4, jfs, reiserfs
  • udf, iso9660: dành cho các ổ đĩa CD, DVD,
  • swap.
Options: các tùy chọn áp dụng trên phân vùng, được phân cách bằng dấu phẩy (,)
  •  sync/async: tất cả các thao tác đọc, ghi trên thiết bị phải ở dạng đồng bộ/bất đồng bộ
  • auto: tự động gắn kết phân vùng khi khởi động hệ điều hành.
  • noauto: không tự động gắn kết phân vùng khi khởi động hệ điều hành.
  • dev/nodev: tùy chọn này hiểu nôm na là cho phép hoặc không cho phép coi một node nằm ngoài thư mục /dev/ là một thiết bị (ví dụ nếu dùng nodev thì hệ điều hành sẽ coi việc định nghĩa thiết bị tại đường dẫn /home/dev/sda là bất hợp pháp).
  • exec/noexec: cho phép hoặc không cho phép thực thi một tập tin có quyền exec trên thiết bị này.
  • suid/nosuid: cho phép hoặc không cho phép các thao tác với các bit suid hoặc sgid
  • ro: thiết bị ở dạng chỉ đọc.
  • rw: thiết bị ở dạng đọc và ghi.
  • user: cho phép người dùng có thể gắn kết ổ này, tùy chọn này sẽ tự động thực thi các tùy chọn rw, suid, exec, auto, nouser và async
  • nouser: chỉ cho phép người dùng root gắn kết ổ, tùy chọn này tương ứng với tùy chọn defaults.
  • defaults: bao tương ứng với các tùy chọn rw, suid, dev, exec, auto, nouser, async.
  • _netdev: đây là một thiết bị mạng, chỉ thực hiện gắn kết sau khi khởi động card mạng. Chỉ có hiệu lực với các định dạng nfs và fstype.
Dump: bật hoặc tắt chế độ backup cho ổ đĩa, có giá trị là 0 - tắt hoặc 1 - bật.
Pass: định nghĩa thứ tự để ứng dụng fsck kiểm tra thiết bị nếu gặp lỗi trong quá trình khởi động, thường sẽ là 2, 1 chỉ nên dùng cho phân vùng root, 0 có nghĩa là tắt
Dưới đây là một ví dụ về nội dung tập tin fstab:

# /etc/fstab: static file system information.
#
#                

proc  /proc  proc  defaults  0  0
# /dev/sda5
UUID=be35a709-c787-4198-a903-d5fdc80ab2f8  /  ext3  relatime,errors=remount-ro  0  1
# /dev/sda6
UUID=cee15eca-5b2e-48ad-9735-eae5ac14bc90  none  swap  sw  0  0

/dev/scd0  /media/cdrom0  udf,iso9660  user,noauto,exec,utf8  0  0
Và đây là một ví dụ về tập tin fstab quản lý một thiết bị mạng:
# FAT ~ Linux calls FAT file systems vfat)
# /dev/hda1
UUID=12102C02102CEB83  /media/windows  vfat auto,users,uid=1000,gid=100,dmask=027,fmask=137,utf8  0  0

# NTFS ~ Use ntfs-3g for write access (rw) 
# /dev/hda1
UUID=12102C02102CEB83  /media/windows  ntfs-3g  auto,users,uid=1000,gid=100,dmask=027,fmask=137,utf8  0  0

# Zip Drives ~ Linux recognizes ZIP drives as sdx'''4'''

# Separate Home
# /dev/sda7
UUID=413eee0c-61ff-4cb7-a299-89d12b075093  /home  ext3  nodev,nosuid,relatime  0  2

# Data partition
# /dev/sda8
UUID=3f8c5321-7181-40b3-a867-9c04a6cd5f2f  /media/data  ext3  relatime,noexec  0  2

# Samba
//server/share  /media/samba  cifs  user=user,uid=1000,gid=100  0  0
# "Server" = Samba server (by IP or name if you have an entry for the server in your hosts file
# "share" = name of the shared directory
# "user" = your samba user
# This set up will ask for a password when mounting the samba share. If you do not want to enter a password, use a credentials file.
# replace "user=user" with "credentials=/etc/samba/credentials" In the credentials file put two lines
# username=user
# password=password
# make the file owned by root and ro by root (sudo chown root.root /etc/samba/credentials && sudo chmod 400 /etc/samba/credentials)

# NFS
Server:/share  /media/nfs  nfs  rsize=8192 and wsize=8192,noexec,nosuid
# "Server" = Samba server (by IP or name if you have an entry for the server in your hosts file
# "share" = name of the shared directory

#SSHFS
sshfs#user@server:/share  fuse  user,allow_other  0  0
# "Server" = Samba server (by IP or name if you have an entry for the server in your hosts file
# "share" = name of the shared directory