Làm thế nào tôi có thể tìm ra người dùng nào đã xóa một thư mục?


8

Máy chủ Ubuntu của tôi có khoảng 30 người dùng hoạt động trên đó. Cá nhân tôi biết tất cả mọi người sử dụng máy chủ. Gần đây, một vài người bạn và tôi đang làm việc trong dự án. Chúng tôi đã tạo một thư mục mới cho dự án và vì mọi người đều biết mọi người nên chúng tôi không bận tâm đến việc bảo vệ công việc của mình dưới một loạt các quyền. Mặc dù vậy, chúng tôi nên có, bởi vì chúng tôi thức dậy sáng nay và thấy rằng ai đó đã xóa toàn bộ thư mục của chúng tôi.

Công việc của chúng tôi được sao lưu mỗi đêm vì vậy thực sự không phải là vấn đề lớn để khôi phục công việc của chúng tôi. Tuy nhiên, chúng tôi muốn tìm ra ai đã gỡ bỏ nó để chúng tôi có thể đối đầu với họ. Cho đến nay, điều tốt nhất chúng tôi nghĩ ra để tìm ra thủ phạm là kiểm tra lịch sử bash của mọi người nhưng điều này rất dài và tẻ nhạt và nếu có ý định độc hại đằng sau việc xóa thư mục mà thủ phạm của chúng tôi có thể đã sửa đổi dấu vết của họ để che dấu vết của họ (hoặc tất nhiên họ có thể sử dụng một vỏ khác).

Vì vậy, về cơ bản, cách dễ nhất và nhanh nhất để tìm ra ai đã xóa một thư mục?

Cảm ơn trước cho thời gian của bạn.


2
Tôi không nghĩ rằng nó có thể.
enzotib

4
Lần tới, hãy sử dụng hệ thống kiểm soát phiên bản hoặc SparkleShare (sử dụng VCS git) hoặc thư mục được mã hóa (sử dụng [gnome- ] encfs ) được đồng bộ hóa với Ubuntu One hoặc Dropbox.
dAnjou

@dAnjou Chúng tôi đã cài đặt git và lật đổ trên máy chủ của chúng tôi nhưng vì chúng tôi làm việc trên một trang web mà chúng tôi liên tục thêm / xóa các tệp khỏi nó có vẻ như là một rắc rối không cần thiết để sử dụng. Như tôi đã nói trong câu hỏi của mình, có lẽ chúng ta nên tạo một nhóm và làm cho thư mục chỉ có thể truy cập bởi nhóm của chúng tôi. Bất kể, chúng tôi có thể lấy lại tất cả công việc của chúng tôi kể từ khi chúng tôi sao lưu nó. Mối quan tâm của tôi bây giờ là tôi không muốn người dùng xóa các thư mục trên hệ thống mà họ không bị ảnh hưởng. Tôi tin tưởng tất cả người dùng của tôi không làm điều gì đó như thế này để điều này thực sự làm phiền tôi.
Rob S.

Đúng, không thể.
psusi

1
Bạn có thể xem để xóa (hoặc sửa đổi) các tập tin. Xem cyberciti.biz/tips/man auditctl
Kẻ

Câu trả lời:


5

Tôi đã không tìm thấy một câu trả lời viên đạn ma thuật cho câu hỏi của bạn; một phần lý do đó được nêu chi tiết tại đây: /superuser/178596/checking-user-command-history-in-unix

Lệnh đơn giản này có thể giúp bạn theo dõi những gì đã xảy ra, tìm kiếm các lệnh rm & mv trong tất cả các tệp lịch sử shell trong tất cả các thư mục gốc của người dùng:

find /home -type f -iname .*history -exec grep "rm\|mv" {} \;

Thật tốt khi bạn có một bản sao lưu hợp lệ để cứu bạn, nhưng tôi khuyên bạn nên tạo một số nhóm cho các thư mục dự án và chỉ cần thêm tài khoản người dùng vào các nhóm đó; Điều đó sẽ giúp bạn tiết kiệm rất nhiều nỗi đau trong tương lai.

Ví dụ: thêm một nhóm và thêm các thành viên nhóm dự án vào đó

groupadd coolproject
adduser jim coolproject
adduser joe coolproject
adduser charlie coolproject

thiết lập các quyền theo cách đệ quy đúng cách và đảm bảo quyền truy cập được chuyển tiếp cho nhóm bất kể ai tạo / chỉnh sửa tệp

chown -R yourusername:coolproject /path/to/projectdir
find /path/to/projectdir -type d -exec chmod 2775 {} \;

(2 đặt quyền sở hữu nhóm thành "dính", điều này đảm bảo chủ sở hữu nhóm của bất kỳ dự án nào vẫn là "coolproject")

find /path/to/projectdir -type f -exec chmod 664 {} \;

Hy vọng rằng sẽ giúp bạn ra! B-)


Cảm ơn! Tôi đã sửa đổi lệnh của bạn thành "find / home -type f -iname. * History -print -exec grep" rm \ | mv "{} \;" để tôi có thể lấy tên tệp của lịch sử bật lên thông tin thú vị.
Rob S.

Rob xuất sắc! rất vui vì tôi có thể giúp đỡ =)
Chad Stocate

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.