2009-08-27 24 views
6

Các dòng sau trong chương trình C của tôi nên được cung cấp tất cả/Nhóm/Chủ đầu đọc và quyền ghiquyền tập tin mkfifo không được thực hiện một cách chính xác

mkfifo("/tmp/dumbPipe", 0666) 

Nhưng một khi tôi thực thi mã và kiểm tra không được phép của ghi các bit đã được đặt, tôi kết thúc với

prw-r--r-- 

Chủ sở hữu giống nhau, Có phải vấn đề khi tôi tạo đường ống trong thư mục tmp không? Khi tôi chạy chmod 666 từ dòng cmd tất cả các quyền được đặt chính xác.

Trả lời

9

Đây là bài đăng không có nhận xét, chỉ trích dẫn các sách hướng dẫn. Brievity, vv

Trích từ người đàn ông 3 mkfifo:

Nó được sửa đổi bởi umask của quá trình theo cách thông thường: các điều khoản của các tập tin được tạo ra là (chế độ & ~ umask).

Trích từ man 2 umask

Giá trị mặc định điển hình cho quá trình umask là S_IWGRP | S_IWOTH (bát phân 022). Trong trường hợp thông thường mà đối số chế độ để mở (2) được quy định như sau:

 S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH 

    (octal 0666) when creating a new file, the permissions on the resulting file will be: 

     S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH 

    (because 0666 & ~022 = 0644; i.e., rw-r--r--). 
0

Salam, Tôi biết nó là muộn nhưng đối với những người dùng khác tôi chọn để viết nhận xét này Thậm chí nếu bạn chính xác 0666 là sự cho phép, bạn nên biết rằng có một yếu tố khác được gọi là "quá trình tạo tệp của quá trình", do đó, câu hỏi là:

cách thay đổi chế độ tệp quá trình hiện tại?

trả lời: Sử dụng umask (phép) ngay từ đầu chương trình của bạn - và cung cấp cho 0000 như phép

http://www.cyberciti.biz/tips/understanding-linux-unix-umask-value-usage.html

này sẽ giúp.

Các vấn đề liên quan