Làm cách nào để đặt lại quyền truy cập thư mục về mặc định của chúng trong Ubuntu?


19

Gần đây tôi đã gõ lệnh

sudo chmod 777 -R /

sau đó một số thứ như

sudo -i

không hoạt động bình thường. Vì vậy, tôi tự hỏi nếu có bất kỳ cách nào tôi có thể thiết lập lại quyền truy cập thư mục về trạng thái ban đầu của họ?


Tôi không nghĩ linux nhớ các cài đặt cấp phép trước đó. Hãy thử tạo một tệp mới và xem nó cài đặt quyền gì.
thecoshman

Oh chờ đã, tôi thấy những gì bạn đã làm ở đó. Đây có lẽ là một tình huống cài đặt lại. Chỉ cần sao lưu dữ liệu của bạn, ghi chú những ứng dụng bạn đã cài đặt. Hãy vui vẻ, tại sao không thử 10,4! (tên hay nhất từng btw ... điều đó có nghĩa là gì?)
thecoshman

Tôi dám cho bạn tìm một người chưa làm điều chính xác đó: D đó là một tình huống rất khó khăn. bạn có thể sửa nó, thử câu trả lời của jlovi nhưng sẽ mất thời gian và công sức và nó sẽ khiến bạn nản lòng. chỉ cần cài đặt lại và có được nó với. Và không bao giờ sử dụng sudo chmod trừ khi bạn biết bạn đang làm gì.
Jack Mayerz

Câu trả lời:


17

thể trở lại từ tình huống lộn xộn này.

Tôi đã chạy lại cùng loại về vấn đề (một số lỗi trong kịch bản tôi đang viết) và đã giải quyết nó, nhưng bạn cần phải nhờ một số chuyên gia giúp đỡ. Hãy thật thận trọng!

Đầu tiên, tình huống của tôi dễ giải quyết hơn vì tôi có hệ thống khởi động kép (Ubuntu và cài đặt Fedora cũ của tôi), nhưng chạy HĐH từ CD / DVD hoặc khóa USB cũng sẽ làm điều tương tự.

MPOINT=/mount/ubuntu

Đầu tiên tôi gắn hệ thống tệp của mình như thế này (đừng quên tạo các điểm gắn kết):

mount /dev/ubuntu/root $MPOINT
mount /dev/ubuntu/home $MPOINT/home

Sau đó, tôi đã chạy lệnh sau (vấn đề của tôi chỉ nằm ở một vài thư mục quan trọng) để sao chép các quyền từ hệ thống đang chạy sang hệ thống lộn xộn (thực tế, trong trường hợp của tôi, tôi đã cài đặt một hệ thống Ubuntu trong Virtual Box trong fedora và có quyền ở đó):

find /etc /usr /bin /sbin -exec stat --format "chmod %a \"${MPOINT}%n\"" {} \; > /tmp/restoreperms.sh

Và sau đó tôi chạy tập lệnh restoreperms.sh.

Tôi đã có thể khởi động lại trên Ubuntu.

Nội dung của restoreperms.sh sẽ giống như:

(...)
chmod 755 /mount/ubuntu//etc/ppp
chmod 755 /mount/ubuntu//etc/ppp/ipv6-up
chmod 2750 /mount/ubuntu//etc/ppp/peers
chmod 640 /mount/ubuntu//etc/ppp/peers/provider
chmod 755 /mount/ubuntu//etc/ppp/ipv6-up.d
chmod 777 /mount/ubuntu//etc/ppp/resolv.conf
(...)

Tôi đã không kiểm tra nó nhưng nó cũng phải hoạt động cho chủ sở hữu và nhóm chủ sở hữu. Cái gì đó như:

find /etc /usr /bin -exec stat --format 'chown %U:%G ${MPOINT}%n' {} \; > /tmp/restoreperms.sh^

(...)
chown root:root /mount/ubuntu//etc/obex-data-server/imaging_capabilities.xml
chown root:root /mount/ubuntu//etc/obex-data-server/capability.xml
chown root:dip /mount/ubuntu//etc/ppp
chown root:root /mount/ubuntu//etc/ppp/ipv6-up
chown root:dip /mount/ubuntu//etc/ppp/peers
chown root:dip /mount/ubuntu//etc/ppp/peers/provider
chown root:root /mount/ubuntu//etc/ppp/ipv6-up.d
chown root:root /mount/ubuntu//etc/ppp/resolv.conf
(...)

Tất nhiên, bạn phải lưu ý ở đây, rằng UID và GID giống nhau trên cả hai hệ thống, nhưng đối với người dùng và nhóm liên quan đến hệ thống, điều này không phải là một vấn đề.

Chỉnh sửa:

Ngoài ra, chủ sở hữu cài đặt sẽ vô hiệu hóa các cờ SGID và SUID , điều này gây ra các vấn đề kỳ lạ (Ví dụ: bạn sẽ không thể thực hiện sudo trừ khi được phép là 4755). Bạn phải và chỉ nên đặt quyền SAU khi thiết lập chủ sở hữu. NÓI TIẾT KIỆM thông tin cấp phép tập tin cùng với thông tin chủ sở hữu.

Rk:

  1. Một điều quan trọng cho việc này là giữ cho đĩa cài đặt được đồng bộ hóa với phiên bản bạn đang sử dụng hoặc ít nhất là hoạt động với phiên bản Ubuntu hiện tại.
  2. Bây giờ, tôi có các lệnh này trong một cronjob, chạy mỗi ngày (có thể là vài tuần) để giữ thông tin đó. Nó sẽ làm cho giải pháp dễ dàng hơn vào lần tới, nhưng, tất nhiên, như tôi có điều này bây giờ, nó sẽ không bao giờ xảy ra nữa. ;-) Một cái gì đó như thế này:

    0 12 * * * /usr/bin/find / -exec /usr/bin/stat --format="/bin/chmod %a %n" {} \; |/bin/bzip2 -c > /tmp/restore_chmod.$(/bin/date +%w).sh.bz2

    0 13 * * * /usr/bin/find / -exec /usr/bin/stat --format="/bin/chown %U:%G %n" {} \; |/bin/bzip2 -c > /tmp/restore_chown.$(/bin/date +%w).sh.bz2

Lệnh bên phải (kết hợp) có nhiều thứ như:

`/usr/bin/find / -exec /usr/bin/stat --format="[ ! -L {} ] && /bin/chmod %a %n" {} \; -exec /usr/bin/stat --format="/bin/chown -h %U:%G %n" {} \; |/bin/bzip2 -c > /tmp/restore_fileperms.$(/bin/date +%w).sh.bz2`

Lưu ý rằng có thể cần phải có sự chăm sóc bổ sung để tính đến các dấu ngoặc đơn trong tên tệp (ví dụ: theo địa phương) và chown có thể âm thầm hủy cài đặt các bit setuid và setgid được đặt bởi chmod. Trong trường hợp thứ hai, sẽ phá vỡ, giả sử, / bin / su và / usr / bin / sudo, bạn có thể cần phải trao đổi thứ tự các mệnh đề exec ở trên.


chỉ là một câu trả lời xuất sắc . Tôi đã chỉ về phía nó trong Ask Ubuntu
Private

Chỉ là một giải pháp hoàn hảo cho tôi!

2

Sau khi khôi phục sudo hoặc chọn chế độ khôi phục khi khởi động

Có thể khôi phục lại toàn bộ hệ thống sử dụng debsums rằng verifiy vẹn tập tin và cho phép.

từ trang người đàn ông:

apt-get install --reinstall $(dpkg -S $(debsums -c) | cut -d : -f 1 | sort -u)

Cài đặt lại các gói với các tập tin thay đổi

hoặc giới hạn trong một đường dẫn cụ thể, ví dụ /usr::

apt-get install --reinstall $(dpkg -S $(debsums -c | grep -e ^/usr ) | cut -d : -f 1 | sort -u)

hoặc giới hạn trong một tập hợp nhiều đường dẫn, ví dụ: /sbin /etc /var

apt-get install --reinstall $(dpkg -S $(debsums -c | grep -e ^/etc -e ^/sbin -e ^/var  ) | cut -d : -f 1 | sort -u)

Debsums thực sự kiểm tra các quyền? Tôi đã thử chmod a-x /bin/pingdebsums -csẽ không báo cáo tập tin đó.
reox

0

Luôn luôn xem những gì bạn chạy như sudo.

Chuỗi này giải thích rằng bạn có thể đặt lại một số quyền theo cách thủ công và một tập lệnh ở đó giúp với điều này, nhưng vẫn là một công việc lớn. Thay vì làm theo các mẹo trong guồng để lưu các gói đã cài đặt (đánh dấu) và cài đặt lại HĐH, và áp dụng các đánh dấu gói đã lưu của bạn để lấy lại ứng dụng của bạn.


0

Theo tôi biết, chỉ các gói System V và RPM cung cấp một lệnh để sửa chữa các quyền của tập tin. Trên Hệ thống V (Solaris), nó là pkgchk, với RPM là tốc độ vòng / phút.

Thật không may, dường như không có lệnh nào tồn tại cho các gói Debian / Ubuntu - nhưng tôi có thể sai ở đây.

Nhưng ngay cả với sự trợ giúp của các lệnh này, việc đưa hệ thống của bạn trở lại trạng thái lành mạnh không phải là một nhiệm vụ tầm thường và bằng cách sửa chữa nó, bạn có thể dễ dàng gây ra tác hại mới cho hệ thống của mình - nếu bạn không cẩn thận.

Khác với Joseph nói, bạn không phải là người đầu tiên và bạn sẽ không phải là người cuối cùng nhập lệnh như vậy. Nhưng riêng ý tưởng, để thay đổi quyền truy cập tệp thành 777 trên hệ thống Unix, là một dấu hiệu mạnh mẽ cho thấy bạn không có nhiều kinh nghiệm với loại hệ thống này. Điều tốt nhất bạn có thể làm trong tình huống này là sao lưu những gì bạn sẽ cần một lần nữa (thư mục chính, tệp cấu hình, tệp thư?) Và thử cài đặt mới.

Và bạn nên rất, rất cẩn thận, khi bạn khôi phục các tập tin sao lưu - bị hỏng.

Chúc may mắn!

Tái bút: Tôi chỉ đang tự hỏi loại vấn đề nào bạn muốn giải quyết?


0

Wow, bạn đã giết nó. Nó đã chết rồi! Hãy thử đăng nhập và sử dụng máy làm root (vì bạn đã bật nó), sau đó thay đổi thành viên nhóm của root thành người dùng. Điều này có thể hoặc không thể hoạt động vì tôi chưa bao giờ thử nó trước đây nhưng nó đáng để thử.


0

Bạn không thể hoàn tác một chmodhoạt động; ít nhất là không phải trong ý nghĩa quay trở lại một thiết lập trước đó, đó là những gì tình huống này yêu cầu. Có thể cho rằng, bạn có thể hoàn tác một chmodthao tác, bằng cách đưa chmodtừng tệp và thư mục trở về chế độ ban đầu của nó, nhưng chúng không giống nhau; xác định các chế độ ban đầu là khó khăn (như được thảo luận trong các câu trả lời khá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.