2013-07-19 2 views
3

Если у файла были только права на запись, как пользователь мог бы использовать его право редактировать файл, если он не мог его прочитать?Разрешения для файлов Unix - пишет ли запись?

«пишет» означает «читать» в Unix?

+3

Не совсем. Вы можете протестировать его, выполнив 'chmod 722' в файл, а затем назначив другому пользователю. Вы сможете «echo» hello »> file', но не' cat file'. – fedorqui

+0

Хм. Интересно, что он создает ситуацию, когда пользователи могут слепо редактировать и не видеть, какие результаты. Это тот тип ответа, который я искал. Благодарю. –

+0

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

ответ

4

В unix-подобных системах может быть много файлов. Это может быть, например, конвейер, где пользователь может отправлять данные, но не получать данные. Так что нет, разрешение на запись не подразумевает чтение.

Другим примером может быть каталог, в котором пользователь может депонировать данные (потенциально уничтожать существующие данные), но не читать то, что другие депонировали.

+0

Я не уверен в каталоге только для записи: запись в файл требует проверки на его существование (при открытии файла для записи система будет неявно проверять его существование), поэтому я думаю, что каталог должен по крайней мере be 'chmod + wx', если вы хотите написать в нем, действительно ли вы делали тесты с файлом только для записи (может быть, я ошибаюсь)? –

1

1) написать означает только писать только - так, никак не сделать так
2) Нет

+0

Благодарим вас за добавление ответа. –

+0

@ElwoodHopkins - я ответил на первый вопрос (по теме), а затем перечитал вопрос и отредактировал, чтобы ответить на оба вопроса в теле вопроса. – KevinDTimm

3
  1. Вы не можете быть слепым, и все еще быть в состоянии написать:

    $ касаетесь
    $ CHMOD 0200 а
    $ Ls -LN
    --w ------- 1 1000 1000 4 19 июля 15:13
    $ кошку
    кошка: а: отказано в
    $ эхо "секретное сообщение" >> a
    $ CHMOD 0400
    $ кошку
    секретное сообщение

  2. Неа :)

+0

Вы можете использовать четыре пробела перед строками кода, чтобы их форматировать. Нет необходимости в 'br'. – fedorqui

+0

Хорошо. Спасибо. Я буду учитывать это. –

4

чтение, запись, выполнение разрешения в Unix/Linux являются независимыми. Возможно разрешение на запись без разрешения на чтение. Для файлов двоичных файлов вы могли видеть, что разрешение на чтение не предоставляется, но разрешение на выполнение позволяет выполнить его. С другой стороны, сценарий оболочки или любой другой файл, который должен быть интерпретирован, нуждается в разрешениях на чтение для выполнения.

Простое предоставление разрешений на запись без чтения позволит вам написать (также удалить) файл, не имея возможности его прочитать.

Следующие должны быть очевидны:

$ touch foo 
$ ls -l foo 
-rw-rw-r-- 1 devnull devnull 0 Jul 19 12:00 foo 
$ chmod -r foo 
$ ls -l foo 
--w--w---- 1 devnull devnull 0 Jul 19 12:00 foo 
$ cat foo 
cat: foo: Permission denied 
$ echo hey > foo 
$ ls -l foo 
--w--w---- 1 devnull devnull 4 Jul 19 12:00 foo 
$ cat foo 
cat: foo: Permission denied 
$ > foo 
$ ls -l foo 
--w--w---- 1 devnull devnull 0 Jul 19 12:00 foo 
$ rm -f foo 
$ ls -l foo 
ls: cannot access foo: No such file or directory 
Смежные вопросы