Как добавить файл на /etc/sudoers.d/ от пользователя Non-root?

Используйте результаты команды lsof, чтобы найти процессы на клиенте, содержащие ссылки на устаревшую файловую систему, и уничтожить эти процессы.

umount -f / data0

убедитесь, что вы можете проверить связь с сервером, а затем перемонтировать диск. Перезапустите все желаемые процессы.

Кластеры

Обратите внимание: если вы запустите установку кластерного сервера, вы будете получать устаревший дескриптор файла nfs каждый раз, когда сервер должен переключиться на сбой. Чтобы избежать этого, вам следует экспортировать файловые системы с помощью опции fsid. Номер для fsid должен быть одинаковым для каждой соответствующей файловой системы на двух серверах. Вы должны гарантировать, что файлы будут реплицироваться. См. Фрагмент страницы руководства ниже:

fsid = num | root | uuid NFS должна иметь возможность идентифицировать каждую экспортируемую файловую систему. Обычно он будет использовать UUID для файловой системы (если в файловой системе есть такая вещь) или номер устройства устройства, содержащего файловую систему (если файловая система хранится на устройстве). Поскольку не все файловые системы хранятся на устройствах, и не все файловые системы имеют UUID, иногда необходимо явно указать NFS, как идентифицировать файловую систему. Это делается с помощью опции fsid =.

Для NFSv4 существует особая файловая система, которая является корнем всей экспортируемой файловой системы. Это указывается с помощью fsid = root или fsid = 0, которые означают одно и то же.

Другие файловые системы могут быть идентифицированы с помощью небольшого целого числа или UUID, который должен содержать 32 шестнадцатеричных цифры и произвольную пунктуацию.

Ядра Linux версии 2.6.20 и более ранние не поддерживают настройку UUID, поэтому необходимо использовать небольшое целое число, если для таких ядер необходимо установить параметр fsid. Поддерживается установка как небольшого числа, так и UUID, поэтому одна и та же конфигурация может работать как на старых, так и на новых ядрах.

1
30.08.2018, 06:16
1 ответ

Если вы просто хотите запросить пароль для повышения привилегий, добавьте

sudo -v

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

Эффективно:

#!/bin/bash

# Initiate sudo session
sudo -v
# Execute command; sudo session for tee is already active.
echo 'foobar ALL=(ALL:ALL) ALL' | sudo EDITOR='tee -a' visudo

Если это долго работающий скрипт, подумайте о том, чтобы сделать его функцией, которая запускается раньше:

sudo -v
while true;
do
    sudo -n true
    sleep 60
    kill -0 "$$" || exit
done 2>/dev/null &

Тогда ваш скрипт будет выглядеть примерно так:

#!/bin/bash

sudoChk () {
    sudo -v
    while true;
    do
        sudo -n true
        sleep 60
        kill -0 "$$" || exit
    done 2>/dev/null &
}

sudoChk
#...long running commands...
echo 'foobar ALL=(ALL:ALL) ALL' | sudo EDITOR='tee -a' visudo
exit 0

Возможно, вы также ищете:

sudo sh -c

вместо

sudo su -c
1
28.01.2020, 00:29

Теги

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