2013-08-27 2 views
3

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

Файл file.jpg, который находится в папке 2012/.

Детали файла:

-r--r--r-- 1 root root 10294 Feb 19 2013 file.jpg 

детали Папка:

drwxr-xr-x 2 charly charly 36864 Aug 27 15:38 2012/ 

Мое намерение состоит в том, чтобы запретить пользователю переименовать файл, но с правами доступа, поскольку они, что он способен.

Что мне не хватает?

+0

Является ли пользователь в каких-либо привилегированных 'группах'? Кроме того, этот вопрос может быть лучше для SuperUser или даже ServerFault. – SunSparc

+0

Нет, пользователь - простой пользователь. Пользователь не может переименовывать или изменять файлы в каталогах, принадлежащих root. –

+0

Почему вы хотите предотвратить переименование файла? Изменение файла означает изменение некоторых данных (или метаданных) в нем (в его inode). ** Почему вы спрашиваете? ** –

ответ

5

Вы не изменяете файл при переименовании или перемещении его в той же файловой системе, потому что файл действительно является inode (который может иметь ноль, одно или несколько имен файлов в каталогах).

Переименование файла - это операция внутри соответствующих каталогов (а не самого файла). Возможно, удастся удалить доступ к записи в каталог (но если пользователь владеет каталогом, он может снова изменить эти разрешения в каталоге с помощью chmod). Читайте также о sticky bit в каталогах.

BTW, пользователь может также жестко связать тот же файл, то есть добавить к нему новое имя файла. Затем каждое имя файла ссылается на тот же файл.

+0

Спасибо. И как бы вы это сделали, не удаляя права на запись в каталоге для пользователя (так как пользователю нужно добавлять или изменять другие файлы)? Есть ли способ, о котором вы можете думать? –

2

Разрешения на файл запрещают/разрешают доступ к файлу . Переименование файла не связано с изменением самого файла - переименование на самом деле является изменением в каталоге .

Попробуйте изменить права доступа к директории:

dr-xr-xr-x 

и посмотреть, что происходит.

Смежные вопросы