CH-J Server Managerquản lý máy chủ qua SSH
Menu
Tất cả hướng dẫn và bài viết →

Cách chỉnh sửa tệp trong /etc qua SFTP và sudo

Vì sao SFTP báo từ chối quyền truy cập trong /etc và những cách an toàn để thay đổi tệp cấu hình mà không mở quyền truy cập root.

Vì sao SFTP báo permission denied

SFTP chạy dưới tài khoản bạn dùng để đăng nhập và không có chức năng tương đương sudo. Hầu hết tệp trong /etc thuộc sở hữu của root, nên tài khoản thông thường có thể đọc một số tệp nhưng không thể ghi vào bất kỳ tệp nào. Đây là hành vi đúng, không nên khắc phục bằng cách nới lỏng quyền.

Những việc không nên làm

Không chạy chmod 777 trên tệp cấu hình, không chuyển chủ sở hữu các tệp trong /etc sang tài khoản của bạn và không bật đăng nhập root bằng mật khẩu chỉ để chỉnh sửa một lần. Một số dịch vụ từ chối tệp có quyền quá rộng, và mỗi thay đổi như vậy đều làm máy chủ kém an toàn hơn ngay cả rất lâu sau khi chỉnh sửa xong.

Dùng sudoedit trong cửa sổ dòng lệnh

sudoedit sao chép tệp đến một vị trí tạm thời, mở tệp trong trình soạn thảo dưới tài khoản của chính bạn và chỉ ghi trở lại sau khi bạn lưu. Bản thân trình soạn thảo không chạy với tư cách root.

sudoedit /etc/nginx/nginx.conf

Tải bản sao lên rồi cài đặt vào vị trí đích

Nếu thích trình soạn thảo cục bộ, hãy tải tệp lên thư mục nhà của bạn rồi dùng sudo để cài đặt tệp vào vị trí đích. Trước tiên, sao lưu bản gốc ở nơi không được bất kỳ cơ chế nạp thêm cấu hình nào đọc đến. Lệnh install đặt chủ sở hữu và chế độ quyền, còn trên hệ thống có SELinux, restorecon đặt ngữ cảnh phù hợp. Kiểm tra chủ sở hữu và chế độ quyền của bản gốc trước khi sao chép các giá trị này, vì không phải tệp nào cũng dùng root và 644.

stat -c '%U %G %a' /etc/nginx/nginx.conf
sudo cp -a /etc/nginx/nginx.conf /root/nginx.conf.bak
sudo install -o root -g root -m 644 ~/nginx.conf.new /etc/nginx/nginx.conf
sudo restorecon -v /etc/nginx/nginx.conf

Kiểm tra tính hợp lệ trước khi áp dụng

Tệp sai cú pháp có thể khiến dịch vụ ngừng hoạt động ở lần khởi động lại tiếp theo. Chạy bước kiểm tra của dịch vụ liên quan trước khi nạp lại cấu hình. Khi thay đổi thiết lập SSH, giữ phiên hiện tại mở và thử đăng nhập mới từ cửa sổ thứ hai.

sudo nginx -t
sudo sshd -t
sudo visudo -cf /etc/sudoers.d/example

Chỉnh sửa bằng sudo trong CH-J Server Manager

File Manager đề nghị mở tệp bằng sudo khi tài khoản SSH không đọc được tệp, đồng thời cảnh báo rằng việc lưu sẽ cần sudo. Khi lưu, dữ liệu được đưa vào thư mục tạm riêng của tài khoản và sau khi xác minh, sudo chuyển dữ liệu vào vị trí đích, giữ nguyên chủ sở hữu, quyền, ACL và ngữ cảnh SELinux. Tùy chọn sao lưu giữ một bản sao của bản gốc trước khi thay thế. Mật khẩu chỉ được gửi đến sudo trên máy chủ, không được lưu trên đĩa hay trong nhật ký. Nếu chính sách sudo yêu cầu cửa sổ dòng lệnh (requiretty), ứng dụng không bỏ qua yêu cầu đó. Ứng dụng không kiểm tra tính hợp lệ của nội dung tệp, vì vậy bạn cần tự chạy bước kiểm tra của dịch vụ.

Tài liệu chi tiết

man: sudo / sudoedit →

man: install →

Mở khóa sinh trắc học và bảo mật →