Другой пользователь может видеть файл, даже если у них нет полномочий?

Если у меня есть файл, который имеет 700 или 600 полномочий, другие пользователи могут видеть файл? Конечно, они не смогут считать содержание, но являются ими все еще способный видеть, что это существует (т.е. посмотрите, что это - имя файла с ls команда)?

Кроме того, это затронуто разрешением каталога, в котором это находится? Если у другого пользователя есть полномочия к каталогу, они могут все еще видеть/изменять/удалять файл, даже при том, что у них нет полномочий в сам файл?

3
задан 2 May 2015 в 04:05

2 ответа

Для наблюдения файла (не его содержание, только сам файл), необходимо прочитать разрешение для родительских каталогов файла. Нет никаких полномочий "представления". Пока можно прочитать каталог, Вы будете в состоянии видеть все файлы в нем. Можно ли изменить файл или читать, его содержание будет зависеть от того, имеете ли Вы, выполняются, полномочия на каталоге (должен был удалить файл). Более подробно:

  1. , Если у Вас нет никакого , читает доступ к каталогу, Вы видите названия его содержания, но не их характеристик (полномочия, владелец, дата создания и т.д.). Это вызвано тем, что Вам нужен доступ для чтения, чтобы, ну, в общем, считать ту информацию:

    $ ls -l
    total 4
    drw-rw-rw- 3 terdon terdon 4096 May  2 20:21 dir1
    $ ls -l dir1/
    ls: cannot access dir1/subdir1: Permission denied
    ls: cannot access dir1/file1: Permission denied
    total 0
    -????????? ? ? ? ?            ? file1
    d????????? ? ? ? ?            ? subdir1
    
  2. , Если Вы не имеете , выполняются разрешение на каталоге, Вы не можете считать его содержание, даже если у Вас есть доступ для чтения к каталогу, потому что список его содержания требует, чтобы Вы, чтобы быть в состоянии открыться ("выполнили") каталог:

    $ ls -l 
    total 4
    d-wx-wx-wx 3 terdon terdon 4096 May  2 20:21 dir1
    $ ls -l dir1/
    ls: cannot open directory dir1/: Permission denied
    
  3. , Если Вы не имеете запись доступ к каталогу, Вы видите его файлы, но не можете удалить/создать их, , даже если у Вас есть доступ для чтения-записи к файлу . Это вызвано тем, что создание или удаление файла из каталога включают изменение самого каталога (так как Вы изменяете его содержание), и Вам нужен доступ для записи для этого:

    $ ls -l
    total 4
    dr-xr-xr-x 3 terdon terdon 4096 May  2 20:21 dir1
    $ ls -l dir1/
    total 4
    -rwxrwxrwx 1 terdon terdon    0 May  2 20:21 file1
    drwxr-xr-x 3 terdon terdon 4096 May  2 20:19 subdir1
    $ rm dir1/file1 
    rm: cannot remove ‘dir1/file1’: Permission denied
    $ touch dir1/file2
    touch: cannot touch ‘dir1/file2’: Permission denied
    

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

$ ls -l dir1/
total 0
---------- 1 bob bob 0 May  4 15:45 file1
$ cat dir1/file1 
cat: dir1/file1: Permission denied
$ echo "foo" > dir1/file1 
bash: dir1/file1: Permission denied

я не имею прав вообще на файл выше, но могу все еще видеть его. Я не могу ни отредактировать его, ни считать его, но я вижу, что это существует. Я могу, однако, удалить его:

$ rm dir1/file1 
rm: remove write-protected regular empty file ‘dir1/file1’? y

Это вызвано тем, что у меня есть доступ для записи к родительскому каталогу. Я могу поэтому изменить его содержание, включая любые файлы там. Если бы я должен был удалить доступ для записи из каталога, то я не был бы в состоянии удалить файл, как объяснено выше.

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

2
ответ дан 1 December 2019 в 15:57

Рев Вы видите, что я делаю тестовую папку и изменяю владение той папки другому пользователю. Я не могу создать файл, если каталог не принадлежит мне. Точно так же как testuser, я не мог удалить тестовый файл, принадлежавший моей учетной записи. Но как Вы видите, если пользователь может работать sudo, тот пользователь может изменить владение папки, полномочия файла изменения, и таким образом - просматривают и изменяют файл

$ mkdir tester
$ chown testuser:testuser tester/
chown: changing ownership of ‘tester/’: Operation not permitted

$ sudo chown testuser:testuser tester/                                 
[sudo] password for xieerqi: 

$ ls -l tester
total 0

$ touch tester/testfile                                                
touch: cannot touch ‘tester/testfile’: Permission denied

$ sudo chown xieerqi:xieerqi tester/                                   
$ touch tester/testfile                                                
$ chmod 700 tester/testfile
mksh: chmod: can't execute: Permission denied

$ sudo chmod 700 tester/testfile                                       
$ sudo su testuser

testuser@foo $ ls -l tester/testfile 
-rwx------ 1 xieerqi xieerqi 0 May  2 08:46 tester/testfile
testuser@foo $ rm tester/testfile
rm: remove write-protected regular empty file ‘tester/testfile’? 
testuser@foo $ ls -l tester/testfile 
-rwx------ 1 xieerqi xieerqi 0 May  2 08:46 tester/testfile
2
ответ дан 1 December 2019 в 15:57

Другие вопросы по тегам:

Похожие вопросы: