Как может я CD в каталог как корень?

Добро пожаловать в unix.stackexchange.com!

Нет никакого легкого ответа на Ваш вопрос, и намного лучшие люди, чем я записали все книги на предмет ядра Linux и операционных систем в целом.

Об объеме проекта: запись операционной системы не является простой задачей! Даже целеустремленно минимальная ОС как Minix является довольно сложной вещью! Для давания Вам общее представление о Linux думайте о программах C, которые Вы записали до сих пор. Средняя университетская курсовая работа имеет тенденцию быть несколькими тысячами строк C самое большее. Я думаю, что мой заключительный проект года был приблизительно 30-35 000 строками C++. Ядро Linux является примерно 13 000 000 строк кода C.

Почему все это находится в отдельных файлах? Большие проекты хранятся в отдельных файлах по логистическим и практическим причинам. Просто рассмотрите загрузку 13 000 000 файлов строки в редактора! Прежде, чем заняться огромным проектом как Linux, необходимо определенно заточить навыки C до такой степени, когда, ‘почему несколько файлов’ вопрос отвечают на себя. Необходимо также смочь прочитать код C, не просто пишут это. (тяжелее, чем он кажется сначала),

Необходимо определенно быть очень опытными в C. Ядро сохраняется тысячами людей, и Вас позвонят для понимания персональных идиом C каждого из них (предоставленный, в рамках довольно твердых стандартов кодирования ядра, но все еще — у всех есть их собственный решающий проблему стиль).

После того, как Вы получаете свой C fu, удостоверьтесь, что Вы понимаете операционные системы. Это поможет Вам понять код. Не весь Linux необходим. Надлежащее ядро является довольно маленьким! Что чрезмерно увеличивается в размерах, это:

  • Тысячи драйверов оборудования для различных устройств.
  • Уровни абстракции для различных классов устройства для упрощения API и записи драйвера. Например, у нас есть VFS для файловых систем, уровень Event для устройств ввода данных, и так далее.
  • Шокирующие количества условно скомпилированного кода и файлов, угождающих различной архитектуре, которая запускает Linux (не каждой машиной Linux является Intel PC, и некоторые невероятно отличаются от того, что Вы могли бы ожидать). Ядро должно иметь дело с этими различиями, и это означает больше кода.

Одна проблема, которую Вы найдете сразу, состоит в том, что эти компоненты не настолько легко отключить, измениться и включиться назад вместе снова. Существуют многочисленные взаимосвязи. Короче говоря, изменение битов ядра хитро.

Причина люди предложили Minix Вам, проста: это - полная операционная система, но это не обременено потребностями системы, столь же сложной как Linux. Код является маленьким, но все еще обеспечивает полную функциональность. В конце концов, первые версии Linux были вдохновлены Minix.

Несомненно, Minix имеет меньше поддержки оборудования в эти дни.И что? Это - благо! Современные компьютеры виртуализируют очень хорошо. Используйте это в ваших интересах: VM для выполнения Minix так легок, он сделает разработку бездельничанием.

Если Ваш проект состоит в том, чтобы создать операционную систему, Вы могли бы сделать хуже, чем запуститься путем изучения Minix. Можно также хотеть купить и прочитать книгу, которая Minix был записан для сопровождения, ‘современные Операционные системы Andrew Tanenbaum’.

Необходимо также поставить цели и определить условия точно. Если Вашим собственным определением ОС является Microsoft (ОС с GUI и полным программным пакетом), можно быть в для очень длинного проекта! Сотни тысяч людей работали с 1960-х, чтобы принести нам, где мы теперь, в конце концов.

Наконец, помните боевой клич Программиста: ‘никогда не изобретайте велосипед!’ (нам нравится делать исключения при изучении, конечно. И для забавы :))

10
22.06.2013, 10:11
3 ответа

Нет, нет пути к cd к каталогу, который только позволяет корень, не будучи корнем. Действительно не должно быть слишком многих каталогов, которые имеют это ограничение. Большую часть времени это - доступ к данному файлу, это ограничило такой как /etc/shadow файл или определенные файлы журнала под /var/log.

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

$ sudo su -

Можно также выполнить то же самое с sudo's -i переключатель:

$ sudo -i

выборка из страницы справочника относительно sudo -i

-i (моделируют начальный вход в систему) опция выполняет оболочку, указанную в passwd (5) запись целевого пользователя как оболочка входа в систему. Это означает, что определенные для входа в систему файлы ресурсов, такие как .profile или .login будут считаны оболочкой. Если команда указана, она передается оболочке для выполнения. Иначе интерактивная оболочка выполняется.

Для файлов, что Вы не можете получить доступ к Вам, может использовать любой из них sudo команды:

$ sudo tail /var/log/messages

$ sudo less /etc/shadow
12
27.01.2020, 20:01
  • 1
    Почему Вы использовали бы sudo su - вместо sudo -i? Они оба дают Вам всем полномочия суперпользователя, хотя все, в чем Вы нуждаетесь, является возможностью CAP_DAC_READ_SEARCH. –  Stéphane Chazelas 22.06.2013, 16:09
  • 2
    @StephaneChazelas - Я никогда не замечал что переключатель прежде. Мое исходное введение в sudo был через среды Соляриса и версию sudo это было, там не включал этот переключатель. Просмотр sudo журнала изменений, похоже, что опция была добавлена в 2004. Угадайте, что я встречаюсь со мной с этим, но Вы спросили 8-). Я исправлю ответ для включения обоих, Спасибо! –  slm♦ 22.06.2013, 17:59
  • 3
    @StéphaneChazelas я соглашаюсь. Я предпочитаю sudo -Hi потому что это устанавливает корневой каталог также (это не устанавливает домой по умолчанию на моем дистрибутиве, значение по умолчанию может варьироваться). Если Вы не делаете, можно оказаться с корневыми файлами в доме, если это создает новые файлы там. –  doug65536 07.11.2015, 08:08

Нет, нет. Вам нужна оболочка, работающая как корень.

5
27.01.2020, 20:01
  • 1
    И, как указано в комментариях, довольно бессмысленно cd если Вы не выполняете оболочку или сопоставимый процесс. –  tripleee 23.06.2013, 10:28

Верно, нельзя. Вот обходной путь:

sudo sh -c "cd restricted-dir; some_command"
0
27.01.2020, 20:01

Теги

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