Использование sudo su для команд?

Я отвечаю, потому что ответы здесь неадекватны.

Чтобы устранить проблему, выполните следующие действия:

Загрузите аварийный диск (Ubuntu или другой linux Live CD) и откройте оболочку текстового режима. Введите sudo gdisk /dev/sda (измените /dev/sda на все, что подходит для доступа к вашему жесткому диску, если это необходимо). Программа, скорее всего, пожалуется, что она обнаружила данные MBR и GPT, и спросит, что использовать. Неважно, что вы говорите, чтобы использовать. В приглашении Command введите x, чтобы войти в меню экспертов. В приглашении Expert command введите z в zap (уничтожить) данные GPT. Введите y в ответ на подтверждение об уничтожении GPT. Введите n в ответ на запрос об отключении MBR. Внимание: если вы ответите y здесь, вы уничтожите разделы (разделы) Windows!

15
задан 25 September 2010 в 00:35

36 ответов

The & lt ;,> и >> используются для перенаправления ввода / вывода для команд - это функция, предоставляемая оболочкой (например, bash). Поэтому, если вы наберете команду, подобную sudo cat > /var/www/info.php, то оболочка, которая получает это как вход, пытается открыть файл /var/www/info.php и предоставляет этот файл в качестве стандартного вывода для команды sudo. Команда sudo даже не знает, собирается ли ее вывод на консоль или перенаправлен на файл, потому что это вызвано оболочкой, которая его вызывает.

Если оболочка вы набрали вашу команду в ваш хост-интерфейс или другой shell, работающий в терминале с вашим идентификатором пользователя, тогда он имеет те же привилегии, что и ваш идентификатор пользователя, а не root.

Итак, в вашем случае, тогда как команда cat выполняется как root, копирование его вывода на /var/www/info.php выполняется с помощью оболочки, выполняемой как обычный пользователь, которая, как и ожидалось, терпит неудачу.

Обходной путь для таких ситуаций заключается в использовании команды tee :

sudo tee /var/www/info.php

Это будет иметь предполагаемый эффект поместить весь текст, введенный на консоль до ^ D, в файл, указанный как параметр.

Возможно, что недопустимый побочный эффект что tee также будет выводить вывод на стандартный вывод, поэтому после ввода каждой строки и нажатия клавиши ввода tee выведет ее копию. Чтобы избежать этого, вы можете использовать следующий вариант.

sudo tee /var/www/info.php > /dev/null

Подробности о tee можно получить через info tee на терминале.

18
ответ дан 26 May 2018 в 01:16

The & lt ;,> и >> используются для перенаправления ввода / вывода для команд - это функция, предоставляемая оболочкой (например, bash). Поэтому, если вы наберете команду, подобную sudo cat > /var/www/info.php, то оболочка, которая получает это как вход, пытается открыть файл /var/www/info.php и предоставляет этот файл в качестве стандартного вывода для команды sudo. Команда sudo даже не знает, собирается ли ее вывод на консоль или перенаправлен на файл, потому что это вызвано оболочкой, которая его вызывает.

Если оболочка вы набрали вашу команду в ваш хост-интерфейс или другой shell, работающий в терминале с вашим идентификатором пользователя, тогда он имеет те же привилегии, что и ваш идентификатор пользователя, а не root.

Итак, в вашем случае, тогда как команда cat выполняется как root, копирование его вывода на /var/www/info.php выполняется с помощью оболочки, выполняемой как обычный пользователь, которая, как и ожидалось, терпит неудачу.

Обходной путь для таких ситуаций заключается в использовании команды tee :

sudo tee /var/www/info.php

Это будет иметь предполагаемый эффект поместить весь текст, введенный на консоль до ^ D, в файл, указанный как параметр.

Возможно, что недопустимый побочный эффект что tee также будет выводить вывод на стандартный вывод, поэтому после ввода каждой строки и нажатия клавиши ввода tee выведет ее копию. Чтобы избежать этого, вы можете использовать следующий вариант.

sudo tee /var/www/info.php > /dev/null

Подробности о tee можно получить через info tee на терминале.

18
ответ дан 25 July 2018 в 23:10

The & lt ;,> и >> используются для перенаправления ввода / вывода для команд - это функция, предоставляемая оболочкой (например, bash). Поэтому, если вы наберете команду, подобную sudo cat > /var/www/info.php, то оболочка, которая получает это как вход, пытается открыть файл /var/www/info.php и предоставляет этот файл в качестве стандартного вывода для команды sudo. Команда sudo даже не знает, собирается ли ее вывод на консоль или перенаправлен на файл, потому что это вызвано оболочкой, которая его вызывает.

Если оболочка вы набрали вашу команду в ваш хост-интерфейс или другой shell, работающий в терминале с вашим идентификатором пользователя, тогда он имеет те же привилегии, что и ваш идентификатор пользователя, а не root.

Итак, в вашем случае, тогда как команда cat выполняется как root, копирование его вывода на /var/www/info.php выполняется с помощью оболочки, выполняемой как обычный пользователь, которая, как и ожидалось, терпит неудачу.

Обходной путь для таких ситуаций заключается в использовании команды tee :

sudo tee /var/www/info.php

Это будет иметь предполагаемый эффект поместить весь текст, введенный на консоль до ^ D, в файл, указанный как параметр.

Возможно, что недопустимый побочный эффект что tee также будет выводить вывод на стандартный вывод, поэтому после ввода каждой строки и нажатия клавиши ввода tee выведет ее копию. Чтобы избежать этого, вы можете использовать следующий вариант.

sudo tee /var/www/info.php > /dev/null

Подробности о tee можно получить через info tee на терминале.

18
ответ дан 27 July 2018 в 03:11

The & lt ;,> и >> используются для перенаправления ввода / вывода для команд - это функция, предоставляемая оболочкой (например, bash). Поэтому, если вы наберете команду, например sudo cat & gt; /var/www/info.php, то оболочка, которая получает это как вход, пытается открыть файл /var/www/info.php и предоставляет этот файл в качестве стандартного вывода для sudo . Команда sudo даже не знает, собирается ли ее вывод на консоль или перенаправляется в файл, потому что это вызвано оболочкой, которая его вызывает.

Если shell, на который вы набрали свою команду, - это ваша оболочка для входа или другая оболочка, работающая в терминале с вашим идентификатором пользователя, тогда она имеет те же привилегии, что и ваш идентификатор пользователя, а не идентификатор root.

Итак, в вашем случае, тогда как команда cat выполняется как root, копирование ее вывода на /var/www/info.php выполняется с помощью оболочки, выполняемой как обычный пользователь, которая, как и ожидалось, терпит неудачу.

Обходной путь для таких ситуаций заключается в использовании команды tee :

  sudo tee /var/www/info.php  

Это приведет к предполагаемому эффекту ввода всего текста, введенного на консоль до ^ D, в файл, указанный в качестве параметра.

Возможно, недопустимый побочный эффект заключается в том, что tee также будет выводить вывод на стандартный вывод, поэтому после ввода каждой строки и ввода enter t ee выведет его копию. Чтобы избежать этого, вы можете использовать следующий вариант.

  sudo tee /var/www/info.php & gt;  / dev / null  

Подробная информация о tee может быть получена через info tee на терминале.

18
ответ дан 2 August 2018 в 04:29

The & lt ;,> и >> используются для перенаправления ввода / вывода для команд - это функция, предоставляемая оболочкой (например, bash). Поэтому, если вы наберете команду, например sudo cat & gt; /var/www/info.php, то оболочка, которая получает это как вход, пытается открыть файл /var/www/info.php и предоставляет этот файл в качестве стандартного вывода для sudo . Команда sudo даже не знает, собирается ли ее вывод на консоль или перенаправляется в файл, потому что это вызвано оболочкой, которая его вызывает.

Если shell, на который вы набрали свою команду, - это ваша оболочка для входа или другая оболочка, работающая в терминале с вашим идентификатором пользователя, тогда она имеет те же привилегии, что и ваш идентификатор пользователя, а не идентификатор root.

Итак, в вашем случае, тогда как команда cat выполняется как root, копирование ее вывода на /var/www/info.php выполняется с помощью оболочки, выполняемой как обычный пользователь, которая, как и ожидалось, терпит неудачу.

Обходной путь для таких ситуаций заключается в использовании команды tee :

  sudo tee /var/www/info.php  

Это приведет к предполагаемому эффекту ввода всего текста, введенного на консоль до ^ D, в файл, указанный в качестве параметра.

Возможно, недопустимый побочный эффект заключается в том, что tee также будет выводить вывод на стандартный вывод, поэтому после ввода каждой строки и ввода enter t ee выведет его копию. Чтобы избежать этого, вы можете использовать следующий вариант.

  sudo tee /var/www/info.php & gt;  / dev / null  

Подробная информация о tee может быть получена через info tee на терминале.

18
ответ дан 4 August 2018 в 21:03

The & lt ;,> и >> используются для перенаправления ввода / вывода для команд - это функция, предоставляемая оболочкой (например, bash). Поэтому, если вы наберете команду, например sudo cat & gt; /var/www/info.php, то оболочка, которая получает это как вход, пытается открыть файл /var/www/info.php и предоставляет этот файл в качестве стандартного вывода для sudo . Команда sudo даже не знает, собирается ли ее вывод на консоль или перенаправляется в файл, потому что это вызвано оболочкой, которая его вызывает.

Если shell, на который вы набрали свою команду, - это ваша оболочка для входа или другая оболочка, работающая в терминале с вашим идентификатором пользователя, тогда она имеет те же привилегии, что и ваш идентификатор пользователя, а не идентификатор root.

Итак, в вашем случае, тогда как команда cat выполняется как root, копирование ее вывода на /var/www/info.php выполняется с помощью оболочки, выполняемой как обычный пользователь, которая, как и ожидалось, терпит неудачу.

Обходной путь для таких ситуаций заключается в использовании команды tee :

  sudo tee /var/www/info.php  

Это приведет к предполагаемому эффекту ввода всего текста, введенного на консоль до ^ D, в файл, указанный в качестве параметра.

Возможно, недопустимый побочный эффект заключается в том, что tee также будет выводить вывод на стандартный вывод, поэтому после ввода каждой строки и ввода enter t ee выведет его копию. Чтобы избежать этого, вы можете использовать следующий вариант.

  sudo tee /var/www/info.php & gt;  / dev / null  

Подробная информация о tee может быть получена через info tee на терминале.

18
ответ дан 6 August 2018 в 04:34

The & lt ;,> и >> используются для перенаправления ввода / вывода для команд - это функция, предоставляемая оболочкой (например, bash). Поэтому, если вы наберете команду, например sudo cat & gt; /var/www/info.php, то оболочка, которая получает это как вход, пытается открыть файл /var/www/info.php и предоставляет этот файл в качестве стандартного вывода для sudo . Команда sudo даже не знает, собирается ли ее вывод на консоль или перенаправляется в файл, потому что это вызвано оболочкой, которая его вызывает.

Если shell, на который вы набрали свою команду, - это ваша оболочка для входа или другая оболочка, работающая в терминале с вашим идентификатором пользователя, тогда она имеет те же привилегии, что и ваш идентификатор пользователя, а не идентификатор root.

Итак, в вашем случае, тогда как команда cat выполняется как root, копирование ее вывода на /var/www/info.php выполняется с помощью оболочки, выполняемой как обычный пользователь, которая, как и ожидалось, терпит неудачу.

Обходной путь для таких ситуаций заключается в использовании команды tee :

  sudo tee /var/www/info.php  

Это приведет к предполагаемому эффекту ввода всего текста, введенного на консоль до ^ D, в файл, указанный в качестве параметра.

Возможно, недопустимый побочный эффект заключается в том, что tee также будет выводить вывод на стандартный вывод, поэтому после ввода каждой строки и ввода enter t ee выведет его копию. Чтобы избежать этого, вы можете использовать следующий вариант.

  sudo tee /var/www/info.php & gt;  / dev / null  

Подробная информация о tee может быть получена через info tee на терминале.

18
ответ дан 7 August 2018 в 22:44

The & lt ;,> и >> используются для перенаправления ввода / вывода для команд - это функция, предоставляемая оболочкой (например, bash). Поэтому, если вы наберете команду, например sudo cat & gt; /var/www/info.php, то оболочка, которая получает это как вход, пытается открыть файл /var/www/info.php и предоставляет этот файл в качестве стандартного вывода для sudo . Команда sudo даже не знает, собирается ли ее вывод на консоль или перенаправляется в файл, потому что это вызвано оболочкой, которая его вызывает.

Если shell, на который вы набрали свою команду, - это ваша оболочка для входа или другая оболочка, работающая в терминале с вашим идентификатором пользователя, тогда она имеет те же привилегии, что и ваш идентификатор пользователя, а не идентификатор root.

Итак, в вашем случае, тогда как команда cat выполняется как root, копирование ее вывода на /var/www/info.php выполняется с помощью оболочки, выполняемой как обычный пользователь, которая, как и ожидалось, терпит неудачу.

Обходной путь для таких ситуаций заключается в использовании команды tee :

  sudo tee /var/www/info.php  

Это приведет к предполагаемому эффекту ввода всего текста, введенного на консоль до ^ D, в файл, указанный в качестве параметра.

Возможно, недопустимый побочный эффект заключается в том, что tee также будет выводить вывод на стандартный вывод, поэтому после ввода каждой строки и ввода enter t ee выведет его копию. Чтобы избежать этого, вы можете использовать следующий вариант.

  sudo tee /var/www/info.php & gt;  / dev / null  

Подробная информация о tee может быть получена через info tee на терминале.

18
ответ дан 10 August 2018 в 10:49

The & lt ;,> и >> используются для перенаправления ввода / вывода для команд - это функция, предоставляемая оболочкой (например, bash). Поэтому, если вы наберете команду, например sudo cat & gt; /var/www/info.php, то оболочка, которая получает это как вход, пытается открыть файл /var/www/info.php и предоставляет этот файл в качестве стандартного вывода для sudo . Команда sudo даже не знает, собирается ли ее вывод на консоль или перенаправляется в файл, потому что это вызвано оболочкой, которая его вызывает.

Если shell, на который вы набрали свою команду, - это ваша оболочка для входа или другая оболочка, работающая в терминале с вашим идентификатором пользователя, тогда она имеет те же привилегии, что и ваш идентификатор пользователя, а не идентификатор root.

Итак, в вашем случае, тогда как команда cat выполняется как root, копирование ее вывода на /var/www/info.php выполняется с помощью оболочки, выполняемой как обычный пользователь, которая, как и ожидалось, терпит неудачу.

Обходной путь для таких ситуаций заключается в использовании команды tee :

  sudo tee /var/www/info.php  

Это приведет к предполагаемому эффекту ввода всего текста, введенного на консоль до ^ D, в файл, указанный в качестве параметра.

Возможно, недопустимый побочный эффект заключается в том, что tee также будет выводить вывод на стандартный вывод, поэтому после ввода каждой строки и ввода enter t ee выведет его копию. Чтобы избежать этого, вы можете использовать следующий вариант.

  sudo tee /var/www/info.php & gt;  / dev / null  

Подробная информация о tee может быть получена через info tee на терминале.

18
ответ дан 13 August 2018 в 17:24

sudo не работает для команд, которым необходимы разрешения для записи файла, например:

sudo echo "vm.swappines = 100" >> /etc/sysctl.conf

Он объясняется на man-странице sudo.

2
ответ дан 26 May 2018 в 01:16
  • 1
    Упомянув, что вы можете "sudo -i" или "sudo-s" чтобы получить подсказку root, этот ответ еще лучше! – Jorge Castro 25 September 2010 в 00:23
  • 2
    В команде примера нет трубы; есть перенаправление. Кроме того, "иногда не работает" кажется, передает flaky поведение sudo. Как отмечено в ответе кушика, поведение вполне предсказуемо, последовательно и «правильно». для модели разрешения unix. – msw 25 September 2010 в 07:07

Проблема в том, что часть «> foo.txt» интерпретируется и выполняется вашим интерпретатором команд (оболочкой) задолго до запуска команды sudo. Команда sudo не знает, что вы хотите перенаправить свой вывод в файл.

У вашего интерпретатора команд нет полномочий root (но команда sudo будет позже), поэтому он не может перенаправить вывод в foo. текст.

2
ответ дан 26 May 2018 в 01:16

Другим способом решения этой проблемы является запуск подоболочки с sudo и выполнение этой команды в этой подоболочке:

$ sudo bash -c "cat > /var/www/info.php"
<?php
phpinfo( ) ;
? >
^D

здесь команда, которая «имеет sudo», является bash, и все, что выполнено в ней имеет корневые разрешения.

$ 2c, * -pike [! ​​d2]

1
ответ дан 26 May 2018 в 01:16

Другим способом решения этой проблемы является запуск подоболочки с sudo и выполнение этой команды в этой подоболочке:

$ sudo bash -c "cat > /var/www/info.php" <?php phpinfo( ) ; ? > ^D

здесь команда, которая «имеет sudo», является bash, и все, что выполнено в ней имеет корневые разрешения.

$ 2c, * -pike [! ​​d2]

1
ответ дан 25 July 2018 в 23:10

sudo не работает для команд, которым необходимы разрешения для записи файла, например:

sudo echo "vm.swappines = 100" >> /etc/sysctl.conf

Он объясняется на man-странице sudo.

2
ответ дан 25 July 2018 в 23:10
  • 1
    Упомянув, что вы можете "sudo -i" или "sudo-s" чтобы получить подсказку root, этот ответ еще лучше! – Jorge Castro 25 September 2010 в 00:23
  • 2
    В команде примера нет трубы; есть перенаправление. Кроме того, "иногда не работает" кажется, передает flaky поведение sudo. Как отмечено в ответе кушика, поведение вполне предсказуемо, последовательно и «правильно». для модели разрешения unix. – msw 25 September 2010 в 07:07

Проблема в том, что часть «> foo.txt» интерпретируется и выполняется вашим интерпретатором команд (оболочкой) задолго до запуска команды sudo. Команда sudo не знает, что вы хотите перенаправить свой вывод в файл.

У вашего интерпретатора команд нет полномочий root (но команда sudo будет позже), поэтому он не может перенаправить вывод в foo. текст.

2
ответ дан 25 July 2018 в 23:10

Другим способом решения этой проблемы является запуск подоболочки с sudo и выполнение этой команды в этой подоболочке:

$ sudo bash -c "cat > /var/www/info.php" <?php phpinfo( ) ; ? > ^D

здесь команда, которая «имеет sudo», является bash, и все, что выполнено в ней имеет корневые разрешения.

$ 2c, * -pike [! ​​d2]

1
ответ дан 27 July 2018 в 03:11

sudo не работает для команд, которым необходимы разрешения для записи файла, например:

sudo echo "vm.swappines = 100" >> /etc/sysctl.conf

Он объясняется на man-странице sudo.

2
ответ дан 27 July 2018 в 03:11
  • 1
    Упомянув, что вы можете "sudo -i" или "sudo-s" чтобы получить подсказку root, этот ответ еще лучше! – Jorge Castro 25 September 2010 в 00:23
  • 2
    В команде примера нет трубы; есть перенаправление. Кроме того, "иногда не работает" кажется, передает flaky поведение sudo. Как отмечено в ответе кушика, поведение вполне предсказуемо, последовательно и «правильно». для модели разрешения unix. – msw 25 September 2010 в 07:07

Проблема в том, что часть «> foo.txt» интерпретируется и выполняется вашим интерпретатором команд (оболочкой) задолго до запуска команды sudo. Команда sudo не знает, что вы хотите перенаправить свой вывод в файл.

У вашего интерпретатора команд нет полномочий root (но команда sudo будет позже), поэтому он не может перенаправить вывод в foo. текст.

2
ответ дан 27 July 2018 в 03:11

sudo не работает для команд, которым необходимы разрешения для записи файла, например:

sudo echo "vm.swappines = 100" & gt; & gt; & gt; & gt; /etc/sysctl.conf

Это объясняется в man-странице sudo.

2
ответ дан 2 August 2018 в 04:29

Проблема заключается в том, что часть «> foo.txt» интерпретируется и выполняется вашим интерпретатором команд (shell) long до запуска команды sudo. Команда sudo не знает, что вы хотите перенаправить свой вывод в файл.

У вашего интерпретатора команд нет полномочий root (но команда sudo будет позже), поэтому он не может перенаправить вывод в foo. текст.

2
ответ дан 2 August 2018 в 04:29

Еще один способ решить эту задачу - запустить подоболочку с sudo и выполнить эту команду в этой подоболочке:

  $ sudo bash -c "cat & gt; /var/www/info.php  "& lt;? php phpinfo ();  ?  & GT;  ^ D  

здесь команда, которая имеет «sudo», является bash, и все, что выполнено в ней, имеет права root.

$ 2c, * -pike [! ​​D3 ]

1
ответ дан 2 August 2018 в 04:29

sudo не работает для команд, которым необходимы разрешения для записи файла, например:

sudo echo "vm.swappines = 100" & gt; & gt; & gt; & gt; /etc/sysctl.conf

Это объясняется в man-странице sudo.

2
ответ дан 4 August 2018 в 21:03

Проблема заключается в том, что часть «> foo.txt» интерпретируется и выполняется вашим интерпретатором команд (shell) long до запуска команды sudo. Команда sudo не знает, что вы хотите перенаправить свой вывод в файл.

У вашего интерпретатора команд нет полномочий root (но команда sudo будет позже), поэтому он не может перенаправить вывод в foo. текст.

2
ответ дан 4 August 2018 в 21:03

Еще один способ решить эту задачу - запустить подоболочку с sudo и выполнить эту команду в этой подоболочке:

  $ sudo bash -c "cat & gt; /var/www/info.php  "& lt;? php phpinfo ();  ?  & GT;  ^ D  

здесь команда, которая имеет «sudo», является bash, и все, что выполнено в ней, имеет права root.

$ 2c, * -pike [! ​​D3 ]

1
ответ дан 4 August 2018 в 21:03

sudo не работает для команд, которым необходимы разрешения для записи файла, например:

sudo echo "vm.swappines = 100" & gt; & gt; & gt; & gt; /etc/sysctl.conf

Это объясняется в man-странице sudo.

2
ответ дан 6 August 2018 в 04:34

Проблема заключается в том, что часть «> foo.txt» интерпретируется и выполняется вашим интерпретатором команд (shell) long до запуска команды sudo. Команда sudo не знает, что вы хотите перенаправить свой вывод в файл.

У вашего интерпретатора команд нет полномочий root (но команда sudo будет позже), поэтому он не может перенаправить вывод в foo. текст.

2
ответ дан 6 August 2018 в 04:34

Еще один способ решить эту задачу - запустить подоболочку с sudo и выполнить эту команду в этой подоболочке:

  $ sudo bash -c "cat & gt; /var/www/info.php  "& lt;? php phpinfo ();  ?  & GT;  ^ D  

здесь команда, которая имеет «sudo», является bash, и все, что выполнено в ней, имеет права root.

$ 2c, * -pike [! ​​D3 ]

1
ответ дан 6 August 2018 в 04:34

sudo не работает для команд, которым необходимы разрешения для записи файла, например:

sudo echo "vm.swappines = 100" & gt; & gt; & gt; & gt; /etc/sysctl.conf

Это объясняется в man-странице sudo.

2
ответ дан 7 August 2018 в 22:44

Проблема заключается в том, что часть «> foo.txt» интерпретируется и выполняется вашим интерпретатором команд (shell) long до запуска команды sudo. Команда sudo не знает, что вы хотите перенаправить свой вывод в файл.

У вашего интерпретатора команд нет полномочий root (но команда sudo будет позже), поэтому он не может перенаправить вывод в foo. текст.

2
ответ дан 7 August 2018 в 22:44

Еще один способ решить эту задачу - запустить подоболочку с sudo и выполнить эту команду в этой подоболочке:

  $ sudo bash -c "cat & gt; /var/www/info.php  "& lt;? php phpinfo ();  ?  & GT;  ^ D  

здесь команда, которая имеет «sudo», является bash, и все, что выполнено в ней, имеет права root.

$ 2c, * -pike [! ​​D3 ]

1
ответ дан 7 August 2018 в 22:44

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

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