Đệ quy đệ quy bắt đầu với thư mục trên thư mục hiện tại


27

Tôi không thể đăng nhập vào tài khoản "quản trị viên" của mình và Alt+ Ctrl+ F1hiển thị tất cả các tệp của tôi được sở hữu bởi người dùng "chuẩn" của tôi. Lạ

Vì vậy, tôi cẩn thận thay đổi /home/adminvà làm một

sudo chown -R admin:admin *

(và .*quá).

Tuyệt quá.

Sau đó, tôi không thể đăng nhập với tư cách là người dùng "chuẩn" của mình và hóa ra tất cả các tệp trong /home/standardđó hiện thuộc sở hữu của "quản trị viên".

Khá hài hước. Tại sao chuyện này đang xảy ra?

sudo chown -R standard:standard /home/standard/*

đã làm điều tương tự, thay đổi /home/admincũng như /home/standard.

Tôi bối rối hơn bình thường vì tôi đã cố nâng cấp lên 15.04 và điều đó đã làm hỏng máy tính của tôi rất nhiều vì vậy tôi sẽ đặt lại mọi thứ với 14.04, xin hãy kiên nhẫn với tôi.


Có lẽ một là một liên kết tượng trưng cho người khác? những gì hiện ls -l /hometiếng nói?
Steeldo

Câu trả lời:


35

Vấn đề này được gây ra bởi vì bạn đã chạy:

sudo chown -R admin:admin .*

Chúng tôi biết rằng .chỉ ra thư mục hiện tại và ..chỉ ra thư mục mẹ. Khi bạn chạy lệnh với .*, điều đó chỉ có nghĩa là khớp với bất kỳ tệp ẩn nào trong thư mục hiện tại (nêu rõ .), chính thư mục hiện tại ( .), thư mục mẹ ( ..). Đơn giản chỉ cần đặt bất cứ điều gì sau .( *có nghĩa là 0 hoặc nhiều ký tự). Kết quả là thư mục cha cùng với tất cả của nó thư mục con được chown-ed để admin:admin.

Nhìn vào bài kiểm tra này:

test$ ls -al
drwxrwxr-x 4 foo foo 4096 Jun  3 07:15 .
drwxrwxr-x 4 foo foo 4096 Jun  2 18:06 ..
drwxrwxr-x 2 foo foo 4096 Jun  3 07:15 egg
drwxrwxr-x 2 foo foo 4096 Jun  3 07:12 spam

$ sudo chown -R bar:bar spam/.*

test$ ls -al
drwxrwxr-x 4 bar  bar  4096 Jun  3 07:15 .
drwxrwxr-x 4 foo  foo  4096 Jun  2 18:06 ..
drwxrwxr-x 2 bar  bar  4096 Jun  3 07:15 egg
drwxrwxr-x 2 bar  bar  4096 Jun  3 07:12 spam

Để trở lại, bạn cần phải quay lại chowncác thư mục bị ảnh hưởng.

Tôi không thực sự chắc chắn kế hoạch của bạn là gì, nhưng đây là một số ý tưởng:

  • Đối với chownbất kỳ thư mục đệ quy (bao gồm các tệp ẩn):

    sudo chown -R foo:foo /spam/egg/
    
  • Để chownchỉ các tệp (bao gồm các tệp ẩn) trong thư mục đó (không phải chính thư mục):

    (shopt -s dotglob && sudo chown -R foo:foo egg/*)
    
  • Để chownchỉ các tệp không bị ẩn (không có thư mục chính):

    sudo chown -R foo:foo egg/*
    

Cảm ơn bạn, tôi hiểu rồi ... duh; P Vẫn không biết tại sao chủ sở hữu thay đổi ngay từ đầu trừ khi nó liên quan đến Grub gây ra lỗi cho tôi và làm hỏng chương trình cài đặt 14.04 trên tôi. Người dùng tiêu chuẩn của tôi là người đầu tiên tôi tạo và sau đó tôi đã hạ cấp cái đó và tạo một cái mới.
DavidP

@DavidP Tôi không rõ bạn đang nhận được gì ..
heemayl

3

Tôi nghĩ đó là tham số ". *" Cho các tệp; phù hợp với mọi thứ bắt đầu bằng ".", bao gồm cả "." các tập tin "..". ".." là thư mục mẹ, bao gồm mọi thứ bên dưới nó.

Cách tốt nhất là sao lưu một thư mục và chỉ định thư mục thực tế bạn muốn thay đổi (/ home / admin).

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.