Bài 15. File Servers
File Transfer
Protocol (FTP) là giao thức cho download/upload tệp. FTP làm việc theo mô hình
client/server. FTP server còn được gọi là FTP daemon. Nó liên tục lắng nghe các
yêu cầu FTP từ các clients. Khi nhận được một yêu cầu, FTP server thực hiện thủ
tục đăng nhập và thiết lập kết nối với một phiên làm việc. Trong suốt phiên làm
việc, FTP server nhận và thực yhi bất kỳ lệnh nào được gửi đến bởi client.
Có thể truy cập
FTP server theo hai chế độ: Anonymous (Vô danh) và Authenticated (Có xác thực). Ở chế độ vô
danh, clients có thể truy cập FTP server bằng tài khoản mặc định có tên là "ftp"
và dùng địa chỉ email làm mật khẩu. Ở chế độ xác thực, người dùng phải có tài
khoản và mật khẩu hệ thống để truy cập FTP server.
FTP dùng 2
kênh TCP: cổng 20 cho dữ liệu và cổng 21 cho lệnh. Tiến trình giao tiếp ở cổng
21 gửi và nhận lệnh, được gọi là
protocol interpreter, hay PI. Tiến trình giao tiếp ở cổng 20 thực hiện
truyền/nhận dữ liệu được gọi là data
transfer process, hay DTP.
FTP khác với
tất cả ứng dụng TCP/IP là phải dùng 2 kênh, cho phép giả lập truyền tải lệnh và
dữ liệu của FTP. Nó cũng khác các giao thức khác một chức năng quan trọng: FTP
truyền tải files ở foreground, so với giao thức khác ở background. Hay nói cách
khác, FTP không dùng spoolers hay queues, do vậy việc truyền tải thực hiện bằng
thời gian thực.
FTP deamon cho Ubuntu có tên là vsftpd. Chạy lệnh
sau để cài đặt vsftpd:
sudo apt install vsftpd
Tệp cấu hình vsftpd là /etc/vsftpd.conf.
Chế
độ vô danh
Để sử dụng
chế độ vô danh, chỉnh sửa tệp /etc/vsftpd.conf bằng thay đổi sau:
anonymous_enable=Yes
Ở chế độ vô danh, người dùng ‘ftp’ được sử dụng. Trong
quá trình cài đặt, người dùng ‘ftp’ được tạo, cùng với thư mục home cho người dùng
này là /srv/ftp. Nếu muốn thay đổi thư mục home cho ftp, ví dụ thành /srv/files/ftp,
hãy chạy các lệnh sau:
sudo mkdir
/srv/files/ftp
sudo
usermod -d /srv/files/ftp ftp
Nếu muốn cho người dùng vô danh (‘ftp’) được
upload tệp, đặt tham số sau:
anon_upload_enable=YES
Lưu ý, cho upload tệp ở chế độ vô danh có rủi ro
an ninh rất cao.
Cần khởi động lại vsftpd để nó nhận cấu hình mới.
sudo
restart vsftpd
Chế
độ có xác thực
Để sử dụng
chế độ có xác thực, chỉnh sửa tệp /etc/vsftpd.conf bằng thay đổi sau:
anonymous_enable=No
Ở chế độ xác thực, người dùng sử dụng tài khoản hệ
thống để đăng nhập FTP Server.
Nếu cho phép người dùng upload tệp, đặt thông số
sau:
write_enable=YES
Cần khởi động lại vsftpd để nó nhận cấu hình mới.
sudo
restart vsftpd
Để giới hạn người dùng chỉ được truy cập trong thư
mục home của họ, sử dụng giá trị cấu hình sau:
chroot_local_user=YES
Cũng có thể danh sách người dùng chỉ có quyền
trong thư mục home của họ bằng các tham số:
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
Tạo tệp /etc/vsftpd.chroot_list chứa danh sách người
dùng, mỗi người dùng trên một dòng.
Để không cho một người dùng được sử dụng FTP, hãy đưa
tên người dùng vào
tệp /etc/ftpusers. Danh sách mặc đinh bao gồm
root, daemon, nobody.
Có thể sử dụng FTP trên Secure Socket Layer (SSL),
tức FTPS. Cấu hình bằng cách thêm dòng sau vào cuối tệp /etc/vsftpd.conf.
ssl_enable=Yes
Đồng thời lưu ý chứng thư và khóa liên quan:
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
Theo mặc định, FTP server sử dụng chứng thư và khóa
được cung cấp bởi gói ssl-cert package. Trong môi trường sản xuất, hãy thay thế
bằng chứng thư và khóa được tạo cho host.
Lưu ý cần khởi động lại vsftpd để nó nhận cấu hình
mới.
Sử dụng ftp client bất kỳ, ví dụ ftp, để truy cập
vào ftp server:
ftp ip_or_domainname
331 Guest login ok, send your complete e-mail address as
password.
Enter username (default: anonymous): anonymous
Enter password [tparker@tpci.com]:
|FTP| Open
230- WELCOME to UNC and SUN's anonymous ftp server
230- University of North Carolina
230- Office FOR Information Technology
230- SunSITE.unc.edu
230 Guest login ok, access restrictions apply.
FTP>
Các lệnh trong ftp:
Lệnh Chức năng
ascii Chuyển sang dạng truyền mã ASCII
binary Chuyển
sang dạng truyền mã binary
cd Đổi
thư mục trên server
close Chấm dứt kết nối
del Xóa một file trên server
dir Xem nội dung thư mục trên server
get Lấy một file từ server
hash Chỉ ra một giá trị ký tự cho mỗi
khối được truyền
help Giúp đỡ
lcd Thay đổi thư mục trên client
mget Tải nhiều file từ server
mput Gửi nhiều file đến server
open Kết nối đến một server
put Gửi một file đến server
pwd Xem thư mục hiện hành trên server
quote Cung cấp các lệnh FTP một cách trực
tiếp
quit Kết
thúc FTP
Nếu muốn sử dụng giao diện đồ họa, hãy sử dụng FTP
client có tên là Filezilla.
NFS (Network
File System) là hệ thống cung cấp dịch vụ chia sẻ tệp phổ biến hiện nay trong hệ
thống mạng Linux và Unix. NFS sử dụng mô hình Client/Server. NFS Server có các
ổ đĩa cứng vật lý chứa các file system
được chia sẻ và một số dịch vụ chạy ngầm trên hệ thống (daemon) phục vụ cho việc chia sẻ với NFS client. Ngoài ra, các
dịch vụ chạy trên NFS Server cũng cung cấp chức năng bảo mật tệp và quản lý lưu
lượng sử dụng file system quota.
NFS clients muốn sử dụng các file system được chia
sẻ trên NFS Server chỉ đơn giản dùng giao thức NFS mount các file system đó lên hệ thống của mình.
Chạy lệnh sau để cài đặt NFS
sudo apt install nfs-kernel-server
Có thể cấu hình các
thư mục được chia sẻ bằng việc thêm thư mục vào tệp /etc/exports. Ví dụ
/ubuntu 10.0.0.0/24 (ro,sync,no_root_squash)
/home *(rw,sync,no_root_squash)
Trong đó:
o
/ubuntu và /home: Thư mục cần chia sẻ
o
10.0.0.0/24 hay *: Dải địa chỉ IP mà
NFS server cho phép truy cập
o
ro: Chỉ cho đọc và không cho ghi vào
thư mục
o
rw: Cho phép ghi vào thư mục chia sẻ
o
sync: synchronize
o
no_root_squash: cho quyền root
o
no_all_squash: sử dụng quyền của người
dùng
Khởi động lại NFS
server:
sudo systemctl
start nfs-kernel-server.service
Trên máy muốn sử
dụng thư mục được chia sẻ bởi NFS server, cài đặt nfs-common bằng lệnh:
sudo apt install
nfs-common
Sử dụng lệnh
mount để ánh xạ thư mục được chia sẻ bởi NFS server vào thư mục trên client:
sudo mount nfsserver.hostname:/ubuntu
/local/ubuntu
Có thể thực hiện mout tự động bằng cách thêm dòng
cấu hình vào tệp /etc/fstab
nfsserrver.hostname:/ubuntu
/local/ubuntu nfs rsize=8192,wsize=8192,timeo=14,intr