Quản lý Thư mục và Tệp tin trong Linux
Từ khóa:
cd
,ls
,pwd
,mkdir
,rmdir
,tree
,touch
,ln
,rename
,stat
,file
,chmod
,chown
,locate
,find
,cp
,scp
,mv
,rm
1. Cơ chế làm việc với Thư mục và Tệp tin trong Linux
Cấu trúc thư mục Linux có cấu trúc cây, với thư mục gốc là /
. Dưới đây là một sơ đồ minh họa các thư mục và chức năng của chúng:
1.2. Thuộc tính Tệp tin Linux
Hệ điều hành Linux là một hệ thống đa người dùng, các người dùng khác nhau có các quyền truy cập khác nhau vào cùng một tệp tin (bao gồm cả thư mục). Để bảo vệ tính bảo mật của hệ thống, Linux áp đặt các quy tắc khác nhau cho quyền truy cập của người dùng khác nhau vào cùng một tệp tin.
Trong Linux, bạn có thể sử dụng lệnh ll
hoặc ls -l
để hiển thị thuộc tính của một tệp tin và người sở hữu và nhóm của tệp tin đó, ví dụ:
Trong ví dụ trên, thuộc tính đầu tiên của tệp tin bin
được đại diện bởi ký tự d
. Ký tự d
trong Linux đại diện cho tệp tin là một thư mục.
Trong Linux, ký tự đầu tiên xác định loại tệp tin, bao gồm thư mục, tệp tin, liên kết tệp tin, v.v.
- Khi là
d
, đó là thư mục - Khi là
-
, đó là tệp tin - Khi là
l
, đó là liên kết tệp tin - Khi là
b
, đó là tệp tin thiết bị lưu trữ có thể ghi - Khi là
c
, đó là tệp tin thiết bị nối tiếp, chẳng hạn như bàn phím, chuột (đọc tệp tin duy nhất)
Các ký tự tiếp theo, được nhóm chia thành các nhóm 3 ký tự, đại diện cho các quyền rwx
. Trong đó, r
đại diện cho quyền đọc (read), w
đại diện cho quyền ghi (write), x
đại diện cho quyền thực thi (execute). Lưu ý rằng vị trí của ba quyền này không thay đổi, nếu không có quyền, sẽ có dấu trừ -
.
Mỗi tệp tin có thuộc tính được xác định bởi 10 ký tự đầu tiên (như hình dưới đây).
Từ trái sang phải, các số từ 0 đến 9 được sử dụng để đại diện cho các thuộc tính khác nhau.
- Chữ số 0 xác định loại tệp tin
- Chữ số 1-3 xác định quyền sở hữu (chủ sở hữu tệp tin) của tệp tin đó.
- Chữ số 4-6 xác định quyền sở hữu nhóm (người dùng cùng nhóm với chủ sở hữu) của tệp tin đó.
- Chữ số 7-9 xác định quyền của người dùng khác.
Chữ số 1, 4 và 7 đại diện cho quyền đọc; nếu được biểu thị bằng ký tự “r”, có quyền đọc; nếu biểu thị bằng ký tự ”-”, không có quyền đọc.
Chữ số 2, 5 và 8 đại diện cho quyền ghi; nếu được biểu thị bằng ký tự “w”, có quyền ghi; nếu biểu thị bằng ký tự ”-”, không có quyền ghi.
Chữ số 3, 6 và 9 đại diện cho quyền thực thi; nếu được biểu thị bằng ký tự “x”, có quyền thực thi; nếu biểu thị bằng ký tự ”-”, không có quyền thực thi.
1.2.1. Chủ sở hữu và nhóm của Tệp tin Linux
- Đối với tệp tin, nó có một chủ sở hữu cụ thể, tức là người dùng sở hữu tệp tin đó.
- Đồng thời, trong hệ thống Linux, người dùng được phân loại thành các nhóm, một người dùng thuộc một hoặc nhiều nhóm.
- Tệp tin chủ sở hữu và nhóm tệp tin xác định quyền truy cập khác nhau của người dùng vào cùng một tệp tin.
- Do đó, hệ thống Linux xác định quyền truy cập khác nhau cho chủ sở hữu tệp tin, người dùng cùng nhóm với chủ sở hữu và người dùng khác vào cùng một tệp tin.
- Trong ví dụ trên, tệp tin
bin
là một thư mục, chủ sở hữu và nhóm của nó đều là root, chủ sở hữu có quyền đọc, ghi và thực thi; người dùng cùng nhóm khác có quyền đọc và thực thi; người dùng khác cũng có quyền đọc và thực thi.
2. Quản lý Thư mục và Tệp tin trong Linux
2.1. Quản lý Thư mục
- Thay đổi thư mục làm việc - Sử dụng cd
- Xem thông tin thư mục - Sử dụng ls
- Hiển thị đường dẫn tuyệt đối của thư mục hiện tại - Sử dụng pwd
- Hiển thị cây thư mục - Sử dụng tree
- Tạo thư mục mới - Sử dụng mkdir
- Xóa thư mục - Sử dụng rmdir
2.2. Quản lý Tệp tin
- Tạo tệp tin trống - Sử dụng touch
- Tạo liên kết cho tệp tin - Sử dụng ln
- Đổi tên nhiều tệp tin cùng một lúc - Sử dụng rename
- Hiển thị thông tin chi tiết của tệp tin - Sử dụng stat
- Xác định loại tệp tin - Sử dụng file
- Đặt quyền truy cập cho tệp tin hoặc thư mục - Sử dụng chmod
- Đặt chủ sở hữu hoặc nhóm cho tệp tin hoặc thư mục - Sử dụng chown
- Tìm kiếm tệp tin hoặc thư mục - Sử dụng locate
- Tìm kiếm tệp tin trong thư mục cụ thể - Sử dụng find
- Tìm kiếm đường dẫn tuyệt đối của một lệnh - Sử dụng which
- Tìm kiếm các tệp tin, chương trình, v.v. liên quan đến một lệnh - Sử dụng whereis
2.3. Quản lý chung cho Thư mục và Tệp tin
- Sao chép tệp tin hoặc thư mục - Sử dụng cp
- Sao chép tệp tin hoặc thư mục đến máy chủ từ xa - Sử dụng scp
- Di chuyển tệp tin hoặc thư mục - Sử dụng mv
- Xóa tệp tin hoặc thư mục - Sử dụng rm
3. Cách sử dụng của các lệnh phổ biến
3.1. cd
Lệnh cd được sử dụng để chuyển đổi thư mục làm việc.
Tham khảo: http://man.linuxde.net/cd
Ví dụ:
3.2. ls
Lệnh ls được sử dụng để hiển thị thông tin về thư mục.
Tham khảo: http://man.linuxde.net/ls
Ví dụ:
3.3. pwd
Lệnh pwd được sử dụng để hiển thị đường dẫn tuyệt đối của thư mục hiện tại.
Tham khảo: http://man.linuxde.net/pwd
3.4. mkdir
Lệnh mkdir được sử dụng để tạo thư mục.
Tham khảo: http://man.linuxde.net/mkdir
Ví dụ:
3.5. rmdir
Lệnh rmdir được sử dụng để xóa thư mục trống.
Tham khảo: http://man.linuxde.net/rmdir
Ví dụ:
3.6. tree
Lệnh tree được sử dụng để hiển thị cây thư mục.
Tham khảo: http://man.linuxde.net/tree
Ví dụ:
3.7. touch
Lệnh touch có hai chức năng: một là cập nhật nhãn thời gian của tệp tin đã tồn tại thành thời gian hiện tại của hệ thống (mặc định), dữ liệu của tệp tin sẽ được giữ nguyên; hai là tạo tệp tin trống.
Tham khảo: http://man.linuxde.net/touch
Ví dụ:
3.8. ln
Lệnh ln được sử dụng để tạo liên kết cho tệp tin, có hai loại liên kết là liên kết cứng và liên kết mềm, loại liên kết mặc định là liên kết cứng. Nếu muốn tạo liên kết mềm, bạn phải sử dụng tùy chọn “-s”.
🔔 Lưu ý: Tệp tin liên kết mềm không phải là một tệp tin độc lập, nó chia sẻ nhiều thuộc tính với tệp tin nguồn, do đó việc đặt quyền truy cập cho tệp tin liên kết mềm không có ý nghĩa.
Tham khảo: http://man.linuxde.net/ln
Ví dụ:
3.9. rename
Lệnh rename được sử dụng để đổi tên nhiều tệp tin cùng một lúc bằng cách thay thế chuỗi.
Tham khảo: http://man.linuxde.net/rename
Ví dụ:
3.10. stat
Lệnh stat được sử dụng để hiển thị thông tin trạng thái của tệp tin. Lệnh stat cung cấp thông tin chi tiết hơn so với lệnh ls.
Tham khảo: http://man.linuxde.net/stat
Ví dụ:
3.11. file
Lệnh file được sử dụng để xác định loại của tệp tin được cung cấp. Lệnh file kiểm tra tệp tin dựa trên ba quá trình: kiểm tra hệ thống tệp tin, kiểm tra số phép màu và kiểm tra ngôn ngữ.
Tham khảo: http://man.linuxde.net/file
Ví dụ:
3.12. chmod
Lệnh chmod được sử dụng để thay đổi quyền truy cập của tập tin hoặc thư mục trong hệ thống. Trong họ hàng hệ thống UNIX, quyền truy cập vào tập tin hoặc thư mục được phân biệt bằng ba quyền chung là đọc, ghi và thực thi, cùng với ba quyền đặc biệt khác có thể sử dụng. Người dùng có thể sử dụng lệnh chmod để thay đổi quyền truy cập của tập tin và thư mục, có thể sử dụng cả cách thiết lập bằng chữ hoặc số. Quyền truy cập của liên kết biểu tượng không thể thay đổi, nếu người dùng thay đổi quyền truy cập của liên kết biểu tượng, sự thay đổi sẽ áp dụng cho tập tin gốc được liên kết.
Tham khảo: http://man.linuxde.net/chmod
Mở rộng kiến thức:
Trong Linux, người dùng được chia thành: chủ sở hữu, nhóm (Group) và người khác (other). Trong hệ thống Linux, mặc định, tất cả các tài khoản và người dùng thông thường, cũng như thông tin liên quan đến root, được ghi lại trong tệp /etc/passwd
. Mật khẩu của mỗi người được ghi lại trong tệp /etc/shadow
. Ngoài ra, tất cả các tên nhóm được ghi lại trong /etc/group
!
Biểu đồ phân tích quyền truy cập của tệp tin Linux
Ví dụ: rwx rw- r—
r=Quyền đọc //Giá trị= 4
w=Quyền ghi //Giá trị= 2
x=Quyền thực thi //Giá trị= 1
Ví dụ:
3.13. chown
Lệnh chown thay đổi chủ sở hữu và nhóm sở hữu của một tệp tin hoặc thư mục cụ thể. Lệnh này có thể cấp quyền cho một người dùng cụ thể, khiến người dùng đó trở thành chủ sở hữu của tệp tin được chỉ định hoặc thay đổi nhóm sở hữu của tệp tin. Người dùng có thể là tên người dùng hoặc người dùng D, và nhóm người dùng có thể là tên nhóm hoặc id nhóm. Tên tệp tin có thể là danh sách các tệp tin phân tách bằng khoảng trắng và có thể chứa ký tự đại diện.
Chỉ có chủ sở hữu tệp tin và người dùng siêu người dùng mới có thể sử dụng lệnh này.
Tham khảo: http://man.linuxde.net/chown
Ví dụ:
3.14. locate
Lệnh locate và lệnh slocate được sử dụng để tìm kiếm tệp tin hoặc thư mục.
Lệnh locate thực chất là một cách viết khác của lệnh find -name, nhưng nó nhanh hơn nhiều vì nó không tìm kiếm trong các thư mục cụ thể, mà thay vào đó tìm kiếm trong cơ sở dữ liệu /var/lib/locatedb, cơ sở dữ liệu này chứa thông tin về tất cả các tệp tin trong hệ thống. Linux tự động tạo cơ sở dữ liệu này và cập nhật mỗi ngày, vì vậy khi sử dụng lệnh locate, không thể tìm thấy các tệp tin đã thay đổi gần đây nhất. Để tránh tình trạng này, bạn có thể sử dụng lệnh updatedb để cập nhật cơ sở dữ liệu thủ công trước khi sử dụng lệnh locate.
Tham khảo: http://man.linuxde.net/locate_slocate
Ví dụ:
3.15. find
Lệnh find được sử dụng để tìm kiếm tệp tin trong thư mục được chỉ định. Bất kỳ chuỗi nào đứng trước các tham số sẽ được coi là tên thư mục cần tìm kiếm. Nếu không có tham số nào được đặt, lệnh find sẽ tìm kiếm tất cả các thư mục con và tệp tin trong thư mục hiện tại và hiển thị chúng.
Tham khảo: http://man.linuxde.net/find
3.16. cp
Lệnh cp được sử dụng để sao chép một hoặc nhiều tệp tin hoặc thư mục đến một tệp tin hoặc thư mục đích. Nó có thể sao chép một tệp tin đơn thành một tệp tin cụ thể với tên đã chỉ định hoặc sao chép vào một thư mục đã tồn tại. Lệnh cp cũng hỗ trợ sao chép nhiều tệp tin cùng một lúc, trong trường hợp này, tham số đích phải là một thư mục đã tồn tại, nếu không sẽ xảy ra lỗi.
Tham khảo: http://man.linuxde.net/cp
Ví dụ:
3.16.1. Tham số
- Tệp tin nguồn: Xác định danh sách các tệp tin nguồn. Mặc định, lệnh cp không thể sao chép thư mục, nếu muốn sao chép thư mục, phải sử dụng tùy chọn
-R
. - Tệp tin đích: Xác định tệp tin đích. Khi có nhiều tệp tin nguồn, tệp tin đích phải là một thư mục đã tồn tại.
Ví dụ:
3.17. scp
Lệnh scp được sử dụng để sao chép tệp tin từ xa trên Linux. Nó tương tự như lệnh cp, nhưng lệnh cp chỉ có thể sao chép trên cùng một máy và không thể sao chép qua các máy chủ khác, trong khi scp thực hiện việc truyền tải qua mạng được mã hóa. Điều này có thể ảnh hưởng đến tốc độ một chút. Khi ổ đĩa của máy chủ trở thành chỉ đọc read only system, bạn có thể sử dụng scp để di chuyển tệp tin ra khỏi máy chủ. Ngoài ra, scp không tốn nhiều tài nguyên và không tăng gánh nặng hệ thống, điều này khác với rsync. Mặc dù rsync có tốc độ nhanh hơn scp một chút, nhưng khi có nhiều tệp tin nhỏ, rsync sẽ gây ra tải I/O ổ cứng cao, trong khi scp gần như không ảnh hưởng đến việc sử dụng hệ thống bình thường.
示例:
3.17.1. Sao chép không cần mật khẩu
(1) Tạo cặp khóa công khai và khóa riêng ssh
ssh-keygen -t rsa
(2) Sao chép nội dung của tệp ~/.ssh/id_rsa.pub
trên máy chủ A vào tệp ~/.ssh/authorized_keys
trên máy chủ B.
3.18. mv
Lệnh mv được sử dụng để đổi tên tệp tin hoặc thư mục, hoặc di chuyển tệp tin từ một thư mục đến thư mục khác. Source đại diện cho tệp tin hoặc thư mục nguồn, target đại diện cho tệp tin hoặc thư mục đích. Nếu di chuyển một tệp tin vào một tệp tin đích đã tồn tại, nội dung của tệp tin đích sẽ bị ghi đè.
Tham khảo: http://man.linuxde.net/mv
Ví dụ:
3.19. rm
Lệnh rm được sử dụng để xóa một hoặc nhiều tệp tin hoặc thư mục trong một thư mục. Đối với tệp tin liên kết, chỉ xóa tệp tin liên kết và tệp tin gốc vẫn được giữ nguyên.
Tham khảo: http://man.linuxde.net/rm