Як я можу записатись у каталог як root?


10

Скажімо, є каталог, до якого я не маю привілеїв доступу. Очевидно sudo cd foo, не буде працювати, тому cdщо оболонка вбудована в кожну оболонку коли-небудь.

Поки щойно я використовував sudo bash(так, я знаю, що є кращі способи) отримати кореневу підказку. Тоді я можу cdпотрапити в довідник, щоб розібратися.

Чи є кращий спосіб зробити це?


Чому б ви хотіли використовувати cdкорінь (якщо ви насправді не є кореневою оболонкою)?
трійка

якщо каталог був власником root і не було глобального виконання
strugee

1
Це насправді не є дійсним випадком. Може бути корисним можливість читати каталог, але це не вимагає, щоб каталог був вашим робочим каталогом, тобто вам не потрібно cd.
трійка

так, я не усвідомлював цього, поки прийнята відповідь не вказала, що я можу просто sudo ls.
strugee

Відповіді:


12

Ні, немає шляху до cdкаталогу, який дозволяє тільки root без кореня. Справді не повинно бути занадто багато каталогів, які мають це обмеження. У більшості випадків це доступ до певного файлу, який обмежений, наприклад, до /etc/shadowфайлу або певних файлів журналу в /var/log.

Ви можете використовувати їх, sudo ls <dir>щоб побачити їх замість bash. Також при використанні sudoдля використання root ви зазвичай хочете встановити користувача ( suкоманду) замість bash, тому замість цього використовуйте цю команду:

$ sudo su -

Те ж саме можна зробити і за допомогою -iперемикача sudo :

$ sudo -i

уривок зі сторінки man щодо sudo -i

Параметр -i (імітувати початковий вхід) запускає оболонку, вказану у записі passwd (5) цільового користувача, як оболонку входу. Це означає, що оболонки зчитуються специфічними для входу файлами ресурсів, такими як .profile або .login. Якщо вказана команда, вона передається оболонці для виконання. В іншому випадку виконується інтерактивна оболонка.

Для файлів, до яких ви не можете отримати доступ, ви можете скористатися однією з цих sudoкоманд:

$ sudo tail /var/log/messages

$ sudo less /etc/shadow

3
Чому б ви використовували sudo su -замість sudo -i? Вони обидва надають вам усі привілеї суперпользователя, хоча все, що вам потрібно, - це можливість CAP_DAC_READ_SEARCH.
Стефан Шазелас

@StephaneChazelas - я ніколи раніше не помічав цього перемикача. Моє первісне вступ sudoбув через середовище Solaris, і версія sudoцього там не включала цей перемикач. Переглядаючи журнал зміни судо, схоже, що цей варіант був доданий у 2004 році. Здається, я зустрічаюся з цим, але ви запитали 8-). Я зміню відповідь, щоб вона включала обидва, дякую!
slm

@ StéphaneChazelas Я згоден. Я вважаю за краще, sudo -Hiоскільки він також встановлює домашній каталог (він не встановлює дім за замовчуванням у моєму дистрибутиві, за замовчуванням може змінюватися). Якщо ви цього не зробите, у вашому домі можуть виникнути файли, що належать root, якщо вони створюють там нові файли.
doug65536

5

Ні, немає. Вам потрібна оболонка, що працює як root.


І, як зазначалося в коментарях, це зовсім безглуздо, cdякщо ви не запустите оболонку або подібний процес.
трійка

0

Правильно, ти не можеш. Ось вирішення, хоча:

sudo sh -c "cd restricted-dir; some_command"
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.