Hello anh em, các bài viết gần đây của mình thường về Docker, mình vốn định làm bài tiếp theo cx về thực hành 1 project với docker nhưng nghĩ lại có vẻ hơi thiếu xót nếu chúng ta đi quá vội mà bỏ qua 1 vài thứ căn bản. Ubuntu hay nền tảng Linux là cực kỳ quan trong khi chúng ta phải làm việc với server hoặc các hệ thống tương tự (docker cũng thường build trên image có nền tảng linux).
Sơ lược thì hệ thống thư mục của ubuntu sẽ như sau:
Chức năng của các thư mục trong hệ thống của ubuntu:
/sbin – Các tập tin thực thi của hệ thống. Các lệnh trong file này là các lệnh dùng cho quản trị viên và thường dùng trong config hệ thống. Các lệnh trong file này thường chỉ được chạy bởi root hoặc superuser.
/etc – Các tập tin cấu hình. Cấu hình trong file này thường sẽ ảnh hưởng đến tất cả người dùng trên hệ thống. Thường là config của các chương trình được cài đặt toàn cục.
/dev – Các tập tin thiết bị : Chứa tệp tin thiết bị được cho phép kết nối như usb hay các ổ đĩa cứng khác. Ngoài ra còn có 1 tệp tin đặc biệt là dev/null. Tệp tin này có ý nghĩa là không có gì. Khi ta nói chuyển 1 thư mục vào dev/null ta có thể hiểu là thư mục hay tệp tin sẽ bị xóa đi. Dev/null loại bỏ toàn bộ các dữ liệu ghi vào nó mà vẫn báo cáo là đã ghi thành công. (hay được thấy trong crontab)
/proc – thông tin về tiến trình: Các thông tin về hệ thống được biểu diễn dưới dạng file. Nó cung cấp cách thức cho nhân Linux để gửi và nhận thông tin từ các tiến trình đang chạy trên môi trường Linux.
/var – các tệp tin thay đổi: Chứa các tập tin mà dung lượng lớn dần theo thời gian sử dụng. Bao gồm – Các tập tin ghi chú về hệ thống (/var/log); các gói và các tập tin cơ sở dữ liệu (/var/lib); thư điện tử (/var/mail); hàng đợi in queues (/var/spool); các tập tin khóa (/var/lock); các tập tin tạm được dùng khi khởi động lại (/var/tmp).
/tmp – Chứa các tập tin tạm: Các tập tin tạm của hệ thống và người dùng để tăng tốc cho máy tính. Thường được xóa khi reboot.
/home – Thư mục của người dùng.
/boot – Các tập tin của chương trình khởi động máy.
/lib – Chứa các thư việ của hệ thống. Thông thường khi cài đặt các gói tin sẽ bao gồm các thư viện cài đặt thêm để hỗ trợ. Khi đó hệ thống sẽ sắp xếp các thư viện này vào cùng 1 chỗ để dễ dàng hơn khi gọi ra.
/mnt – Chứa các thư mục của các ổ cứng hay trong cùng 1 mạng.
/media – Các thiết bị tháo lắp.
2.1. Quản lý người dùng, group
2.1.1. User
Các quy định cho password trong file /etc/login.defs.
2.1.2. Group:
2.2. Phân quyền thư mục:
Có 3 nhóm yêu cầu quyền hạn truy cập thư mục là: Owner , Group owner và Other.
với option bao gồm:
Biễu diễn lần lượt của nó là Owner, group, other. Các số biểu diễn cho ta quyền như hình vẽ cung cấp. (Hình vẽ trên mô tả khá chi tiết cũng như cách tính số tương ứng với quyền.
Ví dụ: chmod u+x laravel/storage thức là thêm quyền excute cho thằng owner của thư mục.
Với TH 4 chữ số: Bạn có thể sẽ gặp câu lệnh chmod -R 7765 laravel/storage có nghĩa là:
Special, User/Owner, Group, và Others thằng đầu tiên nó là một dạng change mod đặc biệt:
3 kiểu set của nó:
Set UID, set GID, set Sticky Bit : x1.x2.x3
Nếu x1 =1 set UID : tức là +4 thì tất cả các user sẽ đều chạy quyền trên file đó như chủ sở hữu nó.
Nếu x2 =1 set GID: tức là +2 thì tất cả các group sẽ chạy quyền trên file đó như chủ sở hữu nó.
Nếu x3 =1 set Sticky Bit: tức là chỉ chủ sở hữu hoặc root ms có thể xóa thư mục hoặc các file bên trong nó.
Ngoài ra 1 kiểu thay quyền nữa là thay quyền chủ sở hữu của thư mục (Owner). Thông thường người tạo ra thư mục sẽ có quyền owner thư mục đó, tuy nhiên vì mình có quyền super admin nên mình sẽ lấy quyền chủ thư mục về mình. Ta sẽ sử dụng cú pháp chown:
chown -R [tên user]:[tên group] [file/folder]
Tất nhiên khi thực hiện những câu lệnh trên bạn cần có hiểu biết về thư mục mà bạn thực hiện thay đổi quyền hay sở hữu. Nên nhớ rằng các file hệ thống rất dễ không hoạt động nếu thay đổi quyền (vì cái này mà 1 đống ông phải cài lại ubuntu này, láo với hệ thống là không được :v)
Bonus: Edited 07/11/2019 Đi vòng vòng 1 hồi mình có thấy là bài viết này mình đề cập đến đổi user, group mà ko chỉ cho các bạn cách liệt kê, tình cờ thấy có bài viết cũng có chút đúng mình sẽ chỉ cho mọi người cách: Command liệt kê ra danh sách các group có sẵn:
Command show tất cả các account có trong group: (cái này bạn phải cài package members mới dùng được)
members group_nameKết luận
All Rights Reserved