Pull to refresh

Comments 12

Уточню, что в данном случае решающими являются права на собственно папку /home/user/left-shoe/, а не $HOME (/home/user/).

А так да, права на содержимое файла не определяют права на его имя (или отсутствие имени) в данной папке.
Решающим являются права записи на каталог с файлом. А доступ X должен быть на всех каталогах, ведущих к файлу.
Да, элементарные права доступа редко кто знает, на собеседовании ни один нормально не отвечал. И это еще не касаясь темы ACL.
Гдето читал, что папка это тоже файл, но он содержит в себе список файлов которые внутри. Поэтому все логично: если можем писать в этот файл (папку) (изменять список), то можем удалять что угодно.
В концепции linux вроде всё есть файл.
chmod +t /home

Сегодня sticky bit используется в основном для каталогов, чтобы защитить в них файлы. Из такого каталога пользователь может удалить только те файлы, владельцем которых он является. Примером может служить каталог /tmp, в который запись открыта для всех пользователей, но нежелательно удаление чужих файлов. Установка атрибута производится утилитой chmod.
ru.wikipedia.org/wiki/Sticky_bit
В данном случае это не поможет, потому что:
  1. Папка left_shoe тоже юзеру. Если захочет, он снимет с неё sticky_bit, удалит файл, а потом вернёт sticky_bit обратно.
  2. Мало того, даже снимать sticky_bit необязательно. Я сейчас этому был несказанно удивлён, но:
    user@desktop:~$ mkdir shoe
    user@desktop:~$ chmod +t shoe
    user@desktop:~$ ls -ld shoe
    drwxrwxr-t 2 user user 4096 вер  7 19:14 shoe
    user@desktop:~$ sudo -s
    [sudo] password for user: 
    root@desktop:~# touch shoe/rock
    root@desktop:~# exit
    exit
    user@desktop:~$ ls -l shoe
    total 0
    -rw-r--r-- 1 root root 0 вер  7 19:16 rock
    user@desktop:~$ rm -f shoe/rock 
    user@desktop:~$ echo $?
    0
    user@desktop:~$ ls -l shoe
    total 0
    

    Вероятно, дело в том, что система «понимает», что владелец папки может и снять sticky_bit, поэтому не накладывает на него это ограничение, он может удалять в ней всё (ну, не буквально «понимает», а просто при проектировании системы прав это учли).
Ничего удивительного, просто википедия — не самый лучший источник знаний =)
Из stick-bit каталога удалять файлы могут: владельцы файлов, владелец каталога (!) и root.

man 1 chmod

RESTRICTED DELETION FLAG OR STICKY BIT
The restricted deletion flag or sticky bit is a single bit, whose interpretation depends on the file type. For directories, it prevents
unprivileged users from removing or renaming a file in the directory unless they own the file or the directory; this is called the
restricted deletion flag for the directory, and is commonly found on world-writable directories like /tmp. For regular files on some older
systems, the bit saves the program's text image on the swap device so it will load more quickly when run; this is called the sticky bit.
Самое весёлое — это если кому-то, кто не знает про такие трюки, создать подобный файлик и предложить его удалить. Главное, ls никакого криминала не показывает, файл не залочен, а удалить даже рутом — фиг.
Рок Теймер — укротитель камушков же или лучше в данном контексте Повелитель Камней
Выше правильно указали, корректно использовать «стики-бит» на папке, чем +i аттрибут на файле, насколько помню он (immutable) вообще завязан на типе ФС и не во всех работает. И да, из-за приколистов типа chattr +a, у меня уже рефлекс чекать файлы через lsattr

P.S. Не пускайте Чакка Норриса в консоль, а то и это не поможет :)
Sign up to leave a comment.

Articles

Change theme settings