এটি এখানে আমার প্রথম প্রশ্ন।
আমি উবুন্টু 12.04 চালাচ্ছি এবং কম্পিউটারের ইউএসবি পোর্ট অ্যাক্সেস করার জন্য একটি অ্যাপ্লিকেশন পেয়েছি। আমার উবুন্টু ব্যবহারকারী নাম হল Gadu । আজ অবধি, আমি সর্বদা নিম্নলিখিত কমান্ডটি ব্যবহার করেছি:
sudo ./gadumaster
এবং আমার পাসওয়ার্ড প্রবেশ করিয়েছে (গ্যাডুমাস্টার হ'ল ইউএসবি অ্যাক্সেস করার অ্যাপ্লিকেশন)। এই কমান্ডটি কাজ করছিল, পাশাপাশি ইউএসবি থেকে কিছু নির্দিষ্ট বাহ্যিক অবস্থা দেখা দিলে আমার ল্যাপটপ পুনরায় চালু করতে সিস্টেম ফাংশন রিবুট () এ কল করা হত।
আজ আমাকে জিনিসগুলি পরিবর্তন করতে হয়েছিল তাই ল্যাপটপ শুরু হওয়ার পরে এই অ্যাপ্লিকেশনটি স্বয়ংক্রিয়ভাবে চলে। অতএব আমি একটি স্ক্রিপ্ট ফাইল প্রস্তুত করেছি, এবং কীভাবে স্ক্রিপ্টে পাসওয়ার্ডটি পাস করব সেই উপায় অনুসন্ধান করেছি। কয়েকটি নিবন্ধ পড়ার পরে আমি সিদ্ধান্ত নিয়েছি যে এটি আমার ডায়ালআউট গোষ্ঠীতে যুক্ত করে ইউএসবিতে অ্যাক্সেসের অনুমতি দেবে :
sudo অ্যাডুজার গডু ডায়ালআউট
রিবুট করার পরে আমি কেবল টাইপ করে আমার অ্যাপ্লিকেশন শুরু করতে সক্ষম হয়েছি:
./gadumaster
এটি দুর্দান্ত ছিল তবে আমার পুনরায় বুট () ফাংশন সক্ষম করার জন্য একটি উপায় প্রয়োজন needed নিম্নলিখিত আজ্ঞাটি আর কাজ করছে না তা বুঝতে পেরে আমার অবাক হওয়ার কী ছিল:
sudo ./gadumaster
হ্যাঁ, সুডো সহ অ্যাপ্লিকেশনটি কার্যকর করা আমাকে ইউএসবিতে সংযোগ করার সময় "অনুমতি অস্বীকার" ত্রুটি দেয়! নোট করুন যে sudo ছাড়া এটি কাজ করে!
আমার ব্যবহারকারীকে ডায়ালআউট গোষ্ঠী থেকে সরানোর চেষ্টা করেছেন:
sudo ডেলুজার গাদু ডায়ালআউট
রিবুট করার পরে আমি এমন পরিস্থিতিতে পড়েছিলাম যে সুডো এবং সুডো কমান্ড ছাড়া উভয়ই কাজ করছে না! এমনকি রিবুট () ফাংশনও কোনও পরিস্থিতিতে কাজ করছে না।
আমার উবুন্টুতে কি ভুল তা কেউ বর্ণনা করতে পারেন? অনেক আগে থেকেই ধন্যবাদ।
/ ইত্যাদি / sudoers ফাইল:
#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults env_reset
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
# Host alias specification
# User alias specification
# Cmnd alias specification
# User privilege specification
root ALL=(ALL:ALL) ALL
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
# See sudoers(5) for more information on "#include" directives:
#includedir /etc/sudoers.d
ডিরেক্টরি /etc/sudoers.d এ কেবল একটি README ফাইল রয়েছে।
ত্রুটি দেখানো হয়েছে:
ওপেনকম () ব্যর্থ হয়েছে: অনুমতি অস্বীকৃত।
নিম্নলিখিত কোড স্নিপেটের মাধ্যমে মুদ্রিত - গাদুমাস্টার অ্যাপ্লিকেশনটির অংশ (পারের () ফাংশন দেখুন):
bool SerialComm::OpenComm(const char* pszCommport, int nBaudRate, eParity Parity, eStopbits Stopbits)
{
// pszCcommport: /dev/ttyUSB0
m_fdSerial = open(pszCommport, O_RDWR | O_NOCTTY | O_NDELAY);
if(m_fdSerial < 1)
{
m_fdSerial = 0;
perror("OpenComm() failed: ");
return false;
}
fcntl(m_fdSerial, F_SETFL, 0);
if(nBaudRate == 9600)
nBaudRate = B9600;
else if(nBaudRate == 19200)
nBaudRate = B19200;
else if(nBaudRate == 38400)
nBaudRate = B38400;
else
{
// OpenComm(): Unsupported baudrate!
return false;
}
// setting baud rates and stuff
struct termios options;
tcgetattr(m_fdSerial, &options);
m_OriginalOptions = options;
cfsetispeed(&options, nBaudRate);
cfsetospeed(&options, nBaudRate);
options.c_cflag |= (CLOCAL | CREAD);
// next 4 lines setting 8N2
options.c_cflag &= ~PARENB;
options.c_cflag |= CSTOPB;
options.c_cflag &= ~CSIZE;
options.c_cflag |= CS8;
// raw input
options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);
// disable software flow control; disable NL->CR conversion; enable marking of Frame/Parity errors
options.c_iflag &= ~(IXON | IXOFF | IXANY | INLCR | ICRNL | PARMRK);
options.c_oflag &= ~(OPOST | ONLCR);
tcsetattr(m_fdSerial, TCSANOW, &options);
tcsetattr(m_fdSerial, TCSAFLUSH, &options);
//required to make flush work, for some reason
sleep(2);
tcflush(m_fdSerial, TCIOFLUSH);
return true;
}
দ্রষ্টব্য: রহস্যটি কেন sudo ./gadumaster আর কাজ করছে না। এটি কী হতে পারে যে সুপারভাইজারের জন্য / dev / ttyUSB0 কে কোনও অনুমতি দেওয়া হয়নি?
/etc/sudoers
ফাইল সামগ্রী, ঠিক ত্রুটি আপনি পেয়েছিলেন এবং গাদুমাস্টার স্ক্রিপ্ট?