Доступ к/dev/ttyUSB0 и sudo

Это - мой первый вопрос здесь.

Я запускаю Ubuntu 12.04 и имею приложение, получающее доступ к USB-порту компьютера. Мое имя пользователя Ubuntu является gadu. До сих пор я всегда использовал следующую команду:

sudo ./gadumaster

и ввел мой пароль (gadumaster, приложение, получающее доступ к USB). Эта команда работала, а также вызов к перезагрузке системной функции () раньше перезапускал мой ноутбук, когда определенное внешнее условие от USB произошло.

Сегодня я должен был изменить вещи так это выполнение приложения автоматически после того, как ноутбук запускает. Поэтому я подготовил файл сценария и искал путь, как передать пароль сценарию. После чтения немногих статей я решил предоставить доступ к USB для моего пользователя путем добавления его к dialout группе:

sudo adduser gadu dialout

После перезагрузки я смог запустить свое приложение путем простого ввода:

./gadumaster

Это было превосходно, но мне был нужен способ включить также перезагрузку () функция. Что было моим удивлением, когда я выяснил, что следующая команда не работает больше:

sudo./gadumaster

Да, выполнение приложения с sudo дает мне ошибку "Разрешение, отклоненное" при соединении с USB! Обратите внимание, что без sudo это работает!

Попробованный для удаления моего пользователя из dialout группы:

sudo deluser gadu dialout

После перезагрузки я вошел в ситуацию, которые и с sudo и без команд sudo не работают! Даже перезагрузка () функция не работает ни в какой ситуации.

Кто-либо мог описать что не так с моей человечностью? Большое спасибо заранее.

/etc/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.

Показанная ошибка:

OpenComm () перестал работать: Разрешение отклонено.

распечатанный через следующий фрагмент кода - часть gadumaster приложения (см. perror () функция):

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 для суперпользователя?

8
задан 8 October 2014 в 11:07

1 ответ

Как предложено CheddieMerai, с помощью ls -l gadumaster может сказать Вам об установке неправильных полномочий файла. Это не проблема с соединением USB больше.

можно разрешить это путем восстановления приложения или путем изменения полномочий файла через chmod 775 gadumaster (или подобный) и/или chown $USER gadumaster (можно заменить $USER пользователем, который, как предполагают, "владел" файлом).

2
ответ дан 16 November 2019 в 17:55

Другие вопросы по тегам:

Похожие вопросы: