2009-02-12 19 views
50

tôi đang làm một danh sách thư mục trong .ssh nhà dir của tôi mà mang lại cho tôi một kết quả lạ:Chỉ Questionmarks trong Linux dirlisting

ls -lsa .ssh/ 
total 0 
? ?--------- ? ? ? ?   ? . · 
? ?--------- ? ? ? ?   ? .. · 
? ?--------- ? ? ? ?   ? authorized_keys · 

Điều lạ là, rằng điều này chỉ xảy ra cho một người sử dụng và duy nhất tại thư mục cụ thể này. Nếu tôi làm ls sau khi su-su, mọi thứ sẽ hoạt động như mong đợi. Một điều kỳ lạ nữa là, xterm của tôi hiển thị danh sách thư mục bằng phông chữ nhấp nháy màu đỏ! Bất kỳ ý tưởng nào gây ra điều này xảy ra?

thx!

Edit:
Dưới đây là danh sách thư mục root:

ls -lsa 
total 52 
4 drw------- 2 sdd sdd 4096 Feb 10 15:57 . 
4 drwx------ 16 sdd sdd 4096 Feb 10 15:57 .. 
4 -rw------- 1 sdd sdd 1628 Feb 10 15:57 authorized_keys 

Tôi đang sử dụng ext3.

Edit2:
Thx cho câu trả lời, nhưng tôi vẫn có được điều này:

chmod -R 600 /home/sdd/.ssh 
ls -lsan _ssh.old/ 
total 0 
? ?--------- ? ? ? ?   ? . 
? ?--------- ? ? ? ?   ? .. 
? ?--------- ? ? ? ?   ? authorized_keys 
+0

Người dùng này có ngôn ngữ lạ hoặc phông chữ thiết bị đầu cuối lạ không? – gnud

+0

không có phông chữ "bình thường", tức là không có nội dung UTF8 hoặc bất kỳ thứ gì – SDD

+1

Bạn có thể cập nhật edit2 không? Nó không thực hiện bất kỳ ý nghĩa, bạn đang chmodding với chế độ sai (không thực hiện) và sau đó liệt kê một dir khác nhau ... – wds

Trả lời

90

Điều đó xảy ra khi người dùng không thể làm một stat() trên các tập tin (mà đòi hỏi thực thi quyền) , nhưng có thể đọc các mục nhập thư mục (yêu cầu quyền truy cập đọc trên thư mục). Vì vậy, bạn nhận được một danh sách các tập tin trong thư mục, nhưng không thể nhận được bất kỳ thông tin nào trên các tệp vì chúng không thể đọc được. :) Nếu bạn có một thư mục có quyền đọc nhưng không thực thi, bạn sẽ thấy điều này. Ai đó có thể cố gắng bảo vệ thư mục .ssh không chính xác - nó phải là "chmod 0700 .ssh /" và thuộc sở hữu của người dùng sở hữu homedir. Nhiều khả năng, ai đó đã làm theo các hướng dẫn để bảo mật tệp .ssh nhưng áp dụng nó cho một thư mục .ssh. :)

Nếu bạn làm một chmod 0600 hoặc 0400 trên bất kỳ thư mục nào, bạn có thể dễ dàng tái tạo hành vi này. Thêm quyền thực thi vào thư mục, và nó sẽ hoạt động tốt.

+0

thx, giải quyết được vấn đề :) – SDD

+0

Giải pháp này không hoạt động đối với chúng tôi kể từ khi sự kiện người dùng root không thể hoạt động trên tệp. Bất kỳ đề xuất? [root @ lxxxxx1 teamsite] # chmod 0777 tin chmod: không thể truy cập 'tư nhân': Không có tập tin hoặc thư mục [root @ lxxxxxx1 teamsite] # chmod -R 0777 tin chmod: không thể truy cập 'riêng tư': Không có tệp hoặc thư mục như vậy – TroyP

+0

Troy - dấu trích dẫn đơn lẻ đó là kỳ quặc, cho tôi biết rằng bạn có thể có một số tên tệp lạ trên hệ thống tệp hoặc sự cố khác. Hãy hỏi một câu hỏi riêng về điều đó, làm ơn. – dannysauer

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