Я могу позволить некорневому пользователю входить в систему, когда/etc/nologin существует?

OpenOffice идет с unoconv программой для выполнения преобразований формата на командной строке.

unoconv -f csv filename.xlsx

Для более сложных требований можно проанализировать файлы XLSX с Spreadsheet::XLSX в Perl или openpyxl в Python. Например, вот беглый сценарий для распечатывания рабочего листа как разделенного от точки с запятой файла CSV (предупреждение: непротестированный, введенный непосредственно в браузере):

perl -MSpreadsheet::XLSX -e '
    $\ = "\n"; $, = ";";
    my $workbook = Spreadsheet::XLSX->new()->parse($ARGV[0]);
    my $worksheet = ($workbook->worksheets())[0];
    my ($row_min, $row_max) = $worksheet->row_range();
    my ($col_min, $col_max) = $worksheet->col_range();
    for my $row ($row_min..$row_max) {
        print map {$worksheet->get_cell($row,$_)->value()} ($col_min..$col_max);
    }
' filename.xlsx >filename.csv

8
02.08.2011, 19:04
5 ответов

Если Ваша система использует PAM, отказ входа в систему когда /etc/nologin существует инициирован pam_nologin модуль.

Можно пропустить pam_nologin вызов для пользователей, соответствующих определенным критериям pam_succeed_if. Например, если Вы хотите позволить пользователям войти adm группа для входа в систему на текстовой консоли, даже если /etc/nologin существует, добавьте следующую строку к /etc/pam.d/login незадолго до строки с auth requisite pam_nologin.so:

auth [default=ignore success=1] pam_succeed_if.so quiet user ingroup adm
14
27.01.2020, 20:09

Я не уверен, возможно ли переопределить /etc/nologin создание/использование без злых шуток. Но для Вашей цели, можно использовать функцию как это:

off () { 
   touch /tmp/GOING-DOWN
   sudo sh -c "sleep ${1-1} && [ -f /tmp/GOING-DOWN ] && /sbin/poweroff"
}

После перевхода в систему, удаляя файл /tmp/GOING-DOWN предотвратит завершение работы.

править: Добавленный простой способ отменить завершение работы.

1
27.01.2020, 20:09

Ответ Жиля выше очень хорош, но обратите внимание, что "type" должен совпадать с типом pam_nologin.so. Так, например, в моей системе RHEL5:

account [default=1 success=ignore] pam_succeed_if.so quiet user ingroup nx
account required     pam_nologin.so

...если бы я использовал auth, как запрашивал другой ответ, это не сработало бы.

.
2
27.01.2020, 20:09

Я попробовал сегодня правило Райана и обнаружил, что ответы бота Гилса и Райана имеют "обратные" правила успеха / по умолчанию, nologin блокирует только nx-группу. Вот как я реализовал это правило (группа nx не блокируется nologin).

account [success=1 default=ignore] pam_succeed_if.so quiet user ingroup nx
account required     pam_nologin.so
0
27.01.2020, 20:09

Версия ответа Райана Новосельски от Весы К. у меня работает, но строки в:

/etc/pam.d/sshd

не:

/etc/pam.d/login

В моем случае, я просто хочу UID 1000 в Ubuntu 14.04 LTS, чтобы разрешить вход через SSH.

# Disallow non-root logins when /etc/nologin exists.
account [success=1 default=ignore] pam_succeed_if.so quiet uid eq 1000
account    required     pam_nologin.so
2
27.01.2020, 20:09

Теги

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