Điểm:0

bitcoind.service: Không thể mở tệp PID /run/bitcoind/bitcoind.pid (chưa?) sau khi bắt đầu: Thao tác không được phép

lá cờ my

Trên Ubuntu 20.04 LTS, tôi đã tạo một đơn vị dịch vụ/systemd cho bitcoind, nhưng khi khởi động nó, tôi gặp lỗi này:

Không thể mở tệp PID /run/bitcoind/bitcoind.pid (chưa?) sau khi bắt đầu: Thao tác không được phép

Điều này nghe có vẻ giống như một vấn đề về quyền (?), nhưng tôi hiểu rằng tệp PID và/hoặc thư mục chứa nó là một loại tạm thời, giống như chỉ xuất hiện khi dịch vụ đang chạy, vậy làm cách nào để bạn gán quyền lâu dài cho thứ gì đó xuất hiện và đi? Có vẻ như tất cả các quyền sẽ cần phải được thay đổi cho việc này. Tôi có thể làm gì để thiết bị chạy chính xác?

â bitcoind.service - Bitcoin daemon
     Đã tải: đã tải (/etc/systemd/system/bitcoind.service; đã bật; giá trị đặt trước của nhà cung cấp: đã bật)
     Hoạt động: không thành công (Kết quả: mã thoát) kể từ Chủ Nhật 2021-06-20 09:46:57 CDT; 14s trước
    Quy trình: 104861 ExecStart=/usr/local/bin/bitcoind -daemon -pid=/run/bitcoind/bitcoind.pid -conf=/home/first/.bitcoin/bitcoin.conf -datadir=/blockchain/.bitcoin/data (mã=đã thoát, trạng thái=0/THÀNH CÔNG)
   PID chính: 104866 (mã=đã thoát, trạng thái=1/THẤT BẠI)

Ngày 20 tháng 6 09:46:57 server systemd[1]: Khởi động Bitcoin daemon...
Ngày 20 tháng 6 09:46:57 máy chủ systemd[1]: bitcoind.service: Không thể mở tệp PID /run/bitcoind/bitcoind.pid (chưa?) sau khi bắt đầu: Thao tác không được phép
Ngày 20 tháng 6 09:46:57 máy chủ systemd[1]: Bắt đầu daemon Bitcoin.
Ngày 20 tháng 6 09:46:57 máy chủ systemd[1]: bitcoind.service: Quá trình chính đã thoát, mã=đã thoát, trạng thái=1/THẤT BẠI
Ngày 20 tháng 6 09:46:57 máy chủ systemd[1]: bitcoind.service: Không thành công với kết quả 'mã thoát'.

Tôi đang sử dụng tệp bitcoind.service này được điều chỉnh từ Hướng dẫn thiết lập Raspibolt của Stadicus:

# RaspiBolt: đơn vị systemd cho bitcoind
# /etc/systemd/system/bitcoind.service

[Đơn vị]
Mô tả=Bitcoin daemon
Sau=mạng.mục tiêu

[Dịch vụ]

# Thực hiện dịch vụ
###################

ExecStart=/usr/local/bin/bitcoind -daemon \
                                  -pid=/run/bitcoind/bitcoind.pid \
                                  -conf=/home/first/.bitcoin/bitcoin.conf \
                                  -datadir=/blockchain/.bitcoin/data


# Quản lý quy trình
####################
Loại = rẽ nhánh
PIDFile=/run/bitcoind/bitcoind.pid
#ExecStartPost=/bin/sh -c 'chown first:first /run/bitcoind/bitcoind.pid'
# Khởi động lại=khi thất bại
#TimeoutSec=300
#RestartSec=30


# Tạo thư mục và quyền
###################################

# Chạy dưới dạng bitcoin:bitcoin
Người dùng = đầu tiên
Nhóm = đầu tiên

# /run/bitcoind
RuntimeDirectory=bitcoind
RuntimeDirectoryMode=0710

# Các biện pháp cứng rắn
####################

# Cung cấp một /tmp và /var/tmp riêng tư.
RiêngTmp=true

# Gắn /usr, /boot/ và /etc chỉ đọc cho tiến trình.
Hệ thống bảo vệ=đầy đủ

# Từ chối truy cập /home, /root và /run/user
ProtectHome=true

# Không cho phép tiến trình và tất cả các phần tử con của nó đạt được
# đặc quyền mới thông qua execve().
NoNewPrivileges=true

# Sử dụng không gian tên /dev mới chỉ được điền với các thiết bị giả API
# chẳng hạn như /dev/null, /dev/zero và /dev/random.
Thiết bị riêng tư=true

# Từ chối việc tạo ánh xạ bộ nhớ có thể ghi và thực thi.
MemoryDenyWriteExecute=true

[Cài đặt]
WantedBy=multi-user.target



Bạn có thể thấy tôi đã thử thêm phần này vào tệp bitcoind.service:

ExecStartPost=/bin/sh -c 'chown first:first /run/bitcoind/bitcoind.pid'

Nhưng nó không hoạt động và dường như thực thi trước khi tệp bitcoind.pid tồn tại.

Điểm:0
lá cờ cn

Không thể mở tệp PID /run/bitcoind/bitcoind.pid

Một trong hai /chạy hoặc /run/bitcoid hoặc /run/bitcoind/bitcoind.pid không tồn tại hoặc nếu có thì nó không thuộc sở hữu của người dùng trong nhóm cần nó.

Người dùng = đầu tiên sẽ cho rằng người dùng là "đầu tiên" và khi tệp pid được sở hữu bởi một người dùng khác (/ nhóm) thì "đầu tiên" bạn cũng nhận được "quyền bị từ chối".

# Chạy dưới dạng bitcoin:bitcoin
Người dùng = đầu tiên
Nhóm = đầu tiên

Lưu ý rằng nó tuyên bố ở đây rằng nó phải là:

# Chạy dưới dạng bitcoin:bitcoin
Người dùng = bitcoin
Nhóm = bitcoin

chứ không phải "đầu tiên".

Điểm:0
lá cờ my

Hai phát hiện:

  1. Phần 'Các biện pháp tăng cường' trong các tệp bitcoin.service của tôi chứa:
# Từ chối truy cập /home, /root và /run/user
ProtectHome=true

/home/.bitcoin là nơi tôi có tệp bitcoin.conf, vì vậy đó là vấn đề. Di chuyển bitcoin.conf sang nơi khác hoặc vô hiệu hóa ProtectHome cho phép dịch vụ bắt đầu thành công trong trường hợp cụ thể này.

  1. Thông báo lỗi sau không liên quan đến lỗi dịch vụ:
Không thể mở tệp PID /run/bitcoind/bitcoind.pid (chưa?) sau khi bắt đầu: Thao tác không được phép

Thông báo này xuất hiện không thường xuyên ngay cả khi dịch vụ đang khởi động bình thường và do đó, rõ ràng đó không phải là vấn đề trong trường hợp này.

lá cờ cn
Vui lòng chỉ sử dụng phần câu trả lời cho CÂU TRẢ LỜI. Mở rộng câu hỏi bằng cách thêm thông tin bổ sung.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.