Назад | Перейти на главную страницу

Linux - используйте «su -», но сохраняйте текущий каталог.

Когда я делаю su - чтобы получить root, мой текущий каталог настроен на root's home. Есть ли способ сохранить текущий каталог, в котором я был, как и sudo -s. Или ответ использовать sudo?

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

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

Однако вам не нужно использовать параметр '-', если вы не хотите. Вы получите оболочку как root, она просто не будет оболочка входа (поэтому он не будет запускать корневой профиль.)

Я согласен с тем, что sudo почти всегда лучший ответ, но чтобы ответить на другую часть вопроса ...

'-' в 'su -' указывает, что вы хотите имитировать вход в систему суперпользователя, а не просто запускать с привилегиями суперпользователя.

Если вы используете обычную «su», а не «su -», вы останетесь в том же каталоге; однако вы также будете работать в той же среде, поэтому может потребоваться изменить свой путь для доступа к некоторым командам администратора.

Если вы используете su без -, он должен держать вас в вашем текущем каталоге. -, -l или --login скажи su:

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

Или просто используйте sudo, у него много других преимуществ. Или ssh-ключи.

Вам обязательно стоит использовать sudo.

вс -м
-m (-p): не сбрасывать переменные среды (обычно не рекомендуется)

Это сохранит вас в папке, когда вы перейдете на root.

Преимущества использования sudo

Если вы действительно хотите использовать su, есть способ оставаться в том же каталоге.

su - <user> -c "cd `pwd`; bash"

Что тут происходит:

  • su - <user> = войти как
  • -c что означает "запустить команду в новой оболочке
  • -c "cd `pwd`" команда, которую мы даем, - это переключиться на текущий каталог (pwd) - но поскольку мы используем обратные кавычки, pwd оценивается перед запуском su , чтобы мы фактически переключились в каталог, в котором мы СЕЙЧАС в качестве старого пользователя. Единственная проблема здесь в том, что новая оболочка закрывается сразу после выполнения команды, поэтому мы добавляем:
  • -c "cd `pwd`; bash" что означает "беги bash (новая оболочка) после запуска cd команда, а оболочка bash не завершится, пока мы не выйдем из нее.

Используйте sudo :). Серьезно, su вам не нужно. «sudo» лучше, поскольку вы используете его только для привилегированных команд и может помочь избежать ошибок. Вы также получаете ответственность.

Если вы используете «su», это интерактивная оболочка. Это то же самое, что и "sudo -s". «su -» создает оболочку входа в систему, которая переопределит среду. "sudo -i" эквивалентен sudo. Если вы пытаетесь получить интерактивную оболочку, вы всегда должны использовать форму sudo -i (или su -), в противном случае можно получить странные права доступа к файлам в домашнем каталоге пользователя.

вы должны изменить источник su, чтобы выполнить эту работу. в процедуре инициализации переменных окружения есть вызов chdir. прокомментируйте эти заявления, включенные в этот звонок. и теперь вы можете выполнить «su -», но сохранить текущий каталог.