elentin@falcon:~/test$ ls -l итого 4 dr-------- 2 elentin 1002 4096 Июл 10 18:09 a elentin@falcon:~/test$ elentin@falcon:~/test$ mv a ../b mv: невозможно переместить `a' в `../b': Отказано в доступе
/*
* If we are going to change the parent - check write permissions,
* we'll need to flip '..'.
*/
if (new_dir != old_dir) {
error = inode_permission(old_dentry->d_inode, MAY_WRITE);
if (error)
return error;
}
хаха. операция rename(2) по сути неатомарна, она либо 1) модификация dir entry напрямую либо (переименование) 2) транслируется в link(2). право на запись в dir entries для "." и ".." насильно отобрано у всех, кроме root'а, а то так и / можно не пойми в куда замкнуть.
на самом деле очень даже имеет. rename(2), как я уже поведал, неатомарный и сводится к link(2) в твоём случае в mv. у link(2) две функции - увеличить счётчик link count или обновить ".." для случая mv, если mv делается в пределах той же самой файловой системы. причина, по которой для случая (2) используется link(2) такая, что не-руту в явном виде запрещены манипуляции (на запись) с "." и ".." (через opendir, seekdir & write). проверка на разрешение записи здесь вторична и есть следствие униформности прав доступа в юниксе. я не возражаю, я дополняю Ж)
_slw
2009-07-10 17:52 (местное)
tobotras
2009-07-10 18:09 (местное)
elentin
2009-07-10 17:58 (местное)
elentin
2009-07-10 18:00 (местное)
tobotras
2009-07-10 18:09 (местное)
elentin
2009-07-10 18:12 (местное)
elentin@falcon:~/test$ ls -l
итого 4
dr-------- 2 elentin 1002 4096 Июл 10 18:09 a
elentin@falcon:~/test$
elentin@falcon:~/test$ mv a ../b
mv: невозможно переместить `a' в `../b': Отказано в доступе
svv
2009-07-10 18:34 (местное)
Вот и первоисточник http://git.kernel.org/?p=linux/kernel/g
ivlad
2009-07-10 18:48 (местное)
Но если про это не думать, то неочевидно. :)
shaman007
2009-07-10 19:09 (местное)
mac:~ apple$ chmod 000 a
mac:~ apple$ mv a/ b/
mv: rename a/ to b/a/: Permission denied
mac:~ apple$ uname -a
Darwin mac.local 10.0.0b2 Darwin Kernel Version 10.0.0b2: Tue Jun 23 18:38:45 PDT 2009; root:xnu-1456.1.8~1/RELEASE_I386 i386
mac:~ apple$
Логично.
tobotras
2009-07-10 19:53 (местное)
avnik
2009-07-10 18:35 (местное)
tobotras
2009-07-10 19:53 (местное)
dado
2009-07-10 19:44 (местное)
tobotras
2009-07-10 19:53 (местное)
bish0nen
2009-07-10 20:08 (местное)
bish0nen
2009-07-10 20:26 (местное)
bish0nen
2009-07-10 20:33 (местное)
tobotras
2009-07-10 20:37 (местное)
bish0nen
2009-07-10 20:52 (местное)
tobotras
2009-07-10 20:35 (местное)
bish0nen
2009-07-10 20:51 (местное)
tobotras
2009-07-10 21:01 (местное)
bish0nen
2009-07-14 04:54 (местное)
dserv
2009-07-30 12:53 (местное)
kamiram
2009-07-11 01:50 (местное)
но! ежели(а это 99%) происходит запись в данные нода, значит должен
ex_xaocuc
2009-07-11 10:00 (местное)