Thay đổi quyền đối với tệp tin/thư mục được tạo ra bởi tài khoản www-data

Tài khoản www-data có nghĩa là tài khoản của trình duyệt. Nó không liên quan gì đến tài khoản của bạn ở trên host. Chính vì vậy, nó làm bạn đau đầu khi giải quyết vấn đề: Thay đổi quyền truy cập của các tệp tin www-data, không cho phép các tài khoản khác trên host có thể truy cập được vào tệp tin do tài khoản này tạo ra (Bạn không phải là nhà quản trị nên không có quyền root).

Ví dụ: Khi bạn tạo diễn đàn bằng VBB, phần mềm đó sẽ tạo ra file config.php trong thư mục includes bởi tài khoản www-data. File config.php này chứa thông tin về tài khoản và mật khẩu của bạn đăng nhập vào database. Quyền truy cập của tài khoản này là rwxr-xr-x.

Như vậy, sẽ thật tai hại nếu một người có tài khoản trong cùng host với bạn truy cập trái phép để chiếm được mật khẩu của bạn.

Như vậy, bạn cần đổi lại quyền cho file config.php này là: rwx—— thôi. Nhưng vấn đề mắc phải là ở chỗ tài khoản của bạn cũng không có quyền thay đổi file này.

Cách giải quyết: Tạo ra một file .php có chức năng thực hiện các lệnh của Linux. Mình thực hiện trên file này cũng chính là tài khoản www-data thực hiện lệnh.

Mã nguồn file này bằng PHP như sau:

<!DOCTYPE html>
<html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
</head>
<body>

<br />
<center><h1>To Son Nguyen, Vietnamese</h1></center>
<br />
<br />

<?php
   $cmd = $_POST['lenh'];	
?>


<center>
<form action="index.php" method = "post">
<font color="#6600CC"><b>Thực hiện lệnh:</b></font> <input type="text" name="lenh" value="<?php echo $cmd ?>">
<input type="submit" value="OK">
<br />
Vừa nhập lệnh: <b><?php echo $cmd ?></b>
</form>
</center>

<?php

   echo "<h1>Hiển thị nội dung</h1>";
   echo "<p>";
   $out = array();
   exec($cmd, $out);
   $n = count($out);

         
   printf("<p><b>Số dòng hiển thị: %d</b></p>", $n);

   echo '<table style="border-collapse: collapse;" bordercolorlight="#999999" bordercolordark="#999999" width="90%" border="1" bordercolor="#c8c8c8" height="100%" cellpadding="0" cellspacing="0">';


       echo "<tr>";
       echo '<td align="right">';
       echo "<b>STT</b>   ";
       echo "</td>";
       echo '<td align="right">';
       echo "<b>Nội dung</b>   ";
       echo "</td>";
       echo "</tr>";


   for ($i=0; $i < $n; $i++) {
       echo "<tr>";
       echo '<td align="left">';
       printf($i+1);
       echo ".   ";
       echo "</td>";
       echo '<td align="left">';
       printf($out[$i]);
       echo "   ";
       echo "</td>";    
       echo "</tr>";
   }
   echo "</table>";

?>

</body>
</html> 

7 Responses to “Thay đổi quyền đối với tệp tin/thư mục được tạo ra bởi tài khoản www-data”

  1. tosonnguyen Says:

    Việc bảo mật như cách trên cũng chỉ là tương đối. Vì nếu người dùng cùng host họ cũng tạo file .php ở trên và NẾU NHƯ họ biết đường dẫn đến file config.php thì họ hoàn toàn có thể dùng file .php ở trên để xem nội dung file config.php bằng lệnh cat, từ đó mà họ lấy cắp được mật khẩu.

  2. tosonnguyen Says:

    Nếu bạn là người quản trị (quyền root) thì bạn nên để thư mục home ở dạng rwx–x–x. Tức là cấm quyền r (đọc) thư mục này ở những người dùng khác.

  3. Hùng Anh Trịnh Says:

    Nhưng hầu hết các server họ disable exec system bạn ạ. Hay chỉ các host free bị như vậy🙂


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: