Как настроить так, чтобы Linux запрашивал sudo всякий раз, когда требуется sudo?

Вы можете использовать truncateдля расширения файла изображения.

напр.

truncate -c -s 4G image.img

или

truncate -c -s +1700M image.img

подробнее см. man truncate. Ключевая деталь на справочной странице:

If a FILE is larger than the specified size, the extra data is lost. If a FILE is shorter, it is extended and the extended part (hole) reads as zero bytes.

После этого вы сможете отредактировать таблицу разделов, чтобы расширить раздел и включить новое пространство -вы можете использовать parted, fdisk, gdisk, sfdisk, sgdiskили другие подобные инструменты для этого.

Как только вы это сделаете, вам нужно увеличить файловую систему, чтобы она могла использовать новое доступное пространство. Согласно изображению.png, на которое вы ссылаетесь, вы используете ext4 для файловой системы, поэтому вам нужно использоватьresize2fsпосле редактирования таблицы разделов.

Вы можете использовать графический интерфейс gpartedкак для расширения раздела, так и для расширения файловой системы.

ПРИМЕЧАНИЕ:вы должны всегда делать резервную копию вашего файла image.img, прежде чем делать с ним что-либо подобное. Если что-то пойдет не так, вы всегда можете вернуться к последнему -рабочему файлу изображения.

1
20.07.2019, 04:44
1 ответ

Ничего подобного не существует, и я не думаю, что это возможно. Подумайте об этом вопросе :Как оболочка или ядро ​​​​или что-то еще узнают, что вы действительно хотели запустить эту команду с помощью sudo? Например, если файл был настроен на чтение/запись корневым пользователем и чтением -только всеми остальными, и вы открыли файл, как он мог узнать, что вы хотите отредактировать файл, а не просто просмотреть его? Или, скажем, вы делаете «cp $HOME/myfile $HOME/myfile.bak». Может ли оболочка знать, что вы действительно хотели переместить файл, находящийся в /root, и поэтому вам следовало использовать sudo?

В тех случаях, когда вы точно знаете, что вам нужно быть пользователем root ('nano /etc/resolv.conf', например ), вам нужно либо повторно -написать nano, чтобы это заранее --, заменив его функцией, псевдонимом или сценарием --, или заставить оболочку каким-то образом прочитать вывод команды, выяснить, получили ли вы ошибку, и если это произошло из-за того, что вы не являетесь пользователем root, и затем попробуйте повторно -запустить команду с помощью sudo. Это было бы действительно большое заявление «если, то» для учета всех различных команд со всеми их различными выводами и способами работы и так далее.

Если бы вам удалось написать это действительно большое выражение «если тогда», возникла бы пара потенциальных проблем:

  • это никогда не сработает полностью для некоторых команд, это будет просто максимальным усилием,
  • Всегда будут появляться новые команды, которые нужно учитывать,
  • Это что-то сломает, если вы попытаетесь сделать команду такой умной, но затем вы используете ее в конвейере или скрипте, который ожидает, что команда просто запустится и либо сработает, либо потерпит неудачу,не останавливайтесь и не задавайте вопрос (, например, если у вас есть скрипт «копирует» файл конфигурации из одного места в другое, а затем перезапускает службу, которая зависит от файла... лучше, чтобы скрипт вообще не работал, чем думать КП работало, хотя на самом деле не работало! )и
  • sudo предназначен не только для root; вы можете сделать 'sudo -u bob vim /etc/bobsfile'...

Поэтому я не думаю, что целесообразно встраивать что-то подобное. Но будьте уверены, вы не единственный, кто хотел бы, чтобы это было так! Я работаю с Linux уже 20 лет и до сих пор этого хочу.

Есть несколько вещей, которые могут помочь:

  1. Некоторые команды знают, что они должны выполняться как sudo, и будут делать что-то вроде того, что вы просите. Например, команды systemd. Попробуйте systemctl restart cups, и он автоматически запросит ваш пароль sudo, если вы еще не запустили его с помощью sudo.
  2. Если вы запускаете команду в bash, которая должна была использовать sudo, вы можете немедленно ввести sudo !!, чтобы снова запустить ее с помощью sudo. "!!" заменяется любой вашей последней командой в этой оболочке. В моей системе я могу запустить "man bash | grep -A75 -P '^HISTORY EXPANSION'", чтобы посмотреть, как это работает. Вы также можете просто открыть «man bash» и найти его.
  3. У меня есть несколько псевдонимов для некоторых команд, которые я хотел бы просто запустить. Например, alias yum='sudo yum '. Мне не нужно помнить об использовании sudo для yum. Я просто запускаю «yum», и он добавляет sudo для меня.

Надеюсь, вам что-то там поможет.

0
28.01.2020, 00:06

Теги

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