LINUX.ORG.RU

File ownership

 


0

2

Заметил одну вещь, которую не могу сам объяснить логически. Есть File, принадлежащий root.root. user запускает:

gzip File

Создается File.gz c правами user.user, а File удаляется. Вопрос: по какому праву user смог удалить File, принадлежащий root?

И что, что ‘root’, если ‘rwx’ для всех.

$ ls -l ~/Desktop
total 0
-rwxrwxrwx 1 root root 0 Jul 11 17:04 File
$ echo "Просто филе." >> ~/Desktop/File
$ ls -l ~/Desktop
total 4
-rwxrwxrwx 1 root root 23 Jul 11 17:07 File
$ cat ~/Desktop/File
Просто филе.
$ rm ~/Desktop/File
$ ls -l ~/Desktop
total 0
andytux ★★★★★
()
Последнее исправление: andytux (всего исправлений: 1)
Ответ на: комментарий от andytux
user@bel02:w$ ls -la
total 12
drwxrwxr-x 2 user user 4096 июл 11 17:22 .
drwxrwxr-x 3 user user 4096 июл 11 17:16 ..
-rw-rw-r-- 1 root   root     53 июл 11 17:23 File
user@bel02:w$ gzip File 
user@bel02:w$ ls -la
total 12
drwxrwxr-x 2 user user 4096 июл 11 17:25 .
drwxrwxr-x 3 user user 4096 июл 11 17:16 ..
-rw-rw-r-- 1 user user   73 июл 11 17:23 File.gz
valentin630
() автор топика
Ответ на: комментарий от anonymous

Извините, слэнга сисадминов не понимаю. Но «делай раз, делай два» смогу повторить, если пойму для чего.
Вопрос в том, где написано черным по белому правило, что права директории сильнее прав присвоенных файлу в этой директории?

valentin630
() автор топика
Ответ на: комментарий от valentin630

мне до сисадмина далековато будет, я максимум админ локалхоста. не знаю как ещё проще растолковать моё прошлое предложение… но суть не в этом.

ты применяешь к файлу команду, а затем спрашиваешь как файловая система такое допускает. ну прям магия какая-то? (да нет)

в идеале необходимо выполнить операцию над файлом под наблюдением специального ПО (например не gzip File, а strace gzip File|less или в файл сохранить вывод команды). Там будут «все ходы записаны» (системные вызовы для файловых операций) и смотря на них можно будет сформулировать правильный вопрос (что-то вроде «какое такое право имел gzip удалять файл пользователя root из группы root, что его авторы себе позволяют» и т.д.)

как-то так

anonymous
()
Ответ на: комментарий от valentin630

Вопрос в том, где написано черным по белому правило, что права директории сильнее прав присвоенных файлу в этой директории?

Нигде, потому что эти права даже никогда не сравниваются. Правильный ответ и прекрасная аналогия приведены здесь: File ownership (комментарий)

Другие случаи, когда на удаление не хватит прав, можно найти в man unlink.2, раздел ERRORS.

anonymous
()

Может, так понятнее будет, не знаю.

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

fat-II
()
Ответ на: комментарий от valentin630

что права директории сильнее прав присвоенных файлу в этой директории?

Они не сильнее, у файла просто НЕТ прав на удаление.
В винде - есть. Там у каждого файла есть право Delete. А в Линуксе только rwx - read/write/execute.

Поэтому право на удаление дает право записи в каталог, содержащий файл.

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

Тебе домашнее задание - прочитать про sticky-бит на каталог.

bigbit ★★★★★
()
Последнее исправление: bigbit (всего исправлений: 1)