2009-04-30 38 views
27

Tôi đang ở trên một hệ thống Linux nước ngoài và cần phải xác định người dùng mà apache chạy trên (và do đó, php).Nhận apache linux người dùng từ php

Mục đích: Tôi cần lấy chủ sở hữu tập lệnh (điều này không thành vấn đề vì tôi có thể sử dụng SplFileInfo) và so sánh nó với chủ sở hữu của quy trình apache.

Tôi đang mở cho mọi đề xuất thay thế.

Kính trọng, Mario

Edit: Thông tin thêm:

Kịch bản là một máy phát điện thu nhỏ, có sử dụng một tập tin XML để tạo ra ngón tay cái từ hình ảnh lớn hơn. Tập lệnh cần tạo thư mục và ghi tệp. Vì tôi không thể ảnh hưởng đến cấu hình php và tôi không có bất kỳ truy cập shell nào, điều này phải được thực hiện rất âm thầm. Quá trình tạo điểm dừng thông qua ngoại lệ và gửi thư không thành công. Như hầu hết các chức năng của php không thể ném ngoại lệ về thất bại, tôi cần một số kiểm tra thủ công để xác định môi trường tôi đang ở. Vì vậy tôi cần người dùng apache để so sánh nó với một số thư mục hoặc fileowner.

+0

Tùy chọn bạn chỉ có thể sử dụng/tmp, có thể ghi cho mọi người. – Anonymous

+0

Thats không hữu ích cho trường hợp của chúng tôi, vì chúng tôi không thể phục vụ bất kỳ hình ảnh được tạo ra từ bên ngoài docroot. –

Trả lời

52

Bạn có thể gọi hàm php exec để thực hiện whoami:

<?php echo exec('whoami'); ?> 
+0

thanx! thanx đến anon., cả hai phương pháp được cung cấp ở đây đều rất phù hợp. Tôi sẽ sử dụng phương thức của grant, vì tôi không thể khẳng định rằng hàm posix có sẵn. –

+1

exec() sẽ không hoạt động nếu safe_mode được bật và whoami nằm ngoài safe_mode_exec_dir. – Anonymous

+0

hoàn toàn chính xác, nhưng đối với môi trường mục tiêu của tôi, đây là giải pháp tốt nhất. (không safe_mode;)) –

1

phpinfo sẽ đổ rất nhiều thông tin hệ thống. Đối với cài đặt apache2, có một phần hiển thị id người dùng apache và id nhóm. Hãy thử tạo một tập lệnh php chỉ có một dòng, một cuộc gọi đến phpinfo() và mở nó trong trình duyệt web của bạn.

+0

Đó không phải là mục đích;) Tôi biết cách lấy người dùng thông qua thông tin về php ... tôi cần phải đặt tên cho các chuỗi dưới dạng một chuỗi. –

+0

... và phân tích cú pháp phpinfo (INFO_MODULES) KHÔNG PHẢI là một thay thế;) –

8

thấy posix_getuid() và posix_getpwuid()

5

Một số câu trả lời phức tạp ở đây.

này làm việc cho tôi:

$user = getenv('APACHE_RUN_USER'); 

Không chắc chắn nếu điều này chỉ là một điều mới được thêm vào apache từ câu hỏi này đã được hỏi nhưng nó chắc chắn có bây giờ.

+0

Trong trường hợp của tôi, nó không hoạt động. Nó vừa trả về một chuỗi rỗng. –

Các vấn đề liên quan