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

Разрешить пользователю www-data запускаться для запуска program1 и program2 без пароля:

sudo visudo

Добавьте к содержимому файла sudoers:

User_Alias WWW_USER = www-data
Cmnd_Alias WWW_COMMANDS = /sbin/program1, /sbin/program2
WWW_USER ALL = (ALL) NOPASSWD: WWW_COMMANDS

Save.

из https://askubuntu.com/questions/76920/call-a-shell-script-from-php-run-as-root

-1
23.11.2018, 13:10
2 ответа

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

Например, у меня есть каталог с именем testdir, для которого я удалил права на запись:

[haxiel@testvm1 ~]$ ls -ld testdir/
dr-xr-xr-x. 2 haxiel haxiel 26 Nov 23 10:09 testdir/

Внутри каталога я создал файл с именем testfile.txt (это было сделано перед удалением разрешения на запись в каталог ).

[haxiel@testvm1 testdir]$ ls -l testfile.txt
-rw-rw-r--. 1 haxiel haxiel 12 Nov 23 10:11 testfile.txt

Теперь я могу добавлять данные в файл, так как у меня есть разрешение на запись в него:

[haxiel@testvm1 testdir]$ echo "Line1" >> testfile.txt
[haxiel@testvm1 testdir]$ echo "Line2" >> testfile.txt
[haxiel@testvm1 testdir]$ cat testfile.txt
Line1
Line2

Но я не могу удалить файл, так как у меня нет прав на запись в его родительский каталог.

[haxiel@testvm1 testdir]$ rm testfile.txt
rm: cannot remove ‘testfile.txt’: Permission denied

Вы можете просмотреть этот вопрос для получения более подробной информации о правах доступа к каталогам.:Бит Execute vs Read. Как работают права доступа к каталогам в Linux?

3
28.01.2020, 05:07

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

Вот объяснение прав доступа к файлам:

(rwx------)  This area is for owner.
(---rwx---)  This area is for group owner.
(------rwx)  This area is for others.
(-rwx------) The preceding - indicates a directory.

       Value       | Meaning
                   |
==========================================================================================================================================================================================================
                   |
777    (rwxrwxrwx) | No restrictions on permissions. Anybody may do anything. Generally not a desirable setting.

755    (rwxr-xr-x) | The file's owner may read, write, and execute the file. All others may read and execute the file. This setting is common for programs that are used by all users.

700    (rwx------) | The file's owner may read, write, and execute the file. Nobody else has any rights. This setting is useful for programs that only the owner may use and must be kept private from others.

666    (rw-rw-rw-) | All users may read and write the file.

644    (rw-r--r--) | The owner may read and write a file, while all others may only read the file. A common setting for data files that everybody may read, but only the owner may change.

600    (rw-------) | The owner may read and write a file. All others have no rights. A common setting for data files that the owner wants to keep private.
1
28.01.2020, 05:07

Теги

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