Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

unlink

1 view
Skip to first unread message

Michael Dukelsky

unread,
Jun 20, 2020, 12:20:15 PM6/20/20
to
Привет, All!

Почему-то у меня unlink удаляет всё, даже файл, принадлежащий руту.

$ cat test1
#!/usr/bin/perl

sub createFile
{
my $file = shift;
open(FH, ">", $file) or die("Cannot create $file: $!");
close(FH);
}
createFile("./qqq.txt");
system("ls -l");
chmod(0000, "./qqq.txt");
system("ls -l");
system("sudo chown root:root ./qqq.txt");
system("ls -l");
unlink "./qqq.txt";
system("ls -l");

Результат выполнения:
$ ./test1
total 4
-rw-rw-r--. 1 mike mike 0 июн 20 19:09 qqq.txt
-rwxr-xr-x. 1 mike mike 314 июн 20 19:08 test1
total 4
----------. 1 mike mike 0 июн 20 19:09 qqq.txt
-rwxr-xr-x. 1 mike mike 314 июн 20 19:08 test1
total 4
----------. 1 root root 0 июн 20 19:09 qqq.txt
-rwxr-xr-x. 1 mike mike 314 июн 20 19:08 test1
total 4
-rwxr-xr-x. 1 mike mike 314 июн 20 19:08 test1

Что я делаю не так?

Желаю успехов, All!
За сим откланиваюсь, Michael.

... node (at) f1042 (dot) ru

Michael Dukelsky

unread,
Jun 21, 2020, 7:15:16 AM6/21/20
to
Привет, Michael!

20 June 2020 19:11, Michael Dukelsky послал(а) письмо к All:

MD> Почему-то у меня unlink удаляет всё, даже файл, принадлежащий руту.

Дошло. Для удаления файла нужно разрешение на запись в каталог, потому что
удаление файла - это не запись в файл, а изменение каталога. Разрешения для
самого файла роли не играют.

Желаю успехов, Michael!

Eugene Grosbein

unread,
Jun 27, 2020, 2:35:20 PM6/27/20
to
20 июня 2020, суббота, в 19:11 NOVT, Michael Dukelsky написал(а):

MD> Почему-то у меня unlink удаляет всё, даже файл, принадлежащий руту.
MD> Что я делаю не так?

Право на удаление файла по умолчанию это право записи в каталог.
Если ты имеешь право на запись в каталог - ты имеешь право
удалять в нём любые файлы независимо от их прав доступа и от
их владельцев.

Если ты хочешь, чтобы из каталога пользователь мог удалять
только собственные файлы, поставь на каталог sticky bit:
chmod +t dirname

И это не имеет отношения к Perl, это основы юникса.

Eugene

Michael Dukelsky

unread,
Jun 27, 2020, 2:40:19 PM6/27/20
to
Привет, Eugene!

21 June 2020 14:23, Eugene Grosbein послал(а) письмо к Michael Dukelsky:

MD>> Почему-то у меня unlink удаляет всё, даже файл, принадлежащий
MD>> руту. Что я делаю не так?

EG> Право на удаление файла по умолчанию это право записи в каталог.
EG> Если ты имеешь право на запись в каталог - ты имеешь право
EG> удалять в нём любые файлы независимо от их прав доступа и от
EG> их владельцев.

EG> Если ты хочешь, чтобы из каталога пользователь мог удалять
EG> только собственные файлы, поставь на каталог sticky bit:
EG> chmod +t dirname

EG> И это не имеет отношения к Perl, это основы юникса.

Спасибо за ответ, но почему-то он приехал только сейчас, через 6 дней.

@PATH: 5006/1 5080/102 5020/1042

Судя по всему, 5080/102 проснулся.

Желаю успехов, Eugene!

Eugene Grosbein

unread,
Jun 27, 2020, 5:00:20 PM6/27/20
to
27 июня 2020, суббота, в 21:37 NOVT, Michael Dukelsky написал(а):

MD>>> Почему-то у меня unlink удаляет всё, даже файл, принадлежащий
MD>>> руту. Что я делаю не так?
EG>> Право на удаление файла по умолчанию это право записи в каталог.
EG>> Если ты имеешь право на запись в каталог - ты имеешь право
EG>> удалять в нём любые файлы независимо от их прав доступа и от
EG>> их владельцев.
EG>> Если ты хочешь, чтобы из каталога пользователь мог удалять
EG>> только собственные файлы, поставь на каталог sticky bit:
EG>> chmod +t dirname
EG>> И это не имеет отношения к Perl, это основы юникса.
MD> Спасибо за ответ, но почему-то он приехал только сейчас, через 6 дней.
MD> @PATH: 5006/1 5080/102 5020/1042
MD> Судя по всему, 5080/102 проснулся.

У меня тоже считай неделю не было эхомейла никакого,
а сегодня вдруг навалило недельной давности.

Eugene
0 new messages