Bash / Proc / sys / net / ipv4 / ip_forward: Quyền bị từ chối


10

Tôi đã cố chạy

echo 1 > /proc/sys/net/ipv4/ip_forward

Nó nói Access bị từ chối từ bash, sau đó tôi đã làm:

sudo chmod 1+x /proc/sys/net/ipv4/ip_forward

và bây giờ nó nói Hoạt động không được phép.

Làm thế nào tôi có thể truy cập?


4
Hãy thử điều này:echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
Doug Smythies

Điều đó đã làm việc, bạn có thể giải thích những gì tee làm?
Kevin Hernandez

2
Vấn đề với sudo echo 1 > /proc/sys/net/ipv4/ip_forwardlà việc chuyển hướng đầu ra được thực hiện không như sudovậy, vì vậy nó không hoạt động. Từ trang man: tee - read from standard input and write to standard output and filesvà nếu được thực hiện sudothì nó có đủ đặc quyền để ghi vào tệp.
Doug Smythies

Câu trả lời:


14

Các bit cho phép của tệp /proc/sys/net/ipv4/ip_forwardlà:

-rw-r--r-- 

với owner:groupđược root:root.

Vì vậy, chỉ rootcó thể ghi vào tập tin.

Khi bạn làm:

echo 1 > /proc/sys/net/ipv4/ip_forward

như một người dùng bình thường, bạn sẽ không thể ghi vào tệp do không đủ quyền.

Bạn có thể làm:

  • Sử dụng sudobash:

    sudo bash -c 'echo 1 > /proc/sys/net/ipv4/ip_forward'
  • Sử dụng tee:

    echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward

Lưu ý rằng, bạn nên sử dụng /etc/sysctl.confcho các hoạt động liên tục trên các /proc/systhư mục con.

Tóm lại, để cho phép chuyển tiếp IP, bạn chỉ cần đặt các mục sau vào /etc/sysctl.conf:

net.ipv4.ip_forward = 1

Sau đó chạy:

sudo sysctl -p

để có hiệu quả ngay lập tức.

Điều này có tác dụng tương tự như chỉnh sửa tệp /proc/sys/net/ipv4/ip_forward trực tiếp, và chưa kể đến việc sạch hơn và tất nhiên là bền bỉ.


Làm tiếng vang 1 | sudo tee / Proc / sys / net / ipv4 / ip_forward làm việc cho tôi, bạn có thể giải thích tee là gì không?
Kevin Hernandez

1
@ChrisEthanFox teelà lệnh gửi bất cứ thứ gì nó nhận được cho cả trên đầu ra tiêu chuẩn và các tệp. Kiểm traman tee
heemayl

Tôi đã đăng nhập bằng root nhưng vẫn không thể sử dụng lệnh rm ( rm /proc/sys/net/ipv4/icmp_echo_ignore_all) để xóa tệp đó! Tôi thậm chí đã kiểm tra bit bất biến và nó không được đặt trên tập tin đó ... Tôi gặp lỗi tương tự "rm: không thể xóa '/ Proc / sys / net / ipv4 / icmp_echo_ignore_all': Quyền bị từ chối". Nhưng kỳ diệu là tôi có thể chỉnh sửa tập tin như bạn mô tả! Tôi không thể nhận ra vấn đề với cái gì rm!
Mojtaba Rezaeian

@MojtabaRezaeian Đó là hạt nhân ngăn chặn việc loại bỏ. /proctức là procfssống trên bộ nhớ và được nhân ra. Vì vậy, bạn đang có một cái nhìn về kernel và bất kỳ kernel nào cho phép bạn thực hiện các tệp trên một FS như vậy hoàn toàn phụ thuộc vào kernel.
heemayl

@heemayl Vậy làm cách nào tôi có thể xóa tệp đó vì tạo tệp đó là một tùy chọn để vô hiệu hóa vĩnh viễn các yêu cầu ping của icmp đến máy chủ của tôi nhưng sau khi tạo tệp đó bây giờ tôi đã thay đổi nhưng không có cách nào để xóa tùy chọn đó (mặc dù bây giờ nó không phải là tùy chọn khi nó không thể thay đổi!) bạn có biết làm thế nào để làm điều đó không? hoặc có thể nó yêu cầu mở một câu hỏi khác?
Mojtaba Rezaeian
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.