LD_LIBRARY_PATH স্ক্রিন দ্বারা আনসেট করা হয়নি


13

screenব্যাশে চালানো চলকটি LD_LIBRARY_PATH মুছে দেয়। আমি কিছু পড়া করেছি এবং মনে হচ্ছে এটি প্রত্যাশিত আচরণ, তবে আমার এটির কাছাকাছি হওয়া দরকার।

কর্মক্ষেত্রটি LD_LIBRARY_PATH ঘোষণাটি যুক্ত করছে ~/.bashrc। আমার ক্ষেত্রে, শেলটি আরম্ভ করার সময় এবং যখন আমি পর্দা প্রার্থনা করি তার মধ্যে এলডি_লিবিআরএইপিএটিএইচ অনেক পরিবর্তন হয়ে যায়, সুতরাং এলডি_লিবারি_প্যাথের বর্তমান মানটি screenসেশনে নেওয়া দরকার।


রান স্ক্রিনের আগে আপনার কি এলডি_ক্লিবিআরআরএইপথ রফতানি হয়েছে?
kinnou02

সুপারসার প্রশ্ন।
করলফিলিপ

দুঃখিত, আমি কি কোনওভাবে এটিকে সরাতে পারি, বা আমি মুছে ফেলা এবং পুনরায় পোস্ট করতে পারি?

আপনি যদি পাঁচটি কাছাকাছি ভোট পেয়ে থাকেন তবে এটি স্বয়ংক্রিয়ভাবে সেখানে গণ্ডগোল হবে। আর একটা যেতে হবে!
থমাস

উত্তর:


14

screenপরিবেশ পরিবর্তনশীল আনসেট করে না; এটি লিনাক্স নিজেই অপসারণ করেছে।

বেশিরভাগ সিস্টেমে /usr/bin/screenএক্সিকিউটেবলটি গ্রুপের জন্য সেটগ্রিড বিট দিয়ে ইনস্টল করা হয় utmp, যাতে utmpডাটাবেস পরিবর্তন করতে সক্ষম হয় । এটি সকেট ডিরেক্টরিতে অ্যাক্সেস নিয়ন্ত্রণ করতে সেটগিড ব্যবহার করে ( /var/run/screen/)।

লিনাক্স, যখন একজন উপর setuid (অথবা setgid ) প্রোগ্রাম দৌড়ে এটা নির্দিষ্ট এনভায়রনমেন্ট ভেরিয়েবল পাবেন না (তত্সহ LD_LIBRARY_PATH, অন্যান্য LD_*ভেরিয়েবল, এবং HOSTALIASESঅন্যথায় আপনি একটি ছোট লাইব্রেরী এবং কৌতুক লিখতে পেরেছিলেন:), অর্ডার সম্ভব হামলা পয়েন্ট কমানোর জন্য suবা sudoআপনার "উন্নত" ফাংশনগুলিকে সেভাবে কল করার জন্য।


আপনি সেটগিড বিটটি সরিয়ে ফেলতে পারেন screenতবে আপনাকে সকেট ডিরেক্টরিটি প্রত্যেকেই পুরোপুরি অ্যাক্সেসযোগ্য করতে হবে (মোড 0777)। এটি কোনও সুরক্ষা ঝুঁকিপূর্ণ হওয়া উচিত নয়, screenপাশাপাশি আক্রমণকারীটির ইউআইডিও পরীক্ষা করে।

তবে আপনার ডাটাবেসকে বিশ্ব-লিখনযোগ্য করা উচিত নয়utmp


(দ্রষ্টব্য: পরিবেশের ভেরিয়েবলগুলি কার্নেল দ্বারা সরানো হয়েছে কিনা, বা ld-linux.so, অথবা glibc রানটাইম দ্বারা সরানো হয়েছে কিনা তা আমি নিশ্চিত নই))
ব্যবহারকারী ১1686

সত্যই কাজ করে। এগুলি হ'ল আদেশগুলি করা দরকার: chgrp root $(which screen)এবং chmod 777 /var/run/screen। আপনি এই ছোট বাশ স্ক্রিপ্ট দিয়ে পরীক্ষা করতে পারেন: while true; do echo $LD_LIBRARY_PATH; sleep 2; done আপনি দেখতে পাবেন যে পথটি সফলভাবে প্রদর্শিত হয়েছে। ধন্যবাদ গুরুতরতা।
লেপ

7

আপনার মধ্যে .screenrc, আপনি setenvপর্দার পরিবেশে একটি মান সেট করতে কমান্ডটি ব্যবহার করতে পারেন ।

setenv LD_LIBRARY_PATH $LD_LIBRARY_PATH_SCREEN

আপনার শেল শুরুর আগে এটি সেট করা আছে। অবশ্যই LD_LIBRARY_PATH_SCREENআপনি স্ক্রিন শুরু করার আগে সেট করা দরকার।


1
মাধ্যাকর্ষণ উত্তর দেখুন - LD_LIBRARY_PATH এই প্রসঙ্গে একটি বিশেষ পরিবর্তনশীল। এমনকি যদি এটি কাজ করে (সেটেনভকে '=', বিটিডব্লিউ দরকার হয় না) তবে আমরা যে পরিবেশের পরিবর্তনশীলটি সেট করার চেষ্টা করছি তার নামকরণ করা খুব সহায়ক হবে না; প্রোগ্রামগুলি এখনও ক্যানোনিকাল নামটির দিকে তাকিয়ে থাকবে (দেখুন স্ট্যাকওভারফ্লো . com/ প্রশ্নগুলি/13974069/… )
অ্যান্ড্রু উড

সংশোধনের জন্য আমি সিনট্যাক্সটি ঠিক করেছিলাম এবং ভুলে গিয়েছিলাম যে পরিবেশ শুরুর পর্দায় আমার একটি ভিন্ন পরিবর্তনশীল ছিল। _SCREENকেউ আপনার রেসিন ফাইলে বা মোড়কের স্ক্রিপ্ট স্ক্রীনে শুরু হয় নির্ধারণ করা যাবে।
দ্রোজ

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.