Các cách để đặt ô trên Ubuntu cho các quy trình trình nền


8

Tôi có một quy trình máy chủ http daemon (yaws) mà tôi muốn máy chủ ghi bất kỳ tệp mới nào có số ô là 002, để một người dùng khác trong cùng nhóm có thể sửa đổi, di chuyển hoặc xóa các tệp được tạo bởi quy trình daemon. Đây là trên Ubuntu 10.04.

Không giống như Apache, yaws không có tùy chọn cấu hình cho umask, vậy có phương pháp nào để thiết lập ô của bất kỳ quy trình daemon nào không?

Tôi tìm thấy câu trả lời này về việc thay đổi tập lệnh init để thêm umask 002. Điều này đã làm việc, nhưng tôi không chắc chỉnh sửa tập lệnh init là cách tốt nhất để làm cho tài liệu này dễ dàng và cấu hình trên nhiều máy.

Tôi cũng tìm thấy tài liệu tham khảo cho mô-đun pam_umask ở đây . Dường như điều này cho phép mỗi người dùng cài đặt ô được định cấu hình trong trường GECOS của / etc / passwd.

Có cách nào khác để đặt ô cho các quy trình daemon không? Và cách nào sẽ được đề xuất?

Câu trả lời:


2

Tạo một .profiletệp trong thư mục chính của daemon:

#!/bin/sh
umask 002

Bạn có thể tìm thấy thư mục chính của daemon bằng cách chạy:

getent passwd daemon | awk -F':' '{ print $6; }'

Nếu điều đó không hiệu quả, giải pháp duy nhất khác tôi có thể nghĩ đến là chỉnh sửa /etc/init.dtập lệnh.


2
daemon passwd | awk -F ':' {in $ 6; } cũng hoạt động.
Janne Pikkarainen

1
Không cần sử dụng sudođể đọc /etc/passwd. Hoặc catcho vấn đề đó ( grepsẽ chấp nhận tên tệp làm đối số hoặc chỉ sử dụng getentnhư Janne đã chỉ ra).
Tạm dừng cho đến khi có thông báo mới.

Điều này không hoạt động trong Ubuntu 10.04. Điều này có thể là do / bin / sh được liên kết với / bin / dash, nhưng tôi đã thay đổi shell mặc định của daemon thành / bin / bash và vẫn không hoạt động. Tôi nghĩ điều này là do $ HOME / .profile không được đọc bởi các bash hoặc dấu gạch ngang không tương tác và không đăng nhập. Tôi không thể tìm thấy bất kỳ cách dễ dàng để chứng minh điều này từ dòng lệnh. Ô vỏ tương tác có thể được hiển thị với sudo -u daemon bash -c umask. Tôi đã thử nghiệm không tương tác bằng cách thay đổi cài đặt và khởi động lại daemon và xem các quyền trên các tệp mà nó tạo.
mp3 Scratchey

@ mp3headsey: Tôi không quen dash, nhưng umasknên làm việc với nó.
Zaz

Tôi cũng đã đặt câu hỏi trong danh sách gửi thư của daemon (yaws). Cách tốt nhất là thêm cài đặt umask trong tập lệnh khởi động daemon trong /etc/init.d/. Thậm chí có người đang vá mã nguồn daemon.
mp3 Scratchey

5

Trên Ubuntu 10.04 cài đặt ô mặc định toàn cầu có thể được kiểm soát bằng mô-đun pam_umask.

Một số chi tiết được tìm thấy trên blog này liên quan đến Debian nói chung: http://muzso.hu/2008/01/22/default-permissions-with-libpam-umask

Mô-đun pam_umask được cài đặt theo mặc định trên Ubuntu 10.04, nhưng cần phải được cấu hình.

Chỉnh sửa /etc/pam.d/common-session, thêm dòng:

session optional pam_umask.so umask=022

Sau đó, mỗi cài đặt người dùng có thể được thay đổi bằng cách chạy lệnh:

sudo chfn -o "umask=002" daemon_username

để thêm cài đặt ô cho trường GECOS trong / etc / passwd.

Điều này chỉ hoạt động cho các shell không tương tác, không đăng nhập, chẳng hạn như khi tập lệnh khởi động daemon được chạy khi khởi động.

Đối với shell đăng nhập, cài đặt umask cần phải được xóa khỏi các tệp cấu hình shell khác như / etc / profile, /etc/login.defs hoặc thư mục chính của người dùng .profile, .bashrc, v.v. Nếu không, cài đặt pam_umask bị ghi đè. Xem trang man pam_umask để biết thứ tự cấu hình.


1

Nếu dịch vụ được khởi động thông qua công cụ "start-stop-daemon", ô có thể được chỉ định ở cấp dòng lệnh với tham số "--umask", vd:

log_daemon_msg "Starting $DESC" "$NAME"
if start-stop-daemon --start --oknodo --exec $DAEMON -b --chuid motion --umask 002 ; then
        log_end_msg 0
    else
        log_end_msg 1
        RET=1
    fi

Điều chỉnh tập lệnh khởi động để đọc các chi tiết như vậy từ tệp cấu hình có thể trong suốt hơn so với việc thêm cài đặt dựa trên người dùng - điều này tất nhiên phụ thuộc vào quy trình khởi động được sử dụng cho trình nền.

Thông tin thêm có thể được lấy từ man-Page: man start-stop-daemon

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.