Tại sao các ký tự dấu hỏi xuất hiện khi thay đổi quyền của thư mục?


33

Tôi đang cố gắng thay đổi quyền của thư mục tạm thời có quyền ban đầu là

user@ubuntu:/var/log$ ls -l squid*
squid3:
total 4
-rw-r----- 1 proxy proxy    0 Jan 16 14:43 access.log
-rw-r----- 1 proxy proxy 1359 Jan 16 14:43 cache.log
ls: cannot open directory squid-deb-proxy: Permission denied

một số điều sau đây

user@ubuntu:/var/log$ sudo chmod -R 644 squid*
user@ubuntu:/var/log$ ls -l squid*
squid3:
ls: cannot access squid3/cache.log: Permission denied
ls: cannot access squid3/access.log: Permission denied
total 0
-????????? ? ? ? ?            ? access.log
-????????? ? ? ? ?            ? cache.log

squid-deb-proxy:
ls: cannot access squid-deb-proxy/store.log: Permission denied
ls: cannot access squid-deb-proxy/cache.log: Permission denied
ls: cannot access squid-deb-proxy/access.log: Permission denied
total 0
-????????? ? ? ? ?            ? access.log
-????????? ? ? ? ?            ? cache.log
-????????? ? ? ? ?            ? store.log

Bạn sẽ nhận thấy sau khi thay đổi quyền, có dấu chấm hỏi ở khắp mọi nơi. Tại sao chuyện này đang xảy ra? Về cơ bản tôi muốn đọc nhật ký truy cập để xem máy chủ squid-deb-proxy có nhận được yêu cầu từ máy khách hay không.

Câu trả lời:


38

Để xem các quyền của một thư mục, bạn cần chuyển -dcờ tới ls, như thế này:

ls -ld squid3

Để đọc một tập tin, quyền đọc của nó cần phải được thiết lập. Tuy nhiên, để đọc một thư mục và danh sách các tệp của nó, cả quyền đọc và quyền thực thi cần phải được đặt . Nếu không, bạn sẽ gặp phải những lỗi lạ như những lỗi bạn gặp phải.

Để đặt quyền đọc trên tệp và quyền đọc và thực thi trên thư mục theo cách đệ quy, hãy sử dụng lệnh này:

chmod -R a+rX directoryname

Đây là một lời giải thích về lệnh đó:

  • chmod là tên của lệnh, sử dụng để thay đổi quyền của tệp.
  • -Rlà cờ đệ quy. Nó có nghĩa là áp dụng lệnh này cho thư mục, và tất cả trẻ em của nó, và của trẻ em của nó, v.v.
  • a là viết tắt của tất cả: áp dụng các quyền này cho chủ sở hữu tệp, chủ sở hữu nhóm của tệp và tất cả người dùng khác.
  • + có nghĩa là thêm các quyền sau nếu chúng chưa được đặt.
  • r có nghĩa là sự cho phép đọc.
  • Xcó nghĩa là sự cho phép thực thi, nhưng chỉ trên các thư mục. Chữ xthường có nghĩa là quyền thực thi trên cả tệp và thư mục.

Thông tin thêm được tìm thấy trong trang dành cho chmodlệnhBiểu tượng trang .


1
Có điều gì sai khi sử dụngchmod -R 644 squid*
Người dùng đã đăng ký

4
@RegisteredUser: có. 644 là rw-r--r--, phù hợp cho các tập tin, nhưng không phải cho các thư mục. Các thư mục cũng cần phải có quyền thực thi, như thế này: rwxr-xr-xhoặc 755. Lệnh bạn đã đề cập sẽ hủy bỏ quyền thực thi trên tất cả các tệp và thư mục theo cách đệ quy, gây ra các lỗi này.
Flimm

3

Tôi cũng có vấn đề này. Tôi không thể làm chmod hoặc chown trên tập tin. Tôi đã cố gắng để xóa nó. Hóa ra việc cố gắng xóa nó (lệnh rm) đã gây ra vấn đề. Các kicker là tập tin được chia sẻ giữa hai hệ thống khác nhau . Khi tôi đóng tệp trong hệ thống khác, tệp sẽ biến mất. Dưới đây là chi tiết về cấu hình của tôi. hệ thống 1: Máy khách Ubuntu Ubuntu. Đây là nơi tôi đã thực hiện lệnh rm. hệ thống 2: máy chủ Windows 7. Đây là nơi tôi đã mở tệp bằng cách sử dụng lệnh less (trong cygwin, không nhất thiết phải liên quan).


2

Như bạn đã nói rằng mục tiêu của bạn là đọc /var/log/squid/access.log, giải pháp tốt nhất của bạn là gõ sudo less /var/log/squid/access.log, từ đó tránh được những rắc rối liên tục.

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.