Linux право удалить файл

Sysadminium

В этой статье изучим стандартные права доступа к файлам в Linux. Научимся одним пользователям давать доступ к файлам, а у других его забирать.

Права доступа к файлам

Debian или Ubuntu — это многопользовательские операционные системы, и у разных пользователей разные права. Например, один пользователь может читать и создавать одни файлы, а второй может делать тоже самое но с другими файлами, ну а третий пользователь сможет проделать это и с первыми и со вторыми файлами.

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

Получается, с файлами можно делать три стандартные действия: читать (r), редактировать (w), запускать (x). Это и есть стандартные права доступа к файлам в Linux.

Дополнительно, документацию для Debian по правам доступа, на английском языке, можете почитать тут.

Права доступа к каталогам

В Linux все является файлами и каталоги это тоже файлы, об этом я рассказывал в этой статье. С каталогами можно выполнять те же действия, что и с файлами:

  • прочесть каталог (r), то есть посмотреть список файлов, например с помощью утилиты ls;
  • отредактировать каталог (w):
    • создать новый файл, например с помощью mkdir или touch;
    • удалить файл с помощью rm;
    • переместить файл в другой каталог с помощью mv;

    Это стандартные права доступа к каталогам в Linux.

    Кто выполняет действия над файлами

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

    • владелец файла или каталога (u). Владельцем файла является тот, кто его создал, или получил право владения им;
    • группа владельцев файла или каталога (g). Файл получает группу владельцев от первичной группы создателя файла, или группу владельцев может назначить пользователь root;
    • все остальные (o);
    • a — все пользователи (a). Владелец и группа владельцев и все остальные вместе взятые.

    Таким образом получается такая система прав u=rwx / g=rwx / o=rwx. То-есть, что может делать с файлом его владелец, что может делать с файлом группа владельцев и что могут делать с файлом все остальные.

    Смотрим права файлов и каталогов

    Права файлов и каталогов можно посмотреть с помощью команды ls -l. Можно добавить опцию -d чтобы смотреть права каталога, не спускаясь в этот каталог. Команда ls показывает права таким образом rwxr-xr-x, первые три символа это права для владельца, следующие для группы, следующие для всех остальных.

    Давайте, для примера, создадим каталог test и посмотрим какие права он получил в Debian и в Ubuntu:

    alex@ubu:~$ mkdir test alex@ubu:~$ ls -ld test/ drwxrwxr-x 2 alex alex 4096 янв 19 10:04 test/ alex@deb:~$ mkdir test alex@deb:~$ ls -ld test/ drwxr-xr-x 2 alex alex 4096 янв 19 13:05 test/

    Разница между Ubuntu и Debian в том что, по умолчанию, каталог в Ubuntu создается с такими правами rwxrwxr-x, а в Debian с такими rwxr-xr-x. Это означает что в Debian пользователи входящую в группу владельцев этого каталога не смогут ничего удалить или создать в этом каталоге, а в Ubuntu смогут.

    Стандартные права доступа к файлам в Linux

    А после прав, в выводе ls -l, идут Владелец файла и Группа владельцев (alex alex).

    Права, владелец и группа владельцев в выводе ls

    Создадим файлы в каталоге и посмотрим на их права:

    alex@ubu:~$ touch test/file1.txt alex@ubu:~$ touch test/file2.txt alex@ubu:~$ ls -l test/ total 0 -rw-rw-r-- 1 alex alex 0 янв 19 10:12 file1.txt -rw-rw-r-- 1 alex alex 0 янв 19 10:12 file2.txt alex@deb:~$ touch test/file1.txt alex@deb:~$ touch test/file2.txt alex@deb:~$ ls -l test/ итого 0 -rw-r--r-- 1 alex alex 0 янв 19 13:12 file1.txt -rw-r--r-- 1 alex alex 0 янв 19 13:12 file2.txt

    Права на файлы в Ubuntu (rw-rw-r—) и в Debian (rw-r—r—) тоже немного отличаются. В Debian группа владельцев не может редактировать файл в отличии от Ubuntu.

    Для назначения прав используют две утилиты:

    • chmod для настройки прав (rwx);
    • chown для смены владельца и группы владельцев файла.

    Настраиваем права — chmod

    Синтаксис этой команды такой:

    # chmod [ugoa] [+-=] [rwx] u - владелец g - группа o - все остальные a - все

    Знак «+» добавляет право, знак «» отнимает право, знак «=» устанавливает право для выбранной категории пользователей, убирая все остальные.

    С прошлого урока у меня остался пользователь testuser:

    alex@deb:~$ id testuser uid=1001(testuser) gid=1001(testuser) группы=1001(testuser)

    Сделаем так, чтобы каталог test не могли читать все остальные и попробуем прочитать этот каталог под пользователем testuser:

    alex@deb:~$ chmod o-r test/ alex@deb:~$ su testuser Пароль: testuser@deb:/home/alex$ ls -l test/ ls: невозможно открыть каталог 'test/': Отказано в доступе

    Командой chmod мы можем устанавливать права и отбирать их, я указал o-r, что означает у всех остальных (o) отнять (-) права на чтение (r).

    Устанавливать права может либо владелец файла, либо пользователь root.

    Но зайти в каталог testuser все равно сможет:

    testuser@deb:/home/alex$ cd test/ testuser@deb:/home/alex/test$ cd - /home/alex

    Теперь попробуем прочитать каталог под пользователем alex:

    testuser@deb:/home/alex$ exit exit alex@deb:~$ ls -l test/ итого 0 -rw-r--r-- 1 alex alex 0 янв 19 13:12 file1.txt -rw-r--r-- 1 alex alex 0 янв 19 13:12 file2.txt

    Вот несколько примеров работы с командой chmod:

    $ chmod o-rwx #забрать права на чтение, запись и исполнение для всех остальных $ chmod o+rwx #дать права на чтение, запись и исполнение для всех остальных $ chmod g+rx #дать права для группы владельцев на чтение и исполнение $ chmod a+r #всем дать право на чтение $ chmod ug+rw #владельцу и группе дать право на чтение и запись $ chmod o=x #всем остальным мы назначаем права на исполнение, rw удаляются если были

    То есть мы вначале говорим кто (u или g или o или a), дальше указываем что сделать ( удалить право, + добавить право, = установить право), дальше указываем права (r или w или x, или их комбинации). При этом « отличается от «=» тем что, «+» добавляет право к уже имеющемся, а «=» заменяет.

    Числовые значения прав

    У прав есть числовые значения: r=4, w=2, x=1. Для удобства я подготовил следующую табличку:

    Цифра Описание прав для файла Описание прав для каталога Символьные значения
    0 Нет доступа Нет доступа
    1 Право выполнять файл Право входить в каталог (делать его текущем) —x
    2 Право редактировать файл Право создавать новые файлы, удалять файлы, или переименовывать их в каталоге -w-
    3 Сумма прав (1+2) Сумма прав (1+2) -wx
    4 Право читать файл Право смотреть список файлов в каталоге r—
    5 Сумма прав (4+1) Сумма прав (4+1) r-x
    6 Сумма прав (4+2) Сумма прав (4+2) rw-
    7 Сумма прав (4+2+1) Сумма прав (4+2+1) rwx

    Таблица соответствия числовых и символьных значений прав доступа

    Используя chmod можно устанавливать права в числовых значениях, при этом нужно указывать сумму прав. Например права rw-r—r— в числовом формате будут такими 644, то есть мы сложили права для владельца (r+w=6), дальше для группы и для всех остальных (r=4).

    Вот как назначают права в числовом виде:

    alex@deb:~$ chmod 644 test/file1.txt alex@deb:~$ ls -l test/file1.txt -rw-r--r-- 1 alex alex 0 янв 19 13:12 test/file1.txt

    Смена владельца и группы владельцев — chown

    Теперь нужно разобраться, как менять владельцев у файлов, для этого нужно использовать утилиту chown. Владельца сможет сменить только суперпользователь.

    alex@deb:~$ su - Пароль: root@deb:~# chown testuser:testuser /home/alex/test/ root@deb:~# ls -ld /home/alex/test/ drwxr-x--x 2 testuser testuser 4096 янв 19 13:12 /home/alex/test/ alex@ubu:~$ sudo su - [sudo] password for alex: root@ubu:~# chown testuser:testuser /home/alex/test/ root@ubu:~# ls -ld /home/alex/test/ drwxrwx--x 2 testuser testuser 4096 янв 19 10:12 /home/alex/test/

    Так как в Ubuntu не задан пароль для root пользователя я использую sudo чтобы переключиться на него. Это я уже разбирал в этом курсе.

    Команде «chown» нужно указать имя пользователя, потом двоеточие и имя группы. После проделанного пользователь testuser и группа testuser станут владельцами данного каталога.

    Можно сменить только владельца а группу не менять:

    root@deb:~# chown alex /home/alex/test/ root@deb:~# ls -ld /home/alex/test/ drwxr-x--x 2 alex testuser 4096 янв 19 13:12 /home/alex/test/

    А можно сменить только группу владельцев:

    root@deb:~# chown :testuser /home/alex/test/ root@deb:~# ls -ld /home/alex/test/ drwxr-x--x 2 alex testuser 4096 янв 19 13:12 /home/alex/test/

    Как вы помните пользователь testuser не мог прочитать каталог test/, теперь он это сделать может, так как для группы у нас есть право читать этот каталог.

    root@deb:~# su testuser testuser@deb:/root$ ls /home/alex/test/ file1.txt file2.txt testuser@deb:/root$ exit exit root@deb:~#

    Рекурсивная смена прав и владельцев

    Команды chmod и chown умеют работать рекурсивно, то есть изменять права на каталог, спуститься в этот каталог и изменить права на все файлы в нем, если в нем есть подкаталоги то пробежаться и по ним.

    Для этого используется опция -R:

    root@deb:~# chmod -R 644 /home/alex/test/ root@deb:~# chown -R alex:testuser /home/alex/test/ root@deb:~# ls -l /home/alex/test/ итого 0 -rw-r--r-- 1 alex testuser 0 янв 19 13:12 file1.txt -rw-r--r-- 1 alex testuser 0 янв 19 13:12 file2.txt

    Источник

    Introduction

    This page describes how to delete files through terminal.

    IconsPage/important.png

    It is possible, though difficult, to recover files deleted through rm. See DataRecovery. If you want to permanently delete a file use shred.

    Commands for deleting files

    The terminal command for deleting file(s) is rm. The general format of this command is rm [-f|i|I|q|R|r|v] file.

    rm removes a file if you specify a correct path for it and if you don’t, then it displays an error message and move on to the next file. Sometimes you may not have the write permissions for a file, in that case it asks you for confirmation. Type yes if you want to delete it.

    Options

    1. -f — deletes read-only files immediately without any confirmation.If both -f and -i are used then the one which appears last in the terminal is used by rm.
    2. -i — prompts for confirmation before deleting every file beforing entering a sub-directory if used with -R or -r. If both -f and -i are used then the one which appears last in the terminal is used by rm.
    3. -q — suppresses all the warning messages however error messages are still displayed. However the exit status is modified in case of any errors.
    4. -R — means delete recursively and is used to delete the directory tree starting at the directory specified i.e. it deletes the specified directory along with its sub-directory and files.
    5. -r — same as -R.
    6. -v — displays the file names on the output as they are being processed.
    7. -I — prompts everytime when an attempt is made to delete for than 3 files at a time or while removing recursively.

    Precautions

    IconsPage/stop.png

    These precautions are to help you avoid dangerous commands. You should not execute them!

    1. Never type sudo rm -R / or sudo rm -r / as it deletes all the data in the root directory and will delete the data of all the mounted volumes until you want to wipe of everything from your system.
    2. sudo rm -f /* also does blunders with your system.

    See Also

    DeletingFiles (последним исправлял пользователь ckimes 2017-09-03 16:40:24)

    The material on this wiki is available under a free license, see Copyright / License for details
    You can contribute to this wiki, see Wiki Guide for details

    Источник

    Читайте также:  Команда удалить kali linux
Оцените статью
Adblock
detector