Xóa các thư mục người dùng khác khỏi thư mục của riêng tôi


6

Tôi là một người dùng không phải root, và đã tạo một thư mục mà những người dùng khác trong nhóm của tôi có thể viết. Thư mục là setgid, vì vậy các tệp và thư mục trong đó có cùng một nhóm.

Tôi có thể xóa các tệp được đặt trong thư mục này, nhưng nếu người dùng tạo thư mục con có các tệp trong đó, tôi dường như không thể xóa các tệp đó. Có điều gì đặc biệt tôi có thể làm (ngoài việc nói, làm phiền người dùng trong câu hỏi hoặc sysadmin về nó) để thoát khỏi thư mục con này không?

EDIT: Tất nhiên, có người hỏi "tại sao?"

Thư mục được chia sẻ trong câu hỏi là một kho lưu trữ đồng bóng. Chúng tôi không thể sử dụng máy chủ dựa trên ssh-key được chia sẻ cho tài khoản này như máy chủ đồng bóng và chúng tôi không thể lưu trữ bên ngoài vì nhiều lý do. Nhưng phần đó hoạt động tốt. Chúng tôi sử dụng Redmine để quản lý dự án, nhưng nó chưa đọc chỉ mục repo cho nội dung tệp - nó đọc thư mục làm việc. Vì vậy, thư mục làm việc phải được cập nhật. crontabđã bị vô hiệu hóa bởi sysadmin, vì vậy đó là ra. Vì vậy, tôi ngây thơ đặt một cái móc thay đổi trong repo được chia sẻ đã thực hiện một " hg update". Điều này dường như hoạt động tốt ban đầu, cho đến khi, tất nhiên, ai đó đã đẩy một cam kết với một thư mục mới. Trong khi tôi có những suy nghĩ mơ hồ về việc cố gắng tạo ra một kịch bản setuid cho hook, có lẽ tôi sẽ chỉ xem xét các con đường an toàn hơn.


Bạn đang sử dụng lệnh nào để loại bỏ thư mục con?
Michael Todd

rm -rf subdir. Tôi cũng chọc vào rmdirunlinkvô ích.
kwatford

Về cơ bản, vấn đề là bạn không thể xóa thư mục vì nó không trống và bạn không thể xóa các tệp trong thư mục vì bạn không có quyền ghi. Về cơ bản, bạn không thể làm bất cứ điều gì về nó. Điều tôi tò mò là nếu có một lá cờ cho phép người dùng khác tạo tệp nhưng không phải là thư mục trong một thư mục nhất định.
petersohn

Câu trả lời:


4

Để xóa một tập tin trong một thư mục, bạn cần có quyền ghi vào thư mục đó. Rõ ràng người dùng đang tạo thư mục mà không có bạn có quyền ghi, trong trường hợp đó, câu trả lời cho câu hỏi của bạn là không, bạn không thể làm gì nếu không nói chuyện với người dùng trong câu hỏi hoặc sysadmin.

Tuy nhiên, nếu tôi là sysadmin, tôi sẽ lo lắng về những gì bạn đang làm. Việc người dùng tạo tập tin trong các thư mục người dùng khác là không bình thường. Có cách nào tốt hơn để làm những gì bạn đang làm không? Ví dụ: tải lên một ứng dụng web phù hợp sẽ kiểm soát tốt hơn và cũng có nghĩa là bạn không phải lo lắng về điều này.


0

Đây không phải là một câu trả lời bằng chứng ngu ngốc, bởi vì người dùng có thể ghi đè ô, nhưng bạn có thể đặt ô của thư mục "công khai" của mình để người dùng khác thừa kế, do đó, bất kỳ thư mục nào họ tạo cũng sẽ có quyền 777. Điều đó sẽ cho phép bạn xóa các tập tin của họ.

dir=/tmp/abcd
mkdir -o $dir
chmod 777 $dir
setfacl -d -m o::rwx $dir
setfacl -d -m g::rwx $dir

# let users write to $dir, including making subdirs underneath
# examples:
sudo -u other_guy mkdir -o $dir/foo
sudo -u other_guy touch $dir/foo/bar

rm -rf $dir

Không có các setfacldòng, điều này sẽ không hoạt động, bởi vì $dir/foo/barcó thể bị xóa bởi bất cứ ai bên cạnh other_guy.

Điều này phá vỡ, tất nhiên, nếu người dùng quyết định thay đổi quyền của các tập tin.

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.