Я использую CrunchBang Linux на 2 компьютерах, и он использует только 63 МБ RAM при запуске. Большой дистрибутив и очень функциональный. Почтовый клиент ваше дело (ни один не установлен по умолчанию). Существует очень хорошо сделанный сценарий при установке, которая предлагает Вас, с вопросами, требующими ответа "да - нет", чтобы заставить Ваш новый дистрибутив установить больше (например, установкой Открывают Office или Java Development Kit).
Перед этим я попробовал Lubuntu, который очень хорош, но немного более чрезмерно увеличен в размере, чем CrunchBang.
Команды в сценарии выполняются один за другим, независимо. Сам Сценарий как родитель всех команд в сценарии, другой независимый процесс, и команда su не делает и не может изменить его для укоренения: команда su создает новый процесс с полномочиями пользователя root.
После этого команда su завершается, родительский процесс, все еще работая как тот же пользователь, выполнит остальную часть сценария.
То, что Вы хотите сделать, записать сценарий обертки. Привилегированные команды входят в основной сценарий, например ~/main.sh
#!/bin/sh
ls /root
Сценарий обертки называет основной сценарий с корневыми полномочиями, как это
#!/bin/sh
su -c ~/main.sh root
Для запуска этого процесса, Вы выполняете обертку, которая в свою очередь запускает основной сценарий после переключающегося пользователя пользователю root.
Этот метод обертки может использоваться для превращения сценария в обертку вокруг себя. В основном проверьте, чтобы видеть, работает ли это как корень, в противном случае используйте "su", чтобы повторно запустить себя.
0$ являются удобным способом заставить сценарий относиться к себе, и команда whoami может сказать нам, которые мы (мы - корень?)
Таким образом, основной сценарий со встроенной оберткой становится
#!/bin/sh
[ `whoami` = root ] || exec su -c $0 root
ls /root
Отметьте использование должностного лица. Это означает, "заменяют эту программу", который эффективно заканчивает ее выполнение и запускает новую программу, запущенную su, с корнем, для выполнения от вершины. Заменяющий экземпляр является "корнем", таким образом, он не выполняет правую сторону ||
Используйте следующее в сценарии.
sudo su <<HERE
ls /root
HERE
Код между ЗДЕСЬ блоком будет выполнен как корень.
sudo su
называет две программы. Использовать sudo -s <<HEREDOC
или su user <<HEREDOC
... Глупый 5-минутный предел.
– Johan
02.04.2013, 19:13
Без дальнейших аргументов su
выполнит оболочку входа в систему для корня. Это - то, что на самом деле делает первая строка Вашего сценария. Когда Вы выходите, завершения оболочки входа в систему, su возвраты и Ваш сценарий продолжает выполнение, которое является со второй строкой: ls /root
. Я думаю, что Вы можете просто sudo ls /root
сделать то, что Вы хотите.
ls
, но это - просто образец. На самом деле я должен сделать намного больше вещей с корнем privilege:-), Таким образом, я предпочитаю ответ @Ankit.
– Hongxu Chen
02.04.2013, 16:27
После того как Вы стреляете sudo su
новый процесс с эффективным userid (euid=EUID)
из разветвленного суперпользователя следовательно у нас есть новый удар, работающий в другом идентификаторе процесса (pid=PID)
связанный с тем же терминалом (tname=TTY)
.
Объяснение
Предположим после увольнения ps -A | grep bash
Вы имеете 21460 pts/2 00:00:00 bash
как произведено. Теперь, когда Вы выполняетесь ./test.sh
обе команды sudo su
и ls /root
будет буферизован к PID 21460
. После выполнения, когда Вы имеете root
как хит активного пользователя ps -A | grep bash
снова, Вы заметите новую работу удара PID say, 21570
. Выход от root bash
уничтожит недавно разветвленный удар, возвращающийся к user's bash
и следовательно выполняет буферизованную команду ls /root
прежде, чем выпустить подсказку.
вот ваш типичный случай использования 1. в вашем bash есть строки, которые выполняются без sudo 2. также в вашем bash есть строки, для которых нужен суперпользователь 3. после выполнения строк, требующих сверхиспользованного превыбора, который вы хотите верните управление в свой сценарий, а затем продолжайте заниматься обычными делами
хорошо, если это то, что вам нужно, вот образец #!/бин/баш если [[ $ (cat /proc/net/dev |grep br0 )]]; тогда эхо "Создание моста" pwd компакт диск../../ компакт-диск /proc/sys/net pwd modprobe br _сетевой фильтр компакт-диск мост судо -с для f в мосте -nf -*; сделать эхо 0 > $f;готово brctl-шоу echo "введите exit, чтобы продолжить" компакт диск../../../../ cd /home/shino/Desktop/openwrt _вирт пвд
фи
просто проверьте строку sudo -s это все, что вам нужно сохранить это в bash и попробовать поблагодарить меня позже