banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận hệ điều hành *nix Tìm hiểu về umask  XML
  [Question]   Tìm hiểu về umask 17/02/2008 08:02:57 (+0700) | #1 | 115054
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]
Nguồn:
http://www.cyberciti.biz/tips/understanding-linux-unix-umask-value-usage.html
http://www.sun.com/bigadmin/content/submitted/umask_permissions.html

umask là gì?
umask được sử dụng để kiểm soát quyền mặc định của các files mới khi nó được tạo ra. umask gồm 4 chữ số trong hệ cơ số 8 (four-digit octal)

Gán umask mặc định như thế nào?
Bạn có thể gán umask mặc định trong /etc/bashrc hoặc /etc/profile cho tất cả các users. Phần lớn các distro đều gán là 0022 hoặc 0002.
Để gán umask cho một user xác định nào đó, bạn có thể chỉnh sửa ~/.bashrc của user đó và thêm vào dòng sau:
umask 022 

Lưu lại, logout và login lại để thay đổi trên có hiệu lực.

0022 và 0002 nghĩa là gì?
umask mặc định 0002 được sử dụng cho normal user. Với mặt nạ (mask) này, quyền mặc định của thư mục sẽ là 775 và quyền mặc định của file sẽ là 664.

umask mặc định cho root là 0022, nghĩa là quyền mặc định của thư mục sẽ là 755 và quyền mặc định của file sẽ là 644.

Nôm na bạn có thể hiểu rằng: Trước khi file hoặc thư mục được tạo ra, quyền truy cập đối với chúng được xác định dựa vào hai giá trị: quyền truy cập cơ sở (base permissions) và mặt nạ (mask). Đối với thư mục, quyền truy cập cơ sở là 0777(rwxrwxrwx), còn đối với files là 0666 (rw-rw-rw).

Thiết lập giá trị mask như thế nào?
Giá trị "mask" được thiết lập nhờ lệnh umask. Tất cả các file và thư mục được tạo ra sau đó sẽ chịu ảnh hưởng của giá trị mask mới.

Để tính toán quyền truy cập thư mục với umask 022 (root user):
Quyền truy cập mặc định: 777
Giá trị umask: 022
Quyền truy cập cho phép: 755

Để tính toán quyền truy cập file với umask 022 (root user):
Quyền truy cập mặc định: 666
Giá trị umask: 022
Quyền truy cập cho phép: 644

Lấy một ví dụ đơn giản: Bạn cần gán umask để các files được tạo ra sau đó sẽ có permissions là 600.
Ta có:
Quyền truy cập mặc định: 666
Giá trị umask: 066
Quyền truy cập cho phép: 600

Code:
$ umask 066
$ touch test.txt
$ ls -l test.txt 
-rw------- 1 quanta quanta 0 2008-02-16 17:38 test.txt




Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   Re: Tìm hiểu về umask 06/07/2008 11:54:28 (+0700) | #2 | 140141
281
Elite Member

[Minus]    0    [Plus]
Joined: 27/05/2007 00:22:15
Messages: 228
Offline
[Profile] [PM]
Đố vui:

Quyền truy cập mặc định: 666
Giá trị umask: 123
Hỏi quyền truy cập cho phép: ???
[Up] [Print Copy]
  [Question]   Re: Tìm hiểu về umask 06/07/2008 12:37:30 (+0700) | #3 | 140145
[Avatar]
nil
Elite Member

[Minus]    0    [Plus]
Joined: 12/12/2006 18:37:46
Messages: 271
Location: Thùng rác
Offline
[Profile] [PM] [WWW]

281 wrote:
Đố vui:

Quyền truy cập mặc định: 666
Giá trị umask: 123
Hỏi quyền truy cập cho phép: ???
 

Bằng số: 543
Bằng chữ: rx r wx
smilie
[Up] [Print Copy]
  [Question]   Re: Tìm hiểu về umask 06/07/2008 12:43:39 (+0700) | #4 | 140147
281
Elite Member

[Minus]    0    [Plus]
Joined: 27/05/2007 00:22:15
Messages: 228
Offline
[Profile] [PM]

nil wrote:

281 wrote:
Đố vui:

Quyền truy cập mặc định: 666
Giá trị umask: 123
Hỏi quyền truy cập cho phép: ???
 

Bằng số: 543
Bằng chữ: rx r wx
smilie  


chưa đúng, smilie
[Up] [Print Copy]
  [Question]   Re: Tìm hiểu về umask 06/07/2008 12:58:55 (+0700) | #5 | 140149
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]

281 wrote:

nil wrote:

281 wrote:
Đố vui:

Quyền truy cập mặc định: 666
Giá trị umask: 123
Hỏi quyền truy cập cho phép: ???
 

Bằng số: 543
Bằng chữ: rx r wx
smilie  


chưa đúng, smilie  

Hì, đã gọi là đố vui mà, bác nil thật thà quá.
Đáp án: 644
Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   Re: Tìm hiểu về umask 06/07/2008 15:20:17 (+0700) | #6 | 140154
[Avatar]
learn2hack
Elite Member

[Minus]    0    [Plus]
Joined: 29/06/2006 16:32:37
Messages: 825
Offline
[Profile] [PM] [WWW]
Đúng là 644 thật, vừa mới test thử luôn. Tớ nghĩ nguyên do là vì 2 điểm sau, nếu không đúng mong mọi người góp ý:
- owner lúc nào cũng có đầy đủ quyền hạn trên file do mình tạo ra mặc cho umask là thế nào. Trong trường hợp trên thì owner sẽ có quyền là rw (do quyền mặc định là 666).
- user trong cùng group bao giờ cũng có quyền hạn cao hơn other. Trong trường hợp trên các user trong group có quyền đọc (r - tương ứng với 4), vì thế user không cùng group sẽ chỉ nhận được quyền tối đa là đọc mà không thể ghi (r - ứng với 4), mặc dù kết quả tương tác với umask ra là 3 (tức là có quyền ghi).
Cho nên đáp án là 644 như quanta nói.
Blog: http://hontap.blogspot.com
Tải phần mềm miễn phí: http://www.taiphanmem.org
[Up] [Print Copy]
  [Question]   Re: Tìm hiểu về umask 06/07/2008 22:08:18 (+0700) | #7 | 140166
281
Elite Member

[Minus]    0    [Plus]
Joined: 27/05/2007 00:22:15
Messages: 228
Offline
[Profile] [PM]

learn2hack wrote:
Đúng là 644 thật, vừa mới test thử luôn. Tớ nghĩ nguyên do là vì 2 điểm sau, nếu không đúng mong mọi người góp ý:
- owner lúc nào cũng có đầy đủ quyền hạn trên file do mình tạo ra mặc cho umask là thế nào. Trong trường hợp trên thì owner sẽ có quyền là rw (do quyền mặc định là 666).
- user trong cùng group bao giờ cũng có quyền hạn cao hơn other. Trong trường hợp trên các user trong group có quyền đọc (r - tương ứng với 4), vì thế user không cùng group sẽ chỉ nhận được quyền tối đa là đọc mà không thể ghi (r - ứng với 4), mặc dù kết quả tương tác với umask ra là 3 (tức là có quyền ghi).
Cho nên đáp án là 644 như quanta nói. 


Tiếc là giải thích này của learn2hack chưa chính xác, smilie

Quyền truy cập cho phép là kết quả giữa phép toán sau:

Quyền truy cập cho phép = "quyền truy cập mặc định" AND (NOT (Giá trị umask))

Ví dụ:

Quyền truy cập mặc định: 666 = 110 110 110

Giá trị umask: 123 = 001 010 011
--> NOT (Giá trị umask) = NOT (001 010 011) = 110 101 100

Quyền truy cập cho phép = 110 110 110 AND 110 101 100 = 110 100 100 = 644
[Up] [Print Copy]
  [Question]   Re: Tìm hiểu về umask 07/07/2008 00:45:35 (+0700) | #8 | 140188
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]
Đối với files:

281 wrote:

Quyền truy cập mặc định: 666 = 110 110 110
 

Để ý thêm một chút là "execute bit" của "base permissions" bằng 0 (off), mà trong phép toán AND (logical), kết quả chỉ là 1 khi cả 2 bit đều bằng 1, do đó bạn không thể tạo ra một file với quyền thi hành (execute bit) bằng 1 (on) sẵn được (mà phải chmod sau khi file được tạo ra).
Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   Re: Tìm hiểu về umask 07/07/2008 23:33:39 (+0700) | #9 | 140303
mrtantien
Member

[Minus]    0    [Plus]
Joined: 30/04/2006 05:20:22
Messages: 29
Offline
[Profile] [PM]
Cám ơn các bác. Vậy mà em đọc tài liệu chỉ đọc được đoạn "777-022" hoặc "666-002". May mà đọc bài này mới biết thuật toán chính xác của bác 281 đưa ra.
[Up] [Print Copy]
  [Question]   Re: Tìm hiểu về umask 07/07/2008 23:37:17 (+0700) | #10 | 140304
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]

mrtantien wrote:
Cám ơn các bác. Vậy mà em đọc tài liệu chỉ đọc được đoạn "777-022" hoặc "666-002". May mà đọc bài này mới biết thuật toán chính xác của bác quanta đưa ra. 

Đính chính: bạn 281 chỉ ra, không phải là tớ.
Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   Tìm hiểu về umask 16/04/2010 20:06:36 (+0700) | #11 | 209161
shell-command
Member

[Minus]    0    [Plus]
Joined: 14/03/2010 07:43:28
Messages: 41
Location: Địa Ngục
Offline
[Profile] [PM] [WWW]
Hỏi ngược lại chút:
Nếu file mới tạo ra có quyền truy xuất là 236 thì umask là bao nhiêu?
Chỉ mình tôi!!!
[Up] [Print Copy]
  [Question]   Tìm hiểu về umask 02/08/2010 10:29:45 (+0700) | #12 | 217257
[Avatar]
GuanPing
Member

[Minus]    0    [Plus]
Joined: 06/01/2009 16:03:49
Messages: 22
Offline
[Profile] [PM]

shell-command wrote:
Hỏi ngược lại chút:
Nếu file mới tạo ra có quyền truy xuất là 236 thì umask là bao nhiêu?  

236 = 010 011 110
Để ý bit execute ở trên. Bởi vì "bạn không thể tạo ra một file với quyền thi hành (execute bit) bằng 1 (on) sẵn được (mà phải chmod sau khi file được tạo ra)" nên sẽ không có umask nào thoả mãn yêu cầu của bạn.
[Up] [Print Copy]
  [Question]   Tìm hiểu về umask 23/04/2011 22:43:39 (+0700) | #13 | 236071
shankstocdo
Member

[Minus]    0    [Plus]
Joined: 08/08/2010 05:05:38
Messages: 29
Offline
[Profile] [PM]
sao umask =022 và umask=123 lại cho kết quả truy xuất giống nhau đều bằng 644 nhi?
ai có thể giải thick không?
[Up] [Print Copy]
  [Question]   Tìm hiểu về umask 25/04/2011 07:44:57 (+0700) | #14 | 236117
[Avatar]
WinDak
Researcher

Joined: 27/01/2002 11:15:00
Messages: 223
Offline
[Profile] [PM]

shankstocdo wrote:
sao umask =022 và umask=123 lại cho kết quả truy xuất giống nhau đều bằng 644 nhi?
ai có thể giải thick không? 


Đơn giản là vì ( 666 & (^022) ) = (666 & (^123) ) = 644

Nếu tạo folder thì sẽ ra kết quả khác
-- w~ --
[Up] [Print Copy]
  [Question]   Tìm hiểu về umask 17/06/2011 18:51:40 (+0700) | #15 | 241238
Crunch
Member

[Minus]    0    [Plus]
Joined: 02/07/2008 03:41:11
Messages: 50
Offline
[Profile] [PM]
Quy tắc đơn giản tính nhanh quyền truy cập:

1- Với thư mục: Lấy 777-umask

2- Với file: Lấy 777-umask. Sau đó số nào chẵn giữ nguyên, số nào lẻ thì giảm đi 1.

Ví dụ: umask là 123 thì thư mục mới được tạo ra sẽ có quyền truy cập là 654, file mới tạo ra sẽ có quyền truy cập là 644 (777-123=654 -> 644).
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|