Các lệnh trên Shell (P7)

Mỗi file/folder trên Linux đều được gán các quyền truy cập khác nhau cho chủ sở hữu của chúng, cho các nhóm quan hệ với chủ sở hữu,…. Bài viết này mình sẽ phân tích kỹ Permission cho từng owner hay group owner trên Linux.

Trước hết hãy đến với  ví du dùng lệnh ls như sau:

leaf@leaf-X455LA:~$ ls -l /bin/bash
-rwxr-xr-x 1 root root 1021112 Th10  8  2014 /bin/bash
leaf@leaf-X455LA:~$

Chúng ta có thể thấy trong kết qủa mà ls trả về:

  • File /bin/bash thuộc sở hữu của user “root” (owner)
  • Superuser (owner) có quyền đọc (r), viết (w) và thực thi (x) đối với file
  • File này cũng thuộc sở hữu của nhóm “root” (group owner)
  • Thành viên của nhóm “root” (group owner) chỉ có thực thi (x) và đọc (r) file này
  • Những người dùng khác có thể đọc (r) và thực thi (x) file này

Bạn để ý dấu “-“ ở đầu kết qủa trả về của lệnh ls, dấu “-“ có nghĩa là một file, còn nếu ở vị trí này là ký tự “d” thì kết qủa là một thư mục. Các dấu “-“ sau là ký hiệu tượng trưng cho việc không được phép truy cập file/folder đó.

Một ví dụ khác, gỉa sử bạn có một perrmission  drwxr-xr-x :

OzXZ6

Trở lại vấn đề, các quyền “r” (read), “w” (write), “x” (execute) hoặc “-” (access denied) trong 3 nhóm user, group và others cũng có thể được biểu diễn bằng các số octal, khi Shell thực thi chúng trên nhân chúng được dịch ra thành mã nhị phân để thực thi. Đây là cách mà nhân hiểu các permissions:

rwx  rwx  rwx = 111  111  111

rw-  rw-  rw- = 110  110 110

rwx  —  — = 111  000  000

etc,..

và:

notation    binary     octal

rwx             = 111        = 7

rw-             = 110        = 6

—             = 000       = 0

r-x              = 101         = 5

-wx             = 011         = 3

etc,…

Lưu ý, “r”,”w”,”x” được tượng trưng là 1, còn “-“ tượng trưng là 0. Và các permission là một nhóm số có thứ tự, lần lượt là “r”, “w”, và “x” chứ không lộn xộn.

Đây là bảng một số permission hay sử dụng cho file và folder trên Linux:

File permissions: Các số này dùng trong các cài đặt thông thường. Một số bắt đầu với 7 thường dùng với các chương trình, một số khác thì hay gặp ở các file khác.

Giá trị

Ý nghĩa

777 (rwxrwxrwx) Không hạn chế các quyền truy cập. Bất cứ ai có thể thao tác bất cứ gì trên chúng. Tuy nhiên đây không phải là thiết lập tốt vì nó không bảo mật tốt.
755 (rwxr-xr-x) Chủ sở hữu file có thể đọc, ghi, thực thi file. Nhưng người dùng khác chỉ có thể đọc và thực thi file
700 (rwx——) Chủ sở hữu file có thể đọc, ghi, thực thi file. Nhưng người dùng khác thì không được phép truy cập file này.
666 (rw-rw-rw-) Tất cả người dùng chỉ có thể đọc và ghi file.
644 (rw-r–r– ) Chủ sở hữu file có thể đọc và ghi file, nhưng người dùng khác chỉ có thể đọc file.
600 (rw——-) Chỉ chủ sở hữu file mới có thể đọc và ghi file, những người dùng khác không có quyền truy cập file này. Thường dùng khi nào chủ sở hữu file muốn nó là private.

Directory permission:

Ở directory permission các đặc tính “r”,”w”“x” có khác một chút với file permission, cụ thể:

  • r: Cho phép các nội dung của thư mục được liệt kê ra nếu đặc tính “x” cũng được thiết lập.
  • w: Cho phép các file nằm trong thư mục được tạo mới, xóa, đổi tên nếu đặc tính “x” cũng được thiết lập.
  • x: Cho phép một thư mục có thể vào được (ví dụ: khi thực hiện cd dir thì chúng ta sẽ vào trong dir để thực hiện các thao tác).

Giá trị

Ý nghĩa

777 (rwxrwxrwx) Không hạn chế quyền truy cập, bất cứ ai cũng có thể liệt kê các file, tạo mới và xóa các file trong thư mục. Đây không phải là một cài đặt tốt.
755 (rwxr-xr-x) Chủ sở hữu của thư mục có toàn quyền truy cập. Những người dùng khác có thể liệt kê thư mục, nhưng không có quyền tạo mới và xóa file trong chúng. Cài đặt này thường dùng với trường hợp bạn muốn chia sẻ nó với người dùng khác.
700 (rwx——) Chủ sở hữu có toàn quyền truy cập, nhưng người dùng khác thì không được phép truy cập. Cài đặt này thường dùng cho trường hợp chủ sở hữu muốn nó là private.

Giờ chúng ta sẽ tìm hiểu về các lệnh cho phép thay đổi permission của file/folder.

chmod

Lệnh chmod được sử dụng để thay đổi quyền truy cập của file/folder. Cú pháp là:

chmod mod file/folder

trong đó, mod là các số thuộc hai bảng trên.

Ví du:

leaf@leaf-X455LA:~$ chmod 600 example_file.txt
leaf@leaf-X455LA:~$

hoặc:

leaf@leaf-X455LA:~$ chmod 755 example_file.txt
leaf@leaf-X455LA:~$

su và sudo

Trước hết, hệ thống Linux và Unix có một siêu người dùng gọi là root hay super user, nó cũng tương tự như Administrator trên Windows. Người dùng root có thể thực hiện bất cứ thao tác gì trên hệ thống mà không bị hạn chế. Để chuyển sang người dùng super user từ user bình thường, ta dùng lệnh su, sau đó nhập root password:

leaf@leaf-X455LA:~$ su
Password:
su: Authentication failure

Trường hợp bị sai root password như trên, bạn có thể tạo root password mới bằng lệnh:

leaf@leaf-X455LA:~$ sudo passwd
[sudo] password for leaf:
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

sau đó nhập lại lệnh su:

leaf@leaf-X455LA:~$ su
Password:
root@leaf-X455LA:/home/leaf#

Đôi khi một số tác vụ đòi hỏi phải chuyển sang quyền root để thực thi, nhưng mình khuyến cáo nên cẩn thận khi thực hiện điều này, bởi vì nếu sơ ý xóa 1 file nào đó trên hệ thống, hoặc cài phần mềm nào đó chứa mã độc,.. thì sẽ rất nguy hiểm. Để thoát khỏi quyền root, các bạn chỉ cần thực hiện lệnh exit.

Một số Linux distribution như Ubuntu để đảm baỏ an toàn, chúng cho phép bạn thực hiện các thao tác nào đó trên hệ thống với quyền super user nhưng không login vào root user với lệnh sudo. sudo là viết tắt của Superuser Do. Cú pháp: sudo some_command. Nó yêu cầu nhập user password trước khi thực hiện, ví dụ:

leaf@leaf-X455LA:~$ sudo command
[sudo] password for leaf:
sudo: command: command not found
leaf@leaf-X455LA:~$

Thay đổi File Ownership

Bạn có thể thay đổi quyền sở hữu file bằng lệnh chown, ví dụ mình muốn chuyển quyền sở hữu example_file.txt từ user leaf sang tree (gỉa sử trên hệ thống của mình có user tree rồi)

root@leaf-X455LA:/home/leaf# chown tree example_file.txt

hoặc:

leaf@leaf-X455LA:~$ sudo chown tree example_file.txt

Lưu ý là thực hiện lệnh chown phải ở quyền root. Nếu đang ở root user thì sau khi thực hiện chown phải exit, còn nếu dùng sudo thì không cần.

Thay đổi Group Ownership

Có thể thay đổi quyền sở hữu nhóm bằng cách dùng lệnh chgrp. Ví dụ:

leaf@leaf-X455LA:~$ chgrp new_group example_file.txt

Lưu ý: Ở ví dụ trên mình thay đổi quyền sở hữu của file example_file.txt từ nhóm trước cho nhóm new_group và phải là chủ sở hữu của file example_file.txt mới thực hiện được lệnh chgrp.

Advertisements

Author: phuoctv

My name is Phuoc. I'm interested in computer programming and sharing the knowledge. My email: phuoctv14@gmail.com

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s