Каковы права root для файла?

Каковы права root для файла?

Если я наберу:

ls -l file.txt

Я вижу, что права для этого файла эквивалентны «456»:

  • 4 = владелец (р--)
  • 5 = группа (прием)
  • 6 = другие (rw-)

Каковы права длякореньв этом случае? Имеет ли он 777?

Можно ли изменить права так, чтобы у пользователя root было меньше прав, чем у владельца?

решение1

Я бы проверилэта страница из. В нем подробно рассматриваются права доступа к файлам.

Но если отвечать на ваш вопрос напрямую, то нет:

Суперпользователь «root» имеет возможность доступа к любому файлу в системе.

В вашем примере, например, если владельцем файла является, скажем, bobи владельцем группы также является bob, то вы увидите что-то вроде этого:

-r--r-xrw-. 1 bob bob 8 Jan 29 18:39 test.file

Третья битовая группа (rw) также будет применяться к root, поскольку root является частью othersгруппы. Если вы попытаетесь редактировать этот файл как root, вы увидите, что у вас нет проблем с этим.

Но чтобы еще больше проверить вашу теорию, предположим, что владельцем файла является пользователь root:

-r--r-xrw-. 1 root root 8 Jan 29 18:40 test.file

И вы снова пошли редактировать файл, вы бы увидели, что у вас по-прежнему нет проблем с его редактированием.

Наконец, если вы прибегли к крайним мерам:

chmod 000 test.file
ls -lh test.file
----------. 1 root root 8 Jan 29 18:41 test.file

И вы снова пошли редактировать файл, который вы увидите (по крайней мере в vi/vim) "test.file" [readonly]. Но вы все еще можете редактировать файл и принудительно сохранить его с помощью :wq!.


Проверка заявления @Stéphane Chazelas с помощью файла скрипта оболочки:

#!/bin/sh

echo "I'm alive! Thanks root!"


[root ~]# ls -lh test.sh
----------. 1 atgadmin atgadmin 31 Jan 30 10:59 test.sh

[root ~]# ./test.sh
-bash: ./test.sh: Permission denied

[root ~]# sh test.sh
I'm alive! Thanks root!

@Shadur уже сказал это, поэтому я просто процитирую, а не буду пересказывать:

Примечание: проверяется наличие бита выполнения, а не его применимость к root.

решение2

Root имеет полный доступ к каждому файлу в системе по замыслу. Если вы хотите защитить файл от случайного удаления, вы можете использовать

chattr +i file

Это установит флаг неизменяемости на GNU/Linux. Вы можете снять его с помощью -iвместо +i.

На FreeBSD вы можете использовать

chflags schg file

Замените на noschg, чтобы schgотменить это.

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

Смотрите также:https://superuser.com/questions/104015/удаление-разрешения-на-запись-не-предотвращает-запись-файла-пользователем-root

решение3

Можно ли изменить права так, чтобы у пользователя root было меньше прав, чем у владельца?

Shure, это просто, просто измените файл passwd так, чтобы uid root был не равен нулю. С другой стороны, не делайте этого, это плохая идея.

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

Для начала, та часть компьютера, которая проверяет доступ, не знает вашего имени, она знает вас по номеру, и этот номер называется uid или идентификатором пользователя. Аналогичным образом она не знает имен групп, членом которых вы являетесь, только gid. Сопоставление между uid и именем находится в файле passwd, а gid отображается в файле groups.

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

Иногда вам разрешается пропускать проверки прав доступа к файлам. Почему? и (очень важно) Когда? Теперь есть некоторые вещи, которые иногда нужно сделать, но вы не хотите, чтобы кто-то их делал, и которые не очень хорошо вписываются в модель прав доступа к файлам. Всевозможные вещи, такие как открытие сетевого соединения на низком порту, монтирование раздела или пропуск проверок прав доступа. В наши дни эти вещи известны как полномочия. В старые времена у UID0 было все это, и с этим ничего нельзя было поделать, в наши дни вы можете давать полномочия другим пользователям или отменять их, но по умолчанию используется старое поведение.

Другой способ ограничить права root — использовать что-то вроде selinux, но это уже другая ерунда.

решение4

Какие права у root в этом случае? 777?

Да.

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

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

У пользователя root также может быть меньше прав, чем у владельца, если файл хранится в удаленно смонтированном каталоге, например NFS.

Наконец, обратите внимание, что разрешения на символические ссылки по сути бессмысленны.

Связанный контент