/ Dev / ttyUSB0 এবং sudo এ অ্যাক্সেস করুন


8

এটি এখানে আমার প্রথম প্রশ্ন।

আমি উবুন্টু 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ফাইল সামগ্রী, ঠিক ত্রুটি আপনি পেয়েছিলেন এবং গাদুমাস্টার স্ক্রিপ্ট?
লেট 21

2
ls -l gadumasterফাইল ডিরেক্টরিতে আউটপুট কি ?

1
চেডিমেয়েরাই, এই আমাকে রেজুলেশনে নিয়ে গেল! গাদুমাস্টার এক্সিকিউটেবলকে লাল ব্যাকগ্রাউন্ডের ওপরে ls কমান্ড সাদা বর্ণের দেখানো হয়েছিল । ডকুমেন্টেশন অনুসারে, এই ফাইলটি "সেটুইড (ইউ + এস)" ছিল। আমি এটি মুছে ফেলার পরে এবং আমার অ্যাপ্লিকেশনটি পুনরায় তৈরি করার পরে (ফাইলটি আবার সবুজ বর্ণে প্রদর্শিত হয়েছিল) আমি এটি সুডো সহ এবং ছাড়া চালাতে সক্ষম হয়েছি । ধন্যবাদ!
নিকি কল

1
চেষ্টা এই লিঙ্কে
Lety

3
@ নিকলিকাল যদি আপনি সমাধানটি খুঁজে পেয়েছেন তবে আমি প্রশ্নটি উত্তরের মধ্যে রেখে দেওয়া এবং এটি গ্রহণযোগ্য হিসাবে চিহ্নিত করার পরামর্শ দিচ্ছি, অন্য যে কেউ প্রশ্নটি আসে?
মিচ

উত্তর:


2

চেডিমিয়ারির পরামর্শ অনুসারে , ls -l gadumasterআপনাকে ভুল ফাইল অনুমতি সেট করে দেওয়ার কথা বলতে পারে। এটি আর ইউএসবি সংযোগ নিয়ে কোনও সমস্যা নয়।

আপনি আপনার অ্যাপ্লিকেশনটি পুনর্নির্মাণের মাধ্যমে chmod 775 gadumasterবা (বা অনুরূপ) এবং / অথবা chown $USER gadumaster(ফাইলটি "মালিকানাধীন" ব্যবহারকারীর সাথে $ USER প্রতিস্থাপন করতে পারেন ) এর মাধ্যমে ফাইল অনুমতিগুলি পরিবর্তন করে সমাধান করতে পারেন।

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