আরও দেখুন:
কেন "chmod -R 777 /" ধ্বংসাত্মক?
আমি /
নির্বাহ করে রুট ডিরেক্টরিতে পুনরাবৃত্তভাবে ফাইলের অনুমতিগুলি পরিবর্তন করেছি sudo chmod -R / 777
এবং তার পরে আমার সিস্টেমটি বুট হবে না (আমি প্রচুর "অনুমতি অস্বীকৃত" ত্রুটি পাচ্ছি)।
সাহায্য করুন.
আরও দেখুন:
কেন "chmod -R 777 /" ধ্বংসাত্মক?
আমি /
নির্বাহ করে রুট ডিরেক্টরিতে পুনরাবৃত্তভাবে ফাইলের অনুমতিগুলি পরিবর্তন করেছি sudo chmod -R / 777
এবং তার পরে আমার সিস্টেমটি বুট হবে না (আমি প্রচুর "অনুমতি অস্বীকৃত" ত্রুটি পাচ্ছি)।
সাহায্য করুন.
উত্তর:
আপনি একটি হারিয়ে যাওয়া কারণ খুঁজছেন। আপনার প্রয়োজনীয় ডেটা সংরক্ষণ করুন এবং অপারেটিং সিস্টেমটি পুনরায় ইনস্টল করুন।
/etc
, /var/www
ওয়েব সার্ভারের সামগ্রী এবং ডাটাবেস। অন্য একটি হার্ড ড্রাইভ ধরুন, আপনার প্রাথমিক হিসাবে এটি সক্ষম করুন এবং ইনস্টল করুন। আপনি এটি স্থানান্তর না করা পর্যন্ত এটি আপনার অন্যান্য ড্রাইভটিকে ব্যাকআপ হিসাবে সংরক্ষণ করে।
আমি জানি ডিপিকিজি ডেটাবেসগুলিতে অনুমতি জমা করে এবং আমি নিম্নলিখিত স্ক্রিপ্ট গুগল পেয়েছি যা সাহায্য করতে পারে।
সম্পাদনা: আমি আসলে স্ক্রিপ্টটিতে একটি তাত্ক্ষণিকভাবে নজর রেখেছিলাম এবং দেখে মনে হচ্ছে যেন এটি কিছুটা যাদু অনুপস্থিত যা পার্স থেকে মোডে চলেছে যেমন dpkg -c উদাহরণস্বরূপ "-rw-r - r--" দেয় তবে আপনি চান 0644, আমি এখনই কাজ করছি তাই এই মুহুর্তে রূপান্তরটি করার আমার কাছে সময় আছে কিনা তা নিশ্চিত নয় তবে অন্য কেউ যদি এই বিটটি যোগ করতে না যায় তবে আমি পরে ফিরে আসতে পারি।
এখানে একটি স্ক্রিপ্ট রয়েছে যা দেখতে আকর্ষণীয়
#!/bin/bash
# Restores file permissions for all files on a debian system for which .deb
# packages exist.
#
# Author: Larry Kagan <me at larrykagan dot com>
# Since 2007-02-20
ARCHIVE_DIR=/var/cache/apt/archives/
PACKAGES=`ls $ARCHIVE_DIR`
cd /
function changePerms()
{
CHOWN="/bin/chown"
CHMOD="/bin/chmod"
PERMS=$1
OWN=`echo $2 | /usr/bin/tr '/' ':'`
PATHNAME=$3
echo -e "$CHOWN $OWN $PATHNAME"
#`$CHOWN $OWN $PATHNAME`
#`$CHMOD $MODE $PATHNAME`
}
for PACKAGE in $PACKAGES;
do
echo -e "Getting information for $PACKAGE\n"
FILES=`/usr/bin/dpkg -c "${ARCHIVE_DIR}${PACKAGE}"`
for FILE in "$FILES";
do
FILE_DETAILS=`echo "$FILE" | awk '{print $1"\t"$2"\t"$6}'`
changePerms $FILE_DETAILS
done
done
এটা সম্ভব এই ধরনের একটি নোংরা পরিস্থিতি থেকে ফিরে আসা , সিস্টেম পুনরায় ইনস্টল ছাড়াই। ঠিক আছে, আপনার যদি দ্বৈত বুট সিস্টেম থাকে তবে একটি ইউএসবি কী বা ভাইরাসাল বাক্সে (বা তাই) নতুন করে নতুন সিস্টেমটি চালানো।
আমি আবার একই ধরণের ইস্যুতে দৌড়েছি (আমার লিখিত স্ক্রিপ্টের কিছু বাগ) এবং এটিকে সমাধান করেছি, তবে আপনাকে কিছু বিশেষজ্ঞের সাহায্য চাইতে হবে। খুব সাবধান!
প্রথমত, আমার পরিস্থিতি সমাধান করা সহজ ছিল কারণ আমার একটি দ্বৈত বুট সিস্টেম ছিল (উবুন্টু এবং আমার পুরাতন ফেডোরা ইনস্টল), তবে ইউএসবি কী (বা সম্ভবত কোনও সিডি / ডিভিডি) ব্যবহার করে সিস্টেমটি চালানো উচিত।
MPOINT = / mount / উবুন্টু
প্রথমে আমি আমার ফাইল সিস্টেমগুলি এটির মতো মাউন্ট করেছিলাম (মাউন্ট পয়েন্টগুলি তৈরি করতে ভুলবেন না): মাউন্ট / ডেভ / উবুন্টু / মূল $ এমপিওএনটি মাউন্ট / দেব / উবুন্টু / হোম $ এমপিইএনটি / হোম
তারপরে আমি চলমান সিস্টেম থেকে অগোছালো একটিতে অনুলিপি অনুলিপি করতে নিম্নলিখিত কমান্ডটি চালিয়েছি (আমার সমস্যাটি কেবল কয়েকটি - সমালোচনামূলক - ডিরেক্টরিগুলির মধ্যে ছিল) (আসলে আমার ক্ষেত্রে, আমি ফেডোরার অধীনে ভার্চুয়াল বক্সে একটি উবুন্টু সিস্টেম ইনস্টল করেছি এবং সেখানে অনুমতি পেয়েছে):
/ etc / usr / bin -exec stat - formatt "chmod% a {{MPOINT}% n" {} \; > /tmp/restoreperms.sh
এবং তারপরে আমি পুনঃস্থাপনা.শ স্ক্রিপ্টটি চালাই।
আমি আবার উবুন্টু বুট করতে সক্ষম হয়েছি।
পুনঃস্থাপনা.শ এর সামগ্রী এমন হবে:
(...)
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
(...)
আমি এটি পরীক্ষা করিনি তবে এটি অবশ্যই মালিক এবং মালিক গ্রুপগুলির জন্য কাজ করবে। কিছুটা এইরকম:
/ etc / usr / bin -exec stat - formatt '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
(...)
অবশ্যই, আপনাকে এখানে যত্ন নিতে হবে যে ইউআইডি এবং জিআইডি উভয় সিস্টেমে একই, তবে সিস্টেম সম্পর্কিত ব্যবহারকারী এবং গোষ্ঠীর ক্ষেত্রে এটি কোনও সমস্যা হওয়া উচিত নয়।
আর কে:
এর জন্য একটি গুরুত্বপূর্ণ বিষয় হ'ল আপনি যে সংস্করণটি ব্যবহার করছেন তার সাথে একটি ইনস্টল ডিস্ক সিঙ্ক্রোনাইজ করা বা কমপক্ষে বর্তমান উবুন্টু সংস্করণে কাজ করা। এখন, আমার কাছে এই আদেশগুলি ক্রোনজবগুলিতে রয়েছে, তথ্যটি চালিয়ে যাওয়ার জন্য প্রতিদিন চালানো (সপ্তাহ হতে পারে)। এটি পরবর্তী বারের সমাধানটিকে আরও সহজ করে দেবে তবে অবশ্যই আমার এখন যেমন রয়েছে, তা আর কখনও ঘটবে না। ;-) এটার মতো কিছু:
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
সম্পাদনা: লিঙ্কগুলি সমর্থন করার জন্য, সম্মিলিত কমান্ডটি হ'ল:
/usr/bin/find / -exec /usr/bin/stat --format="[ ! -L {} ] && /bin/chmod %a %n" {}
আমি উপর থেকে স্ক্রিপ্টটি পরিবর্তন করেছি এবং এটি দেখতে এরকম দেখাচ্ছে:
#!/bin/bash
# Restores file permissions for all files on a debian system for which .deb
# packages exist.
#
# Author: Larry Kagan <me at larrykagan dot com>
# Since 2007-02-20
ARCHIVE_DIR=/var/cache/apt/archives/
PACKAGES=`ls $ARCHIVE_DIR`
cd /
function changePerms() {
CHOWN="/bin/chown"
CHMOD="/bin/chmod"
PERMS=`echo $1 | sed -e 's/--x/1/g' -e 's/-w-/2/g' -e 's/-wx/3/g' -e 's/r--/4/g' -e 's/r-x/5/g' -e 's/rw-/6/g' -e 's/rwx/7/g' -e 's/---/0/g'`
PERMS=`echo ${PERMS:1}`
OWN=`echo $2 | /usr/bin/tr '/' '.'`
PATHNAME=$3
PATHNAME=`echo ${PATHNAME:1}`
# echo -e "CHMOD: $CHMOD $PERMS $PATHNAME"
# result=`$CHOWN $OWN $PATHNAME`
# if [ $? -ne 0 ]; then
# echo -e $result
# exit 123;
# fi
echo -e "CHOWN: $CHMOD $PERMS $PATHNAME"
result=`$CHMOD $PERMS $PATHNAME`
if [ $? -ne 0 ]; then
echo -e $result
fi
}
for PACKAGE in $PACKAGES;
do
if [ -d $PACKAGE ]; then
continue;
fi
echo -e "Getting information for $PACKAGE\n"
FILES=`/usr/bin/dpkg -c "${ARCHIVE_DIR}${PACKAGE}"`
for FILE in "$FILES";
do
#FILE_DETAILS=`echo "$FILE" | awk '{print $1"\t"$2"\t"$6}'`
echo "$FILE" | awk '{print $1"\t"$2"\t"$6}' | while read line;
do
changePerms $line
done
#changePerms $FILE_DETAILS
done
done
ব্লুবেনের সাথে সম্মত হোন, কোন ফাইল / ডিরেক্টরিতে কোন অনুমতি দরকার তা বিশ্লেষণ করার চেয়ে কেবল পুনরায় ইনস্টল করা দ্রুত হতে পারে। তবে যদি পুনরায় ইনস্টল করা কোনও বিকল্প না হয় তবে এখানে একটি ধারণা দেওয়া হয়েছে:
find / | xargs stat -c 'chmod %a "'%n'"' > /tmp/chmod.sh
chmod.sh
ভুল অনুমতি নিয়ে কম্পিউটারে ফাইলটি অনুলিপি করুনchmod +x /tmp/chmod.sh && /bin/bash /tmp/chmod.sh
আমার পোস্টে ERRATUM ব্যবহারকারী ব্যবহারকারী হিসাবে পোস্ট করা হয়েছে 100740: লিঙ্কগুলি সমর্থন করার জন্য, সম্মিলিত কমান্ডটি হ'ল:
/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
আপনি যদি এখনও চালু করতে পারেন তবে /usr/sbin/synaptic
এটি প্রায়শই স্থিরযোগ্য।
প্যাকেজগুলি স্থিতি অনুসারে বাছাই করুন (উপরে ইনস্টল করা প্যাকেজগুলি), ইনস্টল করা সমস্ত প্যাকেজ নির্বাচন করুন, ডান ক্লিক করুন এবং পুনরায় ইনস্টল নির্বাচন করুন। তারপরে আবেদন করুন, এটি dpkg
সেই প্যাকেজগুলির জন্য সমস্ত ফাইল পুনরায় নিষ্কাশনের অনুরোধ জানাবে । (আপনি কোনও স্থানীয় পরিবর্তন হারাবেন (তবে ফাইলের পরিবর্তনগুলি কনফিগার করবেন না)))
এটি যদিও সবকিছু ঠিক নাও পেতে পারে।
অন্য জিনিসটি আপনি যদি প্রবেশ করেন তবে আপনি প্রতিটি ইনস্টল করা প্যাকেজটির জন্য /var/cache
কল করতে পারেন dpkg -x <package name> /
, তারপরে কল করতে পারেন dpkg --reconfigure -a
। এছাড়াও, আপনি যদি উবুন্টু ব্যবহার করছেন তবে আপনি একটি ডিস্টিগ্রেড আপগ্রেড করতে পারেন যা প্রায়শই প্রচুর ত্রুটি সমাধান করে (ধরে নিবেন যে আপনি ইতিমধ্যে সর্বশেষতম প্রকাশে নেই)। সাধারণত যখন আমি এ জাতীয় ত্রুটিটি ঠিক করার চেষ্টা করছি তখন আমি এই সাধারণ সমাধানগুলি চেষ্টা করি এবং যদি তারা কেবল এটি আবার কাজ না করে, তবে পুনরায় ইনস্টল করার সময়।
লাইভ সিডি থেকে বুট করুন। তারপরে শেল শুরু করুন, তারপরে সুডো-এস। তারপরে chmod 777 / *, তারপরে chmod 600 / etc / passwd। init ব্যর্থ হলে কার্নেল আতঙ্কিত হবে যা ঘটবে যদি / lib / init স্ক্রিপ্টগুলি কার্যকর না করা হয়। লিলো লিনাক্স 1 এর জন্য একক ব্যবহারকারী মোডে বুট করুন এবং উপরে ব্যবহারকারী 102453 এর স্ক্রিপ্টটি চালান। এটি প্রম্পটে সিটেম বুট পায়। তবু এক্স চালানো দরকার।
755 এর অনুমতি নির্ধারণ করা আমার পক্ষে কাজ করেছিল।
তাই আগে পরীক্ষা করুন
root@ubuntu:/# cd /
root@ubuntu:/# ls -ld
অনুমতিগুলি "drwxr-xr-x" (755) হওয়া উচিত।