Kiểm tra quyền truy cập hiệu quả của tệp cho người dùng


24

Có thể kiểm tra quyền hiệu quả của một tệp cho một người dùng cụ thể không?

Tôi thường làm điều này bằng cách su uservà sau đó truy cập tệp, nhưng bây giờ tôi muốn kiểm tra điều này trên một người dùng không có vỏ (tức là người dùng Hệ thống)

Câu trả lời:


23

Các sudolệnh có thể chạy bất cứ điều gì như một người dùng cụ thể với các -utùy chọn. Thay vì lo lắng về shell, chỉ cần cố gắng cat(hoặc thực thi, bất cứ điều gì) tệp của bạn với tư cách là người dùng mục tiêu của bạn:

$ sudo -u apache cat .ssh/authorized_keys 
cat: .ssh/authorized_keys: Permission denied

catcó lẽ không phải là sự lựa chọn tốt nhất mặc dù ... bạn đang kiểm tra một tệp lớn hoặc tệp nhị phân ...
Alexis Wilke

24

Tôi thấy thuận tiện để sử dụng trong các kịch bản như

 sudo -u <user> test -r <file-to-test> && ...

1
câu trả lời tốt nhất, vì bạn có thể kiểm tra khả năng đọc (-r), có thể ghi (-w) và thực thi (-x) mà không thực sự sửa đổi / tạo tệp. man testđể biết thêm chi tiết
Thomas

12
sudo -u <user> test -r <file-to-test>; echo $?

Phần echo $?này sẽ xuất trạng thái thoát khỏi bài kiểm tra.

Chỉ cần nhớ ở đây rằng đầu ra sẽ là 0nếu hoạt động thành công! Hoặc khác không, ví dụ 1, nếu không.

Giống như nhận xét của @ Thomas về câu trả lời của @ user72025, hãy sử dụng man testđể có thêm các bài kiểm tra hoạt động, như test -xđể kiểm tra khả năng thực thi, test -wcho khả năng ghi, v.v.


1
Đối với tôi, đây là câu trả lời hữu ích nhất. Một bởi user72025 đã gần, nhưng tôi không biết kết quả là gì. Bạn đã làm rõ điều đó. Cảm ơn. Bỏ phiếu lên.
lấy cảm hứng từ

6

Tôi đã tìm thấy bạn có thể sử dụng su -s <shellname> <username>để nhập một vỏ cụ thể như một người dùng cụ thể. Sau đó, bạn có thể kiểm tra quyền truy cập tệp như bình thường.

Ví dụ:

su -s /bin/bash Debian-exim
touch /etc/exim4/exim4.conf.template

Lựa chọn rất thú vị.
Alex
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.