Tìm hiểu libguestfs
1. Khái niệm.
- libguestfs là một bộ các công cụ để truy cập và chỉnh sửa disk image của máy ảo. Nó có thể được sử dụng để xem và sử file trong máy ảo, chạy script, theo dõi, thay đổi dung lượng disk, tạo máy ảo, tạo backup, clone máy ảo, định dạng disk image,…
- libguestfs gần như có thể làm việc với bất kì định dạng image, filesystem nào, nó làm việc được cả bới các ổ đĩa từ xa qua ssh, ceph, glusterfs,… libguestfs không cần quyền root.
guestfish
là công cụ dòng lệnh có tất cả các chức năng trên.
Khi sử dụng guestfish, nó không mount trực tiếp image vào filesystem nội bộ mà sẽ cung cấp một giao diện shell cho phép xem, sửa, xóa,.. với file trong image.
2. Ví dụ sử dụng guestfish
Ví dụ sau sẽ tiến hành thay đổi mật khẩu tài khoản root cho image centos7 bằng cách sử đổi file /etc/shadow.
Tạo mật khẩu mã hóa sử dụng openssl passwd
:
$ openssl passwd -1 newpassword
$1$WcIkUEQo$.r9x.jPeUO6o0IKeuOAIB1
Sử dụng guestfish
để thêm và mount image:
root@m4700:/var/lib/libvirt/images# guestfish --rw -a centos7.0.1.qcow2
Welcome to guestfish, the guest filesystem shell for
editing virtual machine filesystems and disk images.
Type: 'help' for help on commands
'man' to read the manual
'quit' to quit the shell
><fs>
Nó sẽ khởi động một phiên guestfish
.
Sau đó, chúng ta cần chạy lênh run
để có thể làm việc tiếp. Lệnh này sẽ sử dụng qemu để chạy một máy ảo như một tiến trình con, từ đó có thể tương tác với file.
><fs> run
- Sử dụng lệnh
list-filesystems
để có thể liệt kê các file system trên image:><fs> list-filesystems /dev/sda1: swap /dev/sda2: xfs ><fs>
- Tiến hành mount thư mục chứa hệ điều hành:
><fs> mount /dev/sda2 /
- Để sửa mật khẩu của tài khoản root, ta tiến hành chỉnh sửa file /etc/shadow, thay thế chuỗi mật khẩu mã hóa cũ bằng chuỗi mật khẩu mã hóa vừa tạo ở trên:
><fs> edit /etc/shadow # sửa cột thứ hai ở dòng của user root root:$1$WcIkUEQo$.r9x.jPeUO6o0IKeuOAIB1::0:99999:7:::