Kiến thức cơ bản về quyền của Linux và cách sử dụng Umask trên VPS
Giới thiệu
Quyền của Linux cho phép chủ sở hữu file hoặc folder hạn chế quyền truy cập dựa trên mối quan hệ của người truy cập với mỗi file . Điều này cho phép các chương trình kiểm soát cung cấp các cấp độ truy cập khác nhau cho những người khác nhau.
Lệnh umask được sử dụng để xác định các quyền mặc định được gán cho các file do mỗi user tạo. Nó có thể được sửa đổi để cung cấp các hạn chế bảo mật nghiêm ngặt hoặc quyền được nới lỏng cho các tình huống chia sẻ file , tùy thuộc vào nhu cầu của hệ thống và user .
Hướng dẫn này sẽ giải thích những điều cơ bản về quyền của Linux và sẽ chứng minh sự hữu ích của việc cấu hình umask một cách chính xác. Nó cũng sẽ trình bày ngắn gọn lệnh chmod như một công cụ quyền liên quan.
Mục lục
Danh mục quyền
Các quyền của Linux có vẻ khó hiểu và khó hiểu đối với user mới. Tuy nhiên, một khi bạn đã quen thuộc với cách biểu diễn các quyền, thì việc đọc và thay đổi các quyền của một file hoặc folder một cách dễ dàng là rất nhỏ.
Quyền của Chủ sở hữu
Khái niệm đầu tiên cần thiết để hiểu quyền là Linux về cơ bản là một hệ điều hành nhiều user .
Mỗi file được sở hữu bởi chính xác một user . Ngay cả khi bạn là người duy nhất sử dụng VPS của bạn , vẫn có một số " user " khác nhau được tạo để chạy các chương trình cụ thể. Bạn có thể thấy những user khác nhau trên hệ thống của bạn bằng lệnh :
cat /etc/passwd
root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh sys:x:3:3:sys:/dev:/bin/sh sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/bin/sh man:x:6:12:man:/var/cache/man:/bin/sh lp:x:7:7:lp:/var/spool/lpd:/bin/sh mail:x:8:8:mail:/var/mail:/bin/sh news:x:9:9:news:/var/spool/news:/bin/sh uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh . . .
Tệp / etc / passwd chứa một dòng cho mọi user đã được tạo trên hệ điều hành của bạn. Trường đầu tiên trên mỗi dòng là tên của một user duy nhất. Như bạn thấy , nhiều user này được liên kết với các dịch vụ và ứng dụng.
Việc cấu hình các dịch vụ để hoạt động với quyền là một user riêng biệt cho phép ta kiểm soát quyền truy cập của dịch vụ bằng cách tận dụng việc chỉ định quyền của user . Nhiều chương trình được cấu hình để tạo tên user và thực hiện tất cả các thao tác sử dụng user đó.
Quyền group
Danh mục thứ hai mà ta có thể chỉ định quyền là "chủ sở hữu group " của file .
Như với danh mục chủ sở hữu, một file có thể được sở hữu bởi chính xác một group . Mỗi user có thể là thành viên của nhiều group và mỗi group có thể chứa nhiều user .
Để xem các group mà user của bạn hiện thuộc về, hãy nhập:
groups
Điều này sẽ hiển thị cho bạn tất cả các group mà user của bạn hiện là thành viên. Theo mặc định, bạn chỉ có thể là thành viên của một hoặc hai group , một trong số đó có thể giống với tên user của bạn.
Để hiển thị tất cả các group hiện có trên hệ thống của bạn, hãy nhập:
cat /etc/group
root:x:0: daemon:x:1: bin:x:2: sys:x:3: adm:x:4: tty:x:5: disk:x:6: lp:x:7: . . .
Trường đầu tiên của mỗi dòng là tên của một group .
Linux cho phép bạn chỉ định quyền dựa trên chủ sở hữu group của file . Điều này cho phép bạn cung cấp quyền tùy chỉnh cho một group người vì chỉ một user có thể sở hữu file .
Các quyền khác
Danh mục cuối cùng mà bạn có thể chỉ định quyền là danh mục "khác". Trong ngữ cảnh này, other được định nghĩa là mọi user không phải là chủ sở hữu file và không phải là thành viên của group sở hữu file .
Danh mục này cho phép bạn đặt mức quyền cơ bản sẽ áp dụng cho bất kỳ ai bên ngoài hai group kiểm soát còn lại.
Các loại quyền
Mỗi danh mục quyền (chủ sở hữu, chủ sở hữu group và người khác) có thể được chỉ định các quyền cho phép hoặc hạn chế khả năng đọc, ghi hoặc thực thi file của họ.
Đối với một file thông thường, cần có quyền đọc để đọc nội dung của file , cần có quyền ghi để sửa đổi nó và cần có quyền thực thi để chạy file dưới dạng tập lệnh hoặc ứng dụng.
Đối với folder , cho phép đọc là cần thiết để ls (list) các nội dung của một folder , quyền ghi được yêu cầu phải sửa đổi nội dung của một folder , và thực hiện quyền cho phép user cd (thư mục thay đổi) vào folder .
Linux đại diện cho các loại quyền này bằng cách sử dụng hai ký hiệu tượng trưng riêng biệt: bảng chữ cái và bát phân.
Ký hiệu chữ cái
Ký hiệu chữ cái dễ hiểu và được một số chương trình phổ biến sử dụng để biểu diễn các quyền.
Mỗi quyền được thể hiện bằng một chữ cái:
- r = quyền đọc
- w = quyền ghi
- x = thực thi quyền
Điều quan trọng cần nhớ là các quyền theo bảng chữ cái luôn được chỉ định theo thứ tự này. Nếu một quyền nhất định được cấp, nó được thể hiện bằng chữ cái thích hợp. Nếu quyền truy cập bị hạn chế, nó được biểu thị bằng dấu gạch ngang (-).
Quyền được cấp cho chủ sở hữu file trước tiên, tiếp theo là chủ sở hữu group và cuối cùng là cho những user khác. Điều này cho ta ba group ba giá trị.
Lệnh ls sử dụng ký hiệu chữ cái khi được gọi với tùy chọn định dạng dài:
cd /etc ls -l
drwxr-xr-x 3 root root 4096 Apr 26 2012 acpi -rw-r--r-- 1 root root 2981 Apr 26 2012 adduser.conf drwxr-xr-x 2 root root 4096 Jul 5 20:53 alternatives -rw-r--r-- 1 root root 395 Jun 20 2010 anacrontab drwxr-xr-x 3 root root 4096 Apr 26 2012 apm drwxr-xr-x 3 root root 4096 Apr 26 2012 apparmor drwxr-xr-x 5 root root 4096 Jul 5 20:52 apparmor.d drwxr-xr-x 6 root root 4096 Apr 26 2012 apt …
Trường đầu tiên trong kết quả của lệnh này đại diện cho các quyền của file .
Mười ký tự đại diện cho dữ liệu này. Ký tự đầu tiên thực sự không phải là giá trị quyền và thay vào đó biểu thị loại file (- đối với file thông thường, d đối với folder , v.v.).
Chín ký tự tiếp theo đại diện cho các quyền mà ta đã thảo luận ở trên. Ba group đại diện cho chủ sở hữu, chủ sở hữu group và các quyền khác, mỗi group có các giá trị cho biết quyền đọc, ghi và thực thi.
Trong ví dụ trên, chủ sở hữu của folder "acpi" có quyền đọc, ghi và thực thi. Chủ sở hữu group và những user khác có quyền đọc và thực thi.
Tệp "anacrontab" cho phép chủ sở hữu file đọc và sửa đổi, nhưng các thành viên group và user khác chỉ có quyền đọc.
Ký hiệu bát phân
Cách ngắn gọn hơn, nhưng hơi kém trực quan hơn để biểu diễn quyền là với ký hiệu bát phân.
Sử dụng phương pháp này, mỗi danh mục quyền (chủ sở hữu, chủ sở hữu group và người khác) được thể hiện bằng một số từ 0 đến 7.
Ta đi đến con số thích hợp bằng cách gán cho mỗi loại quyền một giá trị số:
- 4 = quyền đọc
- 2 = quyền ghi
- 1 = quyền thực thi
Ta cộng các số liên quan đến loại quyền mà ta muốn cấp cho mỗi danh mục. Đây sẽ là một số từ 0 đến 7 (0 đại diện cho không có quyền và 7 đại diện cho quyền đọc, ghi và thực thi đầy đủ) cho mỗi danh mục.
Ví dụ: nếu chủ sở hữu file có quyền đọc và ghi, quyền này sẽ được biểu thị dưới dạng số 6 trong cột của chủ sở hữu file . Nếu chủ sở hữu group chỉ yêu cầu quyền đọc, thì số 4 được dùng để đại diện cho quyền của họ.
Tương tự như ký hiệu chữ cái, ký hiệu bát phân có thể bao gồm một ký tự đứng đầu tùy chọn chỉ định loại file . Tiếp theo là quyền của chủ sở hữu, quyền của chủ sở hữu group và các quyền khác tương ứng.
Một chương trình thiết yếu có lợi từ việc sử dụng ký hiệu bát phân là lệnh chmod .
Sử dụng lệnh Chmod
Cách phổ biến nhất để thay đổi quyền của file là sử dụng ký hiệu bát phân với lệnh chmod . Ta sẽ thực hành bằng cách tạo một file trống trong folder chính của ta :
cd touch testfile
Đầu tiên, hãy xem các quyền đã được cấp cho file này khi tạo:
ls -l testfile
-rw-rw-r-- 1 demouser demouser 0 Jul 10 17:23 testfile
Nếu ta diễn giải các quyền, ta có thể thấy rằng chủ sở hữu file và chủ sở hữu group file đều có quyền đọc và ghi và những user khác có khả năng đọc.
Nếu ta chuyển đổi nó thành ký hiệu bát phân, chủ sở hữu và chủ sở hữu group sẽ có giá trị quyền là 6 (4 cho đọc, cộng 2 cho ghi) và danh mục khác sẽ có 4 (đọc). Toàn quyền sẽ được đại diện bởi bộ ba 664.
Ta sẽ giả vờ rằng file này chứa tập lệnh bash mà ta muốn thực thi, với quyền là chủ sở hữu. Ta không muốn bất kỳ ai khác sửa đổi file , kể cả chủ sở hữu group và ta không muốn bất kỳ ai không có trong group có thể đọc file .
Ta có thể trình bày cài đặt quyền mong muốn của bạn theo thứ tự bảng chữ cái như sau: -rwxr -----. Ta sẽ chuyển đổi nó thành ký hiệu bát phân và thay đổi quyền bằng chmod :
chmod 740 testfile ls -l testfile
-rwxr----- 1 demouser demouser 0 Jul 10 17:23 testfile
Như bạn thấy , các quyền đã được chỉ định chính xác.
Nếu ta muốn thay đổi lại các quyền, ta có thể dễ dàng thực hiện điều đó bằng cách cung cấp cho chmod lệnh sau:
chmod 664 testfile ls -l testfile
-rw-rw-r-- 1 demouser demouser 0 Jul 10 17:23 testfile
Đặt quyền mặc định với Umask
Lệnh umask xác định quyền mặc định cho các file mới được tạo dựa trên bộ quyền "cơ sở" được xác định cho file và folder .
Các file có bộ quyền cơ bản là 666 hoặc toàn quyền truy cập đọc và ghi cho tất cả user . Các quyền thực thi không được chỉ định theo mặc định vì hầu hết các file không được thực thi (việc gán quyền thực thi cũng mở ra một số lo ngại về bảo mật).
Các folder có bộ quyền cơ bản là 777, hoặc các quyền đọc, ghi và thực thi cho tất cả user .
Umask hoạt động bằng cách áp dụng một "mặt nạ" trừ cho các quyền cơ sở được hiển thị ở trên. Ta sẽ sử dụng một ví dụ để chứng minh cách hoạt động của điều này.
Nếu ta muốn chủ sở hữu và các thành viên của group chủ sở hữu có thể ghi vào các folder mới được tạo, chứ không phải những user khác, ta muốn chỉ định quyền cho 775.
Ta cần số ba chữ số thể hiện sự khác biệt giữa quyền cơ sở và quyền mong muốn. Số đó là 002.
777 - 775 ------ 002
Số kết quả này là giá trị umask mà ta muốn áp dụng. Thật trùng hợp, đây là giá trị umask mặc định cho nhiều hệ thống, như ta đã thấy khi tạo file bằng lệnh touch trước đó. Hãy thử lại lần nữa:
touch test2 ls -l test2
-rw-rw-r-- 1 demouser demouser 0 Jul 10 18:30 test2
Ta có thể xác định một umask khác bằng cách sử dụng lệnh umask .
Nếu ta muốn bảo mật hệ thống của bạn hơn, ta có thể nói rằng theo mặc định, ta muốn user không phải là chủ sở hữu file không có quyền nào cả. Điều này có thể được thực hiện với 077 umask:
umask 077 touch restricted ls -l restricted
-rw------- 1 demouser demouser 0 Jul 10 18:33 restricted
Nếu ta có quy trình tạo nội dung chia sẻ, ta có thể cần cấp toàn quyền cho mọi file và folder mà nó tạo:
umask 000 touch openfile ls -l openfile
-rw-rw-rw- 1 demouser demouser 0 Jul 10 18:36 openfile
Theo mặc định, cài đặt bạn gán cho umask sẽ chỉ áp dụng cho phiên shell hiện tại. Khi bạn đăng nhập vào lần tiếp theo, mọi file và folder mới sẽ được cung cấp cài đặt root do bản phân phối của bạn chọn.
Nếu bạn muốn giữ nguyên cài đặt umask trong các phiên, bạn có thể xác định cài đặt umask trong file .bashrc của bạn :
cd nano .bashrc
Tìm kiếm để xem liệu đã có bộ giá trị umask chưa. Sửa đổi giá trị hiện có nếu có. Nếu không, hãy thêm một dòng ở cuối file với cài đặt umask bạn muốn:
umask 022
Ở đây, ta đã chọn cấp cho chủ sở hữu toàn quyền và tước bỏ quyền ghi cho cả chủ sở hữu group và các danh mục khác. Điều chỉnh cài đặt này theo ý thích của bạn để cung cấp tùy chọn của bạn vào lần đăng nhập tiếp theo.
Lời cảnh báo
Một điểm quan trọng cần nhớ khi thay đổi quyền là các khu vực nhất định của hệ thống file và các quy trình nhất định yêu cầu các quyền cụ thể để chạy chính xác. Quyền không đủ có thể dẫn đến lỗi và các ứng dụng không hoạt động.
Mặt khác, các cài đặt quá dễ dãi có thể là một rủi ro bảo mật.
Vì những lý do này, bạn không nên điều chỉnh các quyền bên ngoài folder chính của bạn trừ khi bạn nhận thức được những hậu quả có thể phát sinh do cài đặt được cấu hình không đúng.
Một luật tốt khác cần tuân theo , đặc biệt là khi cấu hình phần mềm theo cách thủ công, là luôn chỉ định policy quyền hạn chế nhất có thể mà không ảnh hưởng đến chức năng.
Điều này nghĩa là nếu chỉ một user (chẳng hạn như một dịch vụ) cần truy cập vào một group file , thì không cần cho phép phần còn lại của thế giới có quyền ghi hoặc thậm chí đọc nội dung. Điều này đặc biệt đúng trong các ngữ cảnh mà password được lưu trữ dưới dạng văn bản thuần túy.
Bạn có thể tinh chỉnh các quyền đầy đủ hơn bằng cách sử dụng chính xác quyền của chủ sở hữu group và thêm user cần thiết vào group thích hợp. Nếu tất cả những user cần quyền truy cập vào một file đều là thành viên của chủ sở hữu group , thì danh mục quyền khác có thể bị khóa để bảo mật hơn.
Các tin liên quan
Cách bảo mật server cloud chống lại SQL Injection2013-07-05
Cài đặt và sử dụng Vim Text Editor trên Cloud Server
2013-07-03
Cách cài đặt Zend Server 6 trên VPS CentOS 6.4
2013-07-03
Cài đặt và sử dụng Vim Text Editor trên Cloud Server
2013-07-03
Cách sử dụng Z Shell (zsh) trên server cloud
2013-07-01
Cách thêm tệp swap trên server cloud Arch Linux
2013-06-28
Cách cài đặt server DNS BIND trên CentOS 6
2013-06-12
Cách cài đặt eJabberd XMPP Server trên Ubuntu
2013-06-04
Cách cấu hình tmux trên server cloud
2013-05-20
Cách cài đặt cPanel trên server ảo chạy Centos 6
2012-11-02