Tôi khuyên bạn chỉ nên sử dụng tài khoản root ở nơi đầu tiên. Nếu bạn thiết lập nó như thế này:
- Cấu hình của bạn
sshd_configtrên máy mục tiêu để PermitRootLogin without-password.
- Sử dụng
ssh-keygentrên máy kéo bản sao lưu để tạo khóa riêng SSH (chỉ khi bạn chưa có khóa SSH). Không đặt cụm mật khẩu. Google một hướng dẫn nếu bạn cần chi tiết cho việc này, sẽ có rất nhiều.
- Nối các nội dung của
/root/.ssh/id_rsa.pubmáy dự phòng vào máy đích /root/.ssh/authorized_keyscủa bạn.
- Bây giờ máy sao lưu của bạn có quyền truy cập root vào máy mục tiêu của bạn mà không phải sử dụng xác thực mật khẩu.
sau đó thiết lập kết quả sẽ khá an toàn.
sudo, đặc biệt kết hợp với NOPASSWDnhư được đề xuất trong các nhận xét, không có lợi ích bảo mật so với việc chỉ sử dụng tài khoản root. Ví dụ đề xuất này:
thêm phần sau vào /etc/sudoerstập tin của bạn :rsyncuser ALL= NOPASSWD:/usr/bin/rsync
về cơ bản cho rsyncuserphép quyền root nào. Bạn hỏi:
@MartinvonWittich Dễ dàng có được một vỏ gốc đầy đủ vì được rsyncthực thi với sudo? Đi bộ [m] e [thông qua] mà làm ơn.
Vâng, đơn giản. Với cấu hình được đề xuất, rsyncusergiờ đây có thể chạy rsyncbằng root mà không cần hỏi mật khẩu. rsynclà một công cụ rất mạnh để thao tác các tệp, vì vậy bây giờ rsyncusercó một công cụ rất mạnh để thao tác các tệp có quyền root. Tìm cách khai thác điều này chỉ mất vài phút (đã thử nghiệm trên Ubuntu 13.04, yêu cầu dash, bashkhông hoạt động):
martin@martin ~ % sudo rsync --perms --chmod u+s /bin/dash /bin/rootdash
martin@martin ~ % rootdash
# whoami
root
# touch /etc/evil
# tail -n1 /etc/shadow
dnsmasq:*:15942:0:99999:7:::
Như bạn có thể thấy, tôi đã tạo cho mình một vỏ gốc; whoamixác định tài khoản của tôi là root, tôi có thể tạo tập tin /etcvà tôi có thể đọc từ đó /etc/shadow. Khai thác của tôi là đặt bit setuid trên dashnhị phân; nó khiến Linux luôn chạy nhị phân đó với sự cho phép của chủ sở hữu, trong trường hợp này là root.
Có một gốc thực sự không phải là [khuyến nghị] vì lý do tốt. - redanimalwar 15 giờ trước
Không, vụng về làm việc xung quanh tài khoản root trong các tình huống hoàn toàn phù hợp để sử dụng nó không phải là lý do chính đáng. Đây chỉ là một hình thức lập trình sùng bái hàng hóa khác - bạn không thực sự hiểu khái niệm đằng sau sudo vs root, bạn chỉ áp dụng một cách mù quáng niềm tin "root là xấu, sudo là tốt" bởi vì bạn đã đọc nó ở đâu đó.
Một mặt, có những tình huống sudochắc chắn là công cụ phù hợp cho công việc. Ví dụ: khi bạn tương tác làm việc trên máy tính để bàn đồ họa Linux, giả sử Ubuntu, thì việc sử dụng sudolà ổn trong những trường hợp hiếm hoi mà đôi khi bạn cần quyền truy cập root. Ubuntu cố tình có một tài khoản root bị vô hiệu hóa và buộc bạn phải sử dụng sudotheo mặc định để ngăn người dùng luôn luôn sử dụng tài khoản root để đăng nhập. Khi người dùng chỉ muốn sử dụng, ví dụ như trình duyệt web, thì đăng nhập bằng root sẽ là một điều nguy hiểm. và do đó không có tài khoản root theo mặc định sẽ ngăn những người ngu ngốc làm điều này.
Mặt khác, có những tình huống như của bạn, trong đó một tập lệnh tự động yêu cầu quyền root đối với một cái gì đó, ví dụ để tạo bản sao lưu. Bây giờ sử dụng sudođể làm việc xung quanh tài khoản root không chỉ vô nghĩa, nó còn nguy hiểm: thoạt nhìn rsyncusertrông giống như một tài khoản không có đặc quyền thông thường. Nhưng như tôi đã giải thích, sẽ rất dễ dàng để kẻ tấn công có được quyền truy cập root đầy đủ nếu anh ta đã có rsyncuserquyền truy cập. Vì vậy, về cơ bản, bây giờ bạn có một tài khoản root bổ sung trông không giống tài khoản root nào cả, đây không phải là một điều tốt.
roottài khoản ở nơi đầu tiên.sudo, đặc biệt kết hợp vớiNOPASSWDnhư được đề xuất trong các nhận xét, không thực sự cải thiện tính bảo mật của máy của bạn.