Vị trí thành ngữ cho ổ cắm dựa trên tệp trên hệ thống Debian


13

Tôi đang viết một quy trình daemon cho một hệ thống Debian Csử dụng Ổ cắm tên miền Unix .

Nếu thư mục làm việc của tiến trình daemon là thư mục gốc, có thư mục thành ngữ nào để đặt ổ cắm trên hệ thống tệp không?


Tại sao bạn không để nó có thể cấu hình?
BatchyX

3
@BatchyX Chà, một số loại giá trị mặc định (thay vì buộc mọi quản trị viên phải tự đưa ra quyết định hoàn toàn) có thể tốt. :)
một CVn

Câu trả lời:


17

Chúng thường được tìm thấy trong /tmphoặc một thư mục con của chúng. Lưu ý rằng tất cả mọi thứ trong /tmplà tùy thuộc vào tẩy xoá lúc tắt máy - không phải là nó nhất thiết phải được xoá hoàn toàn, chỉ cần xét rằng nó có thể , vì vậy nếu bạn sử dụng, kiểm tra nếu bạn phải tạo thư mục con của bạn mỗi lần. Bạn sẽ muốn sử dụng thư mục con nếu bạn muốn hạn chế quyền truy cập thông qua các quyền, vì /tmpcó thể đọc được trên thế giới.

/run/var/run(có thể được liên kết với nhau) được sử dụng theo cách tương tự, nhưng chúng thường được gắn dưới dạng hệ thống tập tin tmpfs - có nghĩa là chúng được tạo khi khởi động và nằm trong bộ nhớ , không phải trên đĩa (vì vậy không sử dụng như một nơi để kết xuất số lượng lớn dữ liệu). Đối với một ổ cắm thời gian chạy, nó có lẽ là một lựa chọn tốt.

Lưu ý rằng /run, và tất cả các thư mục khác được đề cập ở đây ngoại trừ /tmp , chỉ có thể ghi được bằng root. Đối với quy trình hệ thống, điều này là tốt, nhưng nếu ứng dụng có thể được chạy bởi người dùng không có đặc quyền, bạn có thể muốn sử dụng /tmphoặc tạo thư mục cố định ở đâu đó và đặt quyền trên đó hoặc sử dụng vị trí trong $ HOME của người dùng.

Có thể tạo một thư mục trong /usr/share(hoặc /usr/local/share) trong khi cài đặt. Các thư mục và nội dung không có khả năng gặt hái trên các bốt như chúng sẽ ở trong /tmphoặc /run. Tuy nhiên, như jordanm chỉ ra trong các bình luận, /usrcó thể được gắn chỉ đọc và hướng dẫn phân cấp hệ thống tập tin linux phản ánh điều này . Tất nhiên, nó không thể chỉ đọc khi ứng dụng của bạn được cài đặt, vì vậy nếu bạn cảm thấy thoải mái khi tạo một ổ cắm ở đó thì bạn có thể để nó lại và sử dụng nó sau (bạn vẫn có thể ghi vào ổ cắm mặc dù tập tin chỉ đọc).

Nếu bạn muốn một nơi nào đó bền bỉ trên các đôi giày không được gắn ở chế độ chỉ đọc, thì đó /etclà một cách đặt cược khá an toàn, vì điều này thường được sử dụng cho các cấu hình trên toàn hệ thống và cấu hình lại. OTOH, có thể có các hệ thống trong đó thiết bị nằm dưới toàn bộ hệ thống tập tin gốc ở chế độ chỉ đọc (ví dụ: hệ thống nhúng), với / tmp và / chạy trên thiết bị khác (có thể: tmpfs trong bộ nhớ). Vì vậy, hai chiến lược mạnh mẽ nhất dường như là:

  • Cài đặt ổ cắm đến một vị trí cố định khi ứng dụng được cài đặt.

  • Tạo một thư mục trong /runhoặc /var/runtại thời gian chạy và đặt ổ cắm ở đó.

  • Làm điều tương tự chỉ trong /tmp.

Ưu điểm của cái đầu tiên là không có vấn đề gì, một khi ứng dụng được cài đặt, bạn sẽ có một ổ cắm để sử dụng. Ưu điểm của cái thứ hai là nó thể thuận lợi hơn cho việc lập trình lành mạnh. Ưu điểm của thứ ba là nó không yêu cầu đặc quyền siêu người dùng. Sẽ dễ dàng để chuyển từ thực hiện này sang thực hiện khác nếu bạn thay đổi tâm trí của bạn sau này.

Cuối cùng, khi BatchyX đưa ra, ít nhất bạn nên cung cấp tùy chọn cấu hình cho việc này, tùy thuộc vào lựa chọn mặc định của bạn.


2
/runhoặc /var/runcũng thường được sử dụng cho các quá trình root.
BatchyX

Đúng. Những người thậm chí còn nhiều tmp hơn /tmp. Tôi sẽ chỉnh sửa nó trong.
goldilocks

/usrcó thể được gắn dưới dạng chỉ đọc. Các tập tin không bao giờ nên được tạo ở đó trong thời gian chạy. Các đề xuất khác là tốt.
jordanm

1
Cảm ơn tất cả các bạn đã đóng góp, cuộc thảo luận rất nhiều thông tin. Tôi quyết định tạo vị trí mặc định /tmp/.APPNAME/.APPSOCKvì daemon không cần dữ liệu liên tục.
đệ quy.ninja

1
Một điểm khác biệt chính giữa /tmp/run, là chỉ root mới có quyền ghi /run.
BatchyX
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.