This has been posted before but misunderstood. My private posts do not show on the index.php even though I am logged in. There is code for this in wp-blog-header.php
// Get private posts
if (isset($user_ID) && ('' != intval($user_ID)))
$where .= " OR post_author = $user_ID AND post_status != 'draft')";
The problem though, is that $user_ID is not set at this point of execution for some reason. Yet $user_ID is set by the end of index.php. I don't know where or how. I tested this by doing an echo right before the above code, another at the top of index.php and another at the end of index.php. Only the last one output my userID.