[quote=mogul82]2 = write (право на запись)
не на запись, а на модификацию.[/quote]Неужели? Так там бы была буковка m, а не w. :lol:
[quote=mogul82]2 = write (право на запись)
не на запись, а на модификацию.[/quote]Неужели? Так там бы была буковка m, а не w. :lol:
Неужели? Так там бы была буковка m, а не w.
ну мало-ли. объясните мне лучше назначение команд "кошка", и "чай". Про команду "ещё" не забудьте.
Поведайте нам также об этимологии слов mount и grep.
Если серьёзно, то в английском языке слово write имеет не совсем то значение. А в данном случае даже дело не в слове, а в режиме "w", с которым открывается файл. В этом режиме OS сразу после открытия уничтожает всё старое содержимое файлов, а для добавления информации служит режим "a". Вот только право всего одно и для добавления и для перезаписи. Потому я называю его "модификацией", что-бы подчеркнуть, что право действует не только на запись.
ну мало-ли. объясните мне лучше назначение команд "кошка", и "чай".
Понятия не имею, не играл в wow.
Про команду "ещё" не забудьте.
А там и такая есть?
Поведайте нам также об этимологии слов mount и grep.
Уж лучше Вы к нам. :)
Если серьёзно, то в английском языке слово write имеет не совсем то значение. А в данном случае даже дело не в слове, а в режиме "w", с которым открывается файл. В этом режиме OS сразу после открытия уничтожает всё старое содержимое файлов, а для добавления информации служит режим "a". Вот только право всего одно и для добавления и для перезаписи. Потому я называю его "модификацией", что-бы подчеркнуть, что право действует не только на запись.
Да, drBatty, с такими претензиями нужно обращаться к составителям стандартов, а не объяснять тут на пальцах почему там должна быть буковка "m".
Понятия не имею, не играл в wow.
А там и такая есть?
Уж лучше Вы к нам
куда "к вам"? в венду что-ли? все эти команды не из WoW, а из UNIX'а.
с такими претензиями нужно обращаться к составителям стандартов, а не объяснять тут на пальцах почему там должна быть буковка "m".
там должна быть буква w, которую следует понимать как "модификация". wink
Вау. Тогда уж, не из UNIX'а, а из ЮНИКС'а. :)все эти команды не из WoW, а из UNIX'а.
Какое-то слишком перевернутое понимание.там должна быть буква w, которую следует понимать как "модификация". wink
Какое-то слишком перевернутое понимание.
со временем вы поймёте.
со временем вы поймёте.[/quote]Ваше понимание в данном вопросе мне не интересно.[quote=snatch]Какое-то слишком перевернутое понимание.
Ваше понимание в данном вопросе мне не интересно.
взаимно
[offtop]
а буква "а" Мне казалось служит только для добавления в конец файла без возможноcти чтения/fseek/rewind? для модификации вроде "r+" используется? или не про это тема?
а буква "а" Мне казалось служит только для добавления в конец файла без возможноcти чтения/fseek/rewind? для модификации вроде "r+" используется? или не про это тема?
a, w, и r это режимы. добавления, перезаписи, и чтения.
есть ещё a+, w+, r+ это тоже самое но с возможностью чтения (а последний с возможностью записи).
подробнее в man fopen.
Но есть и атрибут +a, AppendOnly. это уже атрибут файла, как и права. хранится в инодах, установить может только root. Если этот атрибут установлен, то к файлу можно только добавлять (и читать, если +r). Если установлен для каталога, то в таком каталоге можно только создавать файлы, и модифицировать существующие. Удалять и переименовывать файлы нельзя. Устанавливается командой chattr +a.
а буква "а" Мне казалось служит только для добавления в конец файла без возможноcти чтения/fseek/rewind? для модификации вроде "r+" используется? или не про это тема?
Тут уже не понятно откуда тема растет.
А ты говоришь про опции открытия файлов в с++ например, а мы про расшифровку прав файлов (chmod) например.
Тут уже не понятно откуда тема растет.
А ты говоришь про опции открытия файлов в с++ например, а мы про расшифровку прав файлов (chmod) например.
я в этой теме и про то и про другое писал smile
А давайте спустимся на уровень системных вызовов :)
По отношению к файлу есть системный вызов write(2)
Системного вызова modification нет.
По отношению к файлу есть системный вызов write(2)
Системного вызова modification нет.
да. вот только действие write(2) зависит от действия open(2), как вы файл откроете, так и (не)будет работать write(2). А открыть вы можете файл over9000 способами. Причём права файлов могу помешать работе write(2), а могут и не помешать - зависит от режима.
И вообще, понятие "запись" слишком размыто - я могу создать файл, причём так его создать, что туда "запись" будет запрещена. Это как? Я могу удалить файл, причём право "записи" мне не нужно. Всё потому, что при удалении я не модифицирую файл, я его просто уничтожаю.
И ещё: где временной штамп записи?
да, надоели.
вот вам запись в файл защищённый от записи:
[console]doc@dt:~$ echo "test" > t.txt
doc@dt:~$ chmod 400 t.txt
doc@dt:~$ ll t.txt
-r-------- 1 doc users 5 2011-01-04 20:33 t.txt
doc@dt:~$ cp -p t.txt t2.txt
doc@dt:~$ ll t*.txt
-r-------- 1 doc users 5 2011-01-04 20:33 t.txt
-r-------- 1 doc users 5 2011-01-04 20:33 t2.txt
[/console]
или это "не запись"? что, я не записал 5 байтов в файл t2.txt ?
Будете придираться - ещё и отредактирую.
А открыть вы можете файл over9000 способами.
Опять же есть флаги O_WRONLY и O_RDWR.
Что бы модифицировать содержимое файла, надо в него по любому записать :lol:
или это "не запись"?
Запись, запись :)
Мы все в курсе, что :
1) права файла учитываются только в момент открытия
2) при чтении/записи учитывается режим дескриптора открытого файла
3) про создании файла creat(t.txt,000) ( что аналогично open(t.txt,O_CREAT|O_WRONLY|O_TRUNC,000) ) файл будет открыт на запись (режим дескриптора), хотя права самого файла будут 000 ( и эти права будут использоваться только попытке заново открыть файл).
короче w - write - запись :P
Я могу удалить файл, причём право "записи" мне не нужно.
нужно право на запись и исполнения на каталог :P
Будем придираться. В файл не писал а читал с него.
O_TRUNC - способ модифицировать файл, без выполнения write(2), но требуется права w на файле :o
Что бы модифицировать содержимое файла, надо в него по любому записать
нужно-нужно. Но что-бы записать, необязательно модифицировать содержимое файла. Вот как в моём примере - я записал туда 5 байт, но при этом ничего не модифицировал. Потому запись успешная. При попытке модификации - получу по рукам.
нужно право на запись и исполнения на каталог
а причём тут каталог?
Уничтожение - тоже запись, ибо блоки занятые файлом "освобождаются", и будут перезаписаны. И не важно, что не сразу. Т.е. при уничтожении файл стирается (пусть и не сразу), и тем не менее - не модифицируется: в общем случае невозможно поменять скажем все буквы t на Z внутри файла, т.к. файл может быть частично (или полностью) уничтожен. Модификация хоть и происходит, но не нами, и мы никак не можем на это повлиять (почему, кстати, я всегда храню ценные данные на отдельном разделе - в общий раздел сама система может записать что угодно, или я нечаянно. На отдельном разделе остаются даже удалённые данные).
А каталог тут совсем не при делах - там лежит имя файла, а имя файла как известно к самому файлу не относится. У файла может быть сколько угодно имён, в т.ч. и не быть вовсе.
Будем придираться. В файл не писал а читал с него.
я читал t.txt, а вот в t2.txt я писал - очевидно, что на тех блоках небыло ТЕХ пяти байт.
O_TRUNC - способ модифицировать файл, без выполнения write(2), но требуется права w на файле
о чём я и говорю - write тут не причём, и буквочка w на самом деле имеет ненамного больше отношение к записи, чем моя кошка к команде cat (или вы мне будете доказывать, что cat имеет отношение к кошкам? так и право w не имеет прямого отношения к записи).
Короче: то, что есть право w, вовсе не говорит, что это право идентично праву записи, о чём я и писал изначально. Причём в данном случае это важно: злоумышленник может переделать наш файл, если мы об этом хоть раз позабудем.
При попытке модификации - получу по рукам.
Нет. Получите по рукам при попытке открыть на запись :) До попытки записать(модифицировать) дело не дойдет.
чем моя кошка к команде cat
cat - сокращение от catenate
а w от write
Уничтожение - тоже запись
не согласен.