2011-11-29 32 views
10

Tôi muốn chạy nút có người dùng đặc quyền thấp, có thể không? Tôi cần sử dụng khung công tác Express.jsTôi có thể chạy Node.JS với đặc quyền thấp không?

+2

Xác định "người dùng đặc quyền thấp". –

+0

Tôi không muốn điều chỉnh node.js với các đặc quyền ROOT. – Dail

+0

Điều gì làm bạn nghĩ bạn phải làm? Tôi chưa bao giờ cần phải làm như vậy. –

Trả lời

17

Có. Có nhiều giải pháp có sẵn để thực hiện việc này, tùy thuộc vào nhu cầu chính xác của bạn.

Nếu bạn muốn chạy nút trên cổng 80, bạn có thể sử dụng nginx (không hoạt động với WebSockets) hoặc haproxy. Nhưng có lẽ nhanh nhất và bẩn nhất là sử dụng iptables để chuyển hướng cổng 80 đến cổng của sự lựa chọn của bạn:

sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8003 
sudo iptables -t nat -L 

Khi bạn đang hạnh phúc, sau đó lưu cấu hình và chắc chắn rằng iptables đi vào lúc khởi động

sudo service iptables save 
sudo chkconfig iptables on 

Để tự động bắt đầu dịch vụ nodejs của bạn là không root, và khởi động lại nó nếu nó không thành công, bạn có thể sử dụng upstart với một kịch bản như thế này:

#!upstart 
description "nodeapp" 
author  "you" 

start on started mountall 
stop on shutdown 

# Automatically Respawn: 
respawn 
respawn limit 99 5 

script 
    export HOME="/home/user/" 
    exec sudo -u user /usr/local/bin/node /home/user/app.js 2>&1 >> /home/user/app.log 
end script 

Nếu bạn đang ở trên trình cài đặt Amazon EC2, hoặc bạn nhận được một lỗi nói rằng sudo: sorry, you must have a tty to run sudo, sau đó bạn có thể thay thế lệnh exec của bạn với điều này:

#!upstart 
description "nodeapp" 
author  "you" 

start on started mountall 
stop on shutdown 

# Automatically Respawn: 
respawn 
respawn limit 99 5 

script 
    export HOME="/home/user/" 
    #amazon EC2 doesn’t allow sudo from script! so use su --session-command 
    exec su --session-command="/usr/local/bin/node /home/user/app.js 2>&1 >> /home/user/app.log" user & 
end script 

Và, bạn đã không hỏi câu hỏi này, nhưng để giữ cho nó chạy mãi mãi, hãy kiểm tra monit! Đây là a useful guide to setting up node.js with upstart and monit.

+0

Cài đặt HOME thực sự làm gì ở đây? – blu

+1

Tùy thuộc vào phiên bản cụ thể của nút bạn đang sử dụng, cấu trúc thư mục của bạn trông như thế nào và liệu nút đã được cài đặt bởi root hay người dùng hiện tại, câu trả lời sẽ khác nhau giữa mọi thứ và không có gì :) từ, nó có thể được bỏ qua hoàn toàn (lưu ý rằng tôi đặt không đúng '/ home/user/nodeapp' trong ví dụ của tôi, khi nó phải khớp với vị trí app.js của'/home/user/', tức là khi require() đang đi để tìm kiếm các mô-đun) – Kato

+0

Tuyệt vời, cảm ơn thông tin – blu

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