एक सामान्य उपयोगकर्ता के रूप में अपडेटेड कमांड का उपयोग कैसे करें?


10

locateआदेश लिनक्स पर बहुत उपयोगी उपकरण है, लेकिन यह केवल जड़ लगता चला सकते हैं updatedbआदेश जो बहुत इसका इस्तेमाल करने unconvinent है। तो अपडेटेड कमांड चलाने के लिए साधारण उपयोगकर्ता को निजीकरण करने के लिए कैसे करें?

updatedb कमांड का पता लगाने के लिए db का उपयोग करने के लिए कमांड का उपयोग होता है।

लेकिन सामान्य उपयोगकर्ता के रूप में अद्यतन करने का प्रयास करते समय निम्न त्रुटि संदेश है:

[mirror@home code]$ updatedb
updatedb: can not open a temporary file for `/var/lib/mlocate/mlocate.db'

या:

updatedb -o db
updatedb: can not change group of file `/var/lib/gforge/chroot/home/users/bigmeow/tmp/db.uhEZFQ': Operation not permitted

जवाबों:


17

इस आदेश को संपादित करें:

updatedb --require-visibility 0 -o ~/.locate.db

"अपडेटेड (8)" से:

-l, --require-visibility FLAG

जनरेट डेटाबेस में फ़्लैग करने के लिए ' रिपोर्ट करने से पहले फ़ाइल दृश्यता की आवश्यकता है ' सेट करें ।

यदि FLAG 0 या नहीं है, या यदि डेटाबेस फ़ाइल "अन्य" द्वारा पठनीय है या यह स्लोकेट के स्वामित्व में नहीं है, तो पता लगाएं (1) डेटाबेस प्रविष्टियों को आउटपुट करता है, भले ही उपयोगकर्ता चल रहा पता (1) आवश्यक निर्देशिका को नहीं पढ़ सके। डेटाबेस प्रविष्टि द्वारा वर्णित फ़ाइल का पता लगाने के लिए।

यदि FLAG 1 या हाँ (डिफ़ॉल्ट) है, तो (1) इनवॉइस उपयोगकर्ता को रिपोर्ट करने से पहले प्रत्येक प्रविष्टि की मूल निर्देशिकाओं की अनुमतियों की जाँच करें। फ़ाइल के अस्तित्व को अन्य उपयोगकर्ताओं से वास्तव में छुपाने के लिए, डेटाबेस समूह को धीमा करने के लिए सेट किया गया है और डेटाबेस अनुमतियाँ उपयोगकर्ताओं को डेटाबेस का पता लगाने (1) के अलावा अन्य साधनों का उपयोग करके डेटाबेस को पढ़ने से रोकती हैं, जो सेट-जीडी स्लोकैट है।

ध्यान दें कि दृश्यता ध्वज की जांच केवल तभी की जाती है जब डेटाबेस स्लोकेट के स्वामित्व में हो और यह "अन्य" द्वारा पठनीय न हो।


आप समझाते हैं कि --require-visibilityझंडा क्या है ... लेकिन शायद आप इसके बारे में थोड़ा सा समझा सकें? जैसे कि क्यों नहीं @xaizek कर रहा है और डेटाबेस को उस स्थान पर उत्पन्न करता है जिसे आपके उपयोगकर्ता के पास --require-visibilityध्वज का उपयोग किए बिना अनुमति है ?
ट्रेवर बॉयड स्मिथ

बाद में मैन पेज पर मेरे प्रश्न का उत्तर है:SECURITY Databases built with --require-visibility no [tbs: or 0] allow users to find names of files and directories of other users, which they would not otherwise be able to do.
ट्रेवर बॉयड स्मिथ

3

आप केवल -oतर्क के साथ घर में डेटाबेस बना सकते हैं updatedb:

updatedb -o ~/.locate.db

और इसे slocateइस तरह से उपयोग करें:

slocate --database=~/.locate.db <pattern>

आप शायद के लिए एक उपनाम परिभाषित करना चाहते हैं slocate --database=~/.locate.db


1
वास्तव में भी विकल्प के साथ, मैं असफल रहा, क्यों? updatedb -ओ dbdb updatedb: फ़ाइल `/home/mirror/tmp/dbdb.zwHn1W 'का समूह नहीं बदल सकते: ऑपरेशन नहीं की अनुमति दी
hugemeow

1
@hugemeow यकीन नहीं होता कि ऐसा क्यों होता है। हो सकता है कि गैर-मानक विकल्पों के साथ आईना / दर्पण / tmp लगाया गया था, जिसने समूह को बदलने के लिए अपडेट किया था। यद्यपि यह xaizek:usersस्वामी के साथ डेटाबेस फ़ाइल बनाता है : मेरे लिए समूह जोड़ी, इसलिए समूह डिफ़ॉल्ट एक है। आप /etc/updatedb.confफ़ाइल में विकल्प भी देख सकते हैं ।
xaizek

क्या मुझे पता लगाने के बजाय धीमे का उपयोग करना होगा? शत-प्रतिशत पर नहीं मिल सकता है ...
hugemeow

1
@hugemeow slocateपुराने का अधिक सुरक्षित संस्करण है locate। मुझे लगता है कि सेंटोस को slocateनाम के साथ स्थापित करना चाहिए था locate। वैसे भी, आपके मामले में कोई मतभेद नहीं होना चाहिए, और मूल रूप से अधिकांश संभावित मामलों में (स्लैकवेयर locateकेवल एक प्रतीकात्मक लिंक है slocate)।
xaizek

1
@hugemeow यह लिखा है कि mlocateतेज होना चाहिए, लेकिन अभी भी साथ संगत है slocate। मुझे यकीन नहीं है अगर यह कारण है। यदि आप कोशिश slocateनहीं करना चाहते हैं, तो कौन सी साइट काम नहीं कर रही है, स्लैकवेयर मिरर में से किसी एक से डाउनलोड करें, उनमें पैकेज के स्रोत शामिल हैं: यहां देखें
xaizek

1

यहां संपूर्ण समाधान के लिए सभी चरण दिए गए हैं (सेंटोस 6.5 में परीक्षण किए गए)

1) डीबी उत्पन्न करें:

updatedb --require-visibility 0 -o ~/.locate.db

2) db का उपयोग करें:

locate --database=/full/path/to/.locate.db (does not work with ~)
or
locate --database=.locate.db

3) एक उपनाम बनाएँ:

alias mylocate='locate --database=/full/path/to/.locate.db'

4) अपने लोकेल डब का उपयोग करें:

mylocate <my pattern>

के $HOMEबजाय का उपयोग करें ~, या बस से छुटकारा =। निम्नलिखित में से दोनों काम करेंगे: locate --database ~/.locate.dbया locate --database=$HOME/.locate.db। इस सूत्र को देखें: stackoverflow.com/questions/11587343/…
ardnew
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.