Как изменить файл только для чтения линукс

Ошибка «Файловая система доступна только для чтения» может быть решена разными способами. Пользователю предстоит путем перебора отыскать подходящий вариант.

Содержание

  • Способ 1: Настройка прав доступа
  • Способ 2: Исправление ошибок через GParted
  • Способ 3: Исправление поврежденных блоков
  • Способ 4: Форматирование накопителя
  • Вопросы и ответы

ошибка «файловая система доступна только для чтения» в Linux

Способ 1: Настройка прав доступа

Первый способ исправления ошибки «Файловая система доступна только для чтения» в Linux заключается в проверке прав доступа. Иногда пользователь случайно или намерено устанавливает ограничения, которые распространяются и на других юзеров. Для начала предлагаем проверить атрибуты, а затем внести изменения, если это требуется.

  1. Запустите консоль удобным для вас методом. Для этого можно использовать соответствующий значок в меню приложений или горячую клавишу Ctrl + Alt + T.
  2. Запуск терминала для проверки списка дисков при исправлении Файловая система доступна только для чтения в Linux

  3. Здесь введите команду ls -l, чтобы просмотреть весь список дисков с подробной информацией, среди которой будет находиться и необходимая нам.
  4. Команда для вывода списка дисков при исправлении Файловая система доступна только для чтения в Linux

  5. Изучите атрибуты, которые показаны в первом столбце напротив проблемного диска или раздела. Если имеется один символ -r, значит, система доступна только для чтения. Наличие w означает открытость для чтения и записи.
  6. Проверка атрибутов дисков при исправлении Файловая система доступна только для чтения в Linux

  7. Если проблема действительно связана с указанными атрибутами, придется перенастроить права. Введите команду sudo chown -R [user]:[user] /home/[user], заменив user на имя нужного пользователя, к которому и будут применены все изменения.
  8. Команда для установки прав доступа при исправлении Файловая система доступна только для чтения в Linux

  9. Данное действие осуществляется с опцией sudo, поэтому ее придется подтвердить, указав в новой строке пароль суперпользователя.
  10. Подтверждение команды для установки прав при исправлении Файловая система доступна только для чтения в Linux

После активации команды вы будете уведомлены, что все изменения успешно вступили в силу. Следом рекомендуется перезагрузить ПК и можно приступать к тестированию. Если же при использовании команды ls было обнаружено, что для раздела или носителя установлены все требуемые атрибуты, следует перейти другим решениям возникшей проблемы.

Способ 2: Исправление ошибок через GParted

GParted — одна из самых известных утилит для управления дисками в Linux со встроенным графическим интерфейсом. Ее особенность заключается в наличии множества вспомогательных функций, связанных в том числе и с решением различных ошибок носителей.

  1. Если GParted по умолчанию отсутствует в вашем дистрибутиве, установите ее с помощью команды sudo apt-get install gparted. Подтвердите это действие, введя пароль суперпользователя и одобрив скачивание архивов.
  2. Команда для установки утилиты управления дисками при исправлении Файловая система доступна только для чтения в Linux

  3. После этого утилиту проще всего запустить, нажав на соответствующий значок в меню приложений.
  4. Запуск утилиты управления дисками для решения Файловая система доступна только для чтения в Linux

  5. Для открытия тоже потребуются права суперпользователя.
  6. Подтверждение запуска утилиты управления дисками при решении Файловая система доступна только для чтения в Linux

  7. При входе сразу станет понятно, какой из разделов является проблемным, поскольку возле него будет гореть восклицательный знак. Кликните по данной строке правой кнопкой мыши.
  8. Поиск проблемного накопителя при решении Файловая система доступна только для чтения в Linux

  9. В контекстном меню нажмите на «Проверить на ошибки».
  10. Запуск проверки на ошибки в утилите при исправлении Файловая система доступна только для чтения в Linux

  11. Запустите выполнение операций, щелкнув на кнопку в виде галочки, которая расположена на верхней панели.
  12. Включение операции проверки на ошибке в утилите при исправлении Файловая система доступна только для чтения в Linux

    Lumpics.ru

  13. Подтвердите запуск проверки.
  14. Подтверждение запуска проверки при исправлении Файловая система доступна только для чтения в Linux

  15. Осталось только дождаться завершения этого процесса.
  16. Ожидание завершения проверки ошибки Файловая система доступна только для чтения в Linux

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

Способ 3: Исправление поврежденных блоков

Иногда ошибка со сбойным режимом чтения возникает вследствие повреждения секторов жесткого диска. Существуют специальные утилиты, позволяющие распределить проблемное пространство или исправить его, если это является возможным. В Linux имеется встроенная команда, отвечающая за выполнение этой операции. Мы и предлагаем воспользоваться ей в том случае, если приведенные выше рекомендации не принесли никакого результата.

  1. Для начала просмотрим список дисков, чтобы понять, какой из них следует проверять. Осуществляется это через команду fdisk -l.
  2. Проверка списка дисков при проверке блоков во время решения Файловая система доступна только для чтения в Linux

  3. В списке отыщите проблемный накопитель, определив его точное название. Далее оно потребуется при активации соответствующей команды для лечения блоков.
  4. Нахождение накопителя для исправления Файловая система доступна только для чтения в Linux

  5. Теперь используйте команду hdparm -i /dev/sda2 | grep Model, чтобы проверить выбранный носитель или логический диск. Здесь замените /dev/sda2 на определенное ранее название.
  6. Запуск средства проверки накопителя для исправления Файловая система доступна только для чтения в Linux

  7. После этого следует отмонтировать диск, чтобы в дальнейшем запустить проверку блоков. Осуществляется это через строку umount /dev/sda2.
  8. Размонтирование накопителя для решения проблемы Файловая система доступна только для чтения в Linux

  9. Запустите проверку, вставив команду badblocks -s /dev/sda2 > /root/badblock.
  10. Запуск проверки на плохие блоки при решении проблемы Файловая система доступна только для чтения в Linux

  11. Обнаруженные блоки, которые не подлежат исправлению, требуется отметить, чтобы система перестала их задействовать. Для этого используйте e2fsck -l /root/badblock /dev/sda2.
  12. Отключение проблемных блоков при решении проблемы Файловая система доступна только для чтения в Linux

Все изменения будут применены сразу же, однако, как обычно, рекомендуется создать новый сеанс операционной системы, чтобы проверить, была ли решена возникшая неполадка с ошибкой «Файловая система доступна только для чтения».

Способ 4: Форматирование накопителя

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

Подробнее: Форматирование диска в Linux

Сегодня мы разобрали четыре метода исправления неполадки «Файловая система доступна только для чтения». Осталось найти подходящий только путем перебора, выполняя по порядку все приведенные инструкции. В большинстве случаев хотя бы один из них оказывается действенным и позволяет полностью устранить рассмотренную ошибку.

Еще статьи по данной теме:

Помогла ли Вам статья?

If you’ve ever tried to run a script from the command line in Linux and gotten an error message saying that it’s not executable or attempted to enter a directory only to be blocked by the system, you probably don’t have permissions to do those things. Fortunately, if you have the proper rights or the ability to act as a super user (accessible by using sudo), you can change the permissions on files and directories.

In this how-to we’ll look at the chmod command, a powerful command that can change file and directory permissions for the owner, user group members and others. In a section below, we’ll also explain how to tell what group your user is in and exactly what Linux means by “others.”

Whilst you become accustomed to these commands it’s good to work with example empty files and directories and you should take extra care to ensure you are carefully following the instructions.

All the commands in this how-to will work on most Linux machines. We’ve used a Ubuntu 20.04 install but you could run this how-to on a Raspberry Pi. All of the how-to is performed via the Terminal. You can open a terminal window on most Linux machines by pressing ctrl, alt and t.

How to Check File Permissions in Linux

Change Permissions on the Linux Command Line

(Image credit: Tom’s Hardware)

To begin, let’s create a test file in a test directory and take a look at its default permissions. To see the permissions we will use ls with the -l argument added.

1. Create a new directory called test_directory

$ mkdir test_directory

2. Move into the newly created directory.

$ cd test_directory

3. Create a new test file called test1.txt.

$ touch test1.txt

4. List the contents of the directory using ls -l.

$ ls -l

Using ls -l gives us a lot more information about the items returned on the list. We should see that test1.txt has been created. We are interested in the first 10 characters on the listing which for our test file read — rw- rw- r—

The first – indicates that the object on the list is a file. If we ran ls -l and a directory was listed this first character would be a d. The next 9 characters are arranged in 3 sets of 3. 

The first set of 3 refers to the owner, the second set of 3 refer to user groups and the final set of three refer to others. Each set of 3 characters can contain either – or r, w, and x. If you can see an r in the set then that set has read permissions granted. If you can see a w that set can write to a file and if you can see an x in the set then that set can execute the file as a script or program. 

We can see that our test1.txt currently has the owner and group member permissions set to read and write with others only allowed to read. No one has permission to execute the file. 

How to Change Linux File / Directory Permissions Quickly

Change Permissions on the Linux Command Line

(Image credit: Tom’s Hardware)

We can use the chmod command to toggle the read, write and execute permissions on and off for the owner, group and others. Let’s begin with changing single permissions for the owner and group.

1. In the test_directory, list the current permissions for test1.txt.

$ ls -l

These should be unchanged from when we created test1.txt and should read -rw-rw-r— .

2. Change the permission of the owner to read only.

$ chmod u-w test1.txt

3. List the directory contents to view the new permission settings. We should now see that the permissions for test1.txt read -r—rw-r— indicating that, for the owner, the file is now read only.

$ ls -l

4. Change  permission of groups to read only. Similar to changing permissions for the owner we can change permission settings for the groups. To revoke write permissions we can use the argument g-w.

$ chmod g-w test1.txt

5. List the directory contents to view the new permission settings.

$ ls -l

We should now see that the permissions for test1.txt read -r—r—r— indicating that, for the groups, the file is now read only.

6. Enable write permissions for the owner. Instead of using u-w to remove write permissions we can intuitively use u+w to grant write permissions for the owner.

$ chmod u+w test1.txt

7. List the directory contents to view the new permission settings. We should now see that the permissions for test1.txt read -rw-r—r— indicating that, for the owner, write permissions have been granted.

$ ls -l

How to Apply Multiple File / Directory Permission Changes in Linux

Change Permissions on the Linux Command Line

(Image credit: Tom’s Hardware)

We can also combine the arguments we used in the previous section to make multiple changes to Linux file permissions in a single command. In this section it’s important not to add any extra spaces in the chmod arguments as this will cause the command to fail. 

In the first section we used u and g for owner and group and in this section we will additionally use o to target permission changes for others. Likewise, we used r and w for read and write and in this section we will add x to make changes to the executable permissions.

1. List the directory contents to view the new permission settings. We should see that the permissions for test1.txt are -rw-r—r— .

$ ls -l

2. Change the permissions so that additionally the owner can execute and the group can additionally write and execute. Notice that there are no spaces after the comma and also notice that you can combine r,w,x in a single argument.

$ chmod u+x,g+wx test1.txt

3. List the directory contents to view the new permission settings. We should see that the permissions for test1.txt are -rwxrwxr— . This means that the owner and group can read, write and execute the file whilst others can only read.

$ ls -l

How to Change File / Directory Permissions Recursively in Linux

Change Permissions on the Linux Command Line

(Image credit: Tom’s Hardware)

The chmod command can be used to create changes recursively to a directory meaning that changes are also applied to the files contained within the directory. Let’s use what we have learnt so far and additionally use the recursive -R argument to see how this works.

1. Move to your home directory and list the contents.

$ cd
$ ls -l

We should see test_directory listed from the previous parts of this how-to. The permissions for test_directory should read drwxrwxr-x.

2. Change the owner and group permissions of both the directory and its contents. Running this command will revoke owner and group write permissions for both test_directory and the file, test1.txt it contains.

$ chmod -R u-w,g-w test_directory

3. List the home directory contents to check the permissions for test_directory.

$ ls -l

We should see that the owner and group permissions allow for reading and execution but now do not allow writing to the directory.

4. Move into test_directory to check permissions for test1.txt.

$ cd test_directory
$ ls -l

We should see that the owner and group permissions fortest1.txt have been changed to match the recursive changes to the host directory, removing write permissions. 

How to View Your Linux Group

When we talk of users, groups and others what we mean is that our user typically belongs to a group of users. A user and group can have the same, or very different permissions. For example a team member may need more permissions to perform a certain task. The permissions that we give a user and a group will be different to what we give other users, users who are not in the group.

We can see the groups that our user is part of via the groups command.

1. Open a terminal and type in groups. This will list all of the groups available on our installation.

groups

2. Open a terminal and type in groups followed by the user’s name. For example here we check which groups “Tom” belongs to and find that he belongs to the groups tom and sudo.

groups tom

The output of this command looks like this.

tom : tom sudo

Others are not a group. Rather “others” refers to anyone who is not the owner, or in a group which has access to a file or directory. Typically others will only have read access to any files of directories, but this can be changed and we shall explore this later.
 

How to Change Linux File Permissions With Numeric Codes

Though the use of r,w or x is easier to remember for Linux file permissions, many people use a series of numeric codes with chmod instead. You feed the chmod command a three-digit number and each digit applies to a different group in this order: user, group, others. So, for example, chmod 777 gives all three types full read, write and execute permissions while chmod 740 gives the user full permissions, the group read permissions and others no permissions at all.

The table below shows what each number means.

Swipe to scroll horizontally

Number Permissions
0 None
1 Execute
2 Write 
3 Execute and Write 
4 Read
5 Read and Execute
6 Read and Write
7 All: Read, Write and Execute

With these basic usages of the chmod command you get a lot of control over file and directory permissions. There are lots of different arguments to add to chmod that allow you to work with different approaches. 

For example it’s worth researching the use of = instead of + and – as, rather than toggling permissions on and off, you can define permissions directly for some or all users. As you research and learn about chmod it’s worth remembering to practice on test files and directories as it can be frustrating if you accidentally remove all permissions on a file you depend on. 

Get instant access to breaking news, in-depth reviews and helpful tips.

If you’ve ever tried to run a script from the command line in Linux and gotten an error message saying that it’s not executable or attempted to enter a directory only to be blocked by the system, you probably don’t have permissions to do those things. Fortunately, if you have the proper rights or the ability to act as a super user (accessible by using sudo), you can change the permissions on files and directories.

In this how-to we’ll look at the chmod command, a powerful command that can change file and directory permissions for the owner, user group members and others. In a section below, we’ll also explain how to tell what group your user is in and exactly what Linux means by “others.”

Whilst you become accustomed to these commands it’s good to work with example empty files and directories and you should take extra care to ensure you are carefully following the instructions.

All the commands in this how-to will work on most Linux machines. We’ve used a Ubuntu 20.04 install but you could run this how-to on a Raspberry Pi. All of the how-to is performed via the Terminal. You can open a terminal window on most Linux machines by pressing ctrl, alt and t.

How to Check File Permissions in Linux

Change Permissions on the Linux Command Line

(Image credit: Tom’s Hardware)

To begin, let’s create a test file in a test directory and take a look at its default permissions. To see the permissions we will use ls with the -l argument added.

1. Create a new directory called test_directory

$ mkdir test_directory

2. Move into the newly created directory.

$ cd test_directory

3. Create a new test file called test1.txt.

$ touch test1.txt

4. List the contents of the directory using ls -l.

$ ls -l

Using ls -l gives us a lot more information about the items returned on the list. We should see that test1.txt has been created. We are interested in the first 10 characters on the listing which for our test file read — rw- rw- r—

The first – indicates that the object on the list is a file. If we ran ls -l and a directory was listed this first character would be a d. The next 9 characters are arranged in 3 sets of 3. 

The first set of 3 refers to the owner, the second set of 3 refer to user groups and the final set of three refer to others. Each set of 3 characters can contain either – or r, w, and x. If you can see an r in the set then that set has read permissions granted. If you can see a w that set can write to a file and if you can see an x in the set then that set can execute the file as a script or program. 

We can see that our test1.txt currently has the owner and group member permissions set to read and write with others only allowed to read. No one has permission to execute the file. 

How to Change Linux File / Directory Permissions Quickly

Change Permissions on the Linux Command Line

(Image credit: Tom’s Hardware)

We can use the chmod command to toggle the read, write and execute permissions on and off for the owner, group and others. Let’s begin with changing single permissions for the owner and group.

1. In the test_directory, list the current permissions for test1.txt.

$ ls -l

These should be unchanged from when we created test1.txt and should read -rw-rw-r— .

2. Change the permission of the owner to read only.

$ chmod u-w test1.txt

3. List the directory contents to view the new permission settings. We should now see that the permissions for test1.txt read -r—rw-r— indicating that, for the owner, the file is now read only.

$ ls -l

4. Change  permission of groups to read only. Similar to changing permissions for the owner we can change permission settings for the groups. To revoke write permissions we can use the argument g-w.

$ chmod g-w test1.txt

5. List the directory contents to view the new permission settings.

$ ls -l

We should now see that the permissions for test1.txt read -r—r—r— indicating that, for the groups, the file is now read only.

6. Enable write permissions for the owner. Instead of using u-w to remove write permissions we can intuitively use u+w to grant write permissions for the owner.

$ chmod u+w test1.txt

7. List the directory contents to view the new permission settings. We should now see that the permissions for test1.txt read -rw-r—r— indicating that, for the owner, write permissions have been granted.

$ ls -l

How to Apply Multiple File / Directory Permission Changes in Linux

Change Permissions on the Linux Command Line

(Image credit: Tom’s Hardware)

We can also combine the arguments we used in the previous section to make multiple changes to Linux file permissions in a single command. In this section it’s important not to add any extra spaces in the chmod arguments as this will cause the command to fail. 

In the first section we used u and g for owner and group and in this section we will additionally use o to target permission changes for others. Likewise, we used r and w for read and write and in this section we will add x to make changes to the executable permissions.

1. List the directory contents to view the new permission settings. We should see that the permissions for test1.txt are -rw-r—r— .

$ ls -l

2. Change the permissions so that additionally the owner can execute and the group can additionally write and execute. Notice that there are no spaces after the comma and also notice that you can combine r,w,x in a single argument.

$ chmod u+x,g+wx test1.txt

3. List the directory contents to view the new permission settings. We should see that the permissions for test1.txt are -rwxrwxr— . This means that the owner and group can read, write and execute the file whilst others can only read.

$ ls -l

How to Change File / Directory Permissions Recursively in Linux

Change Permissions on the Linux Command Line

(Image credit: Tom’s Hardware)

The chmod command can be used to create changes recursively to a directory meaning that changes are also applied to the files contained within the directory. Let’s use what we have learnt so far and additionally use the recursive -R argument to see how this works.

1. Move to your home directory and list the contents.

$ cd
$ ls -l

We should see test_directory listed from the previous parts of this how-to. The permissions for test_directory should read drwxrwxr-x.

2. Change the owner and group permissions of both the directory and its contents. Running this command will revoke owner and group write permissions for both test_directory and the file, test1.txt it contains.

$ chmod -R u-w,g-w test_directory

3. List the home directory contents to check the permissions for test_directory.

$ ls -l

We should see that the owner and group permissions allow for reading and execution but now do not allow writing to the directory.

4. Move into test_directory to check permissions for test1.txt.

$ cd test_directory
$ ls -l

We should see that the owner and group permissions fortest1.txt have been changed to match the recursive changes to the host directory, removing write permissions. 

How to View Your Linux Group

When we talk of users, groups and others what we mean is that our user typically belongs to a group of users. A user and group can have the same, or very different permissions. For example a team member may need more permissions to perform a certain task. The permissions that we give a user and a group will be different to what we give other users, users who are not in the group.

We can see the groups that our user is part of via the groups command.

1. Open a terminal and type in groups. This will list all of the groups available on our installation.

groups

2. Open a terminal and type in groups followed by the user’s name. For example here we check which groups “Tom” belongs to and find that he belongs to the groups tom and sudo.

groups tom

The output of this command looks like this.

tom : tom sudo

Others are not a group. Rather “others” refers to anyone who is not the owner, or in a group which has access to a file or directory. Typically others will only have read access to any files of directories, but this can be changed and we shall explore this later.
 

How to Change Linux File Permissions With Numeric Codes

Though the use of r,w or x is easier to remember for Linux file permissions, many people use a series of numeric codes with chmod instead. You feed the chmod command a three-digit number and each digit applies to a different group in this order: user, group, others. So, for example, chmod 777 gives all three types full read, write and execute permissions while chmod 740 gives the user full permissions, the group read permissions and others no permissions at all.

The table below shows what each number means.

Swipe to scroll horizontally

Number Permissions
0 None
1 Execute
2 Write 
3 Execute and Write 
4 Read
5 Read and Execute
6 Read and Write
7 All: Read, Write and Execute

With these basic usages of the chmod command you get a lot of control over file and directory permissions. There are lots of different arguments to add to chmod that allow you to work with different approaches. 

For example it’s worth researching the use of = instead of + and – as, rather than toggling permissions on and off, you can define permissions directly for some or all users. As you research and learn about chmod it’s worth remembering to practice on test files and directories as it can be frustrating if you accidentally remove all permissions on a file you depend on. 

Get instant access to breaking news, in-depth reviews and helpful tips.

Tag/tag.png

Candidate for Deletion
This article may not be appropriate for this wiki, and may be deleted. More info…

Содержание

Contents

  1. Права доступа в системе Linux
  2. Команда chmod

    1. Символьная форма прав доступа
    2. Числовая форма прав доступа
    3. Примеры
  3. Команда chown
  4. Команда chgroup

Права доступа в системе Linux

Поскольку Linux (да и UNIX вообще) — многопользовательская OS, в ней существует система прав доступа к файлам, служащая для защиты файлов каждого пользователя от влияния других пользователей системы.

Права доступа подразделяются на три типа:

  • чтение (read)

  • запись (write)

  • выполнение (execute)

Разрешение на чтение позволяет пользователю читать содержимое файлов, а в случае каталогов — просматривать перечень имен файлов в каталоге (используя, например, команду ls). Разрешение на запись позволяет пользователю писать в файл, изменять его или удалять. Для каталогов это дает право cоздавать в каталоге новые файлы и каталоги, или удалять файлы в этом каталоге. Наконец, разрешение на выполнение позволяет пользователю выполнять файлы (как бинарные программы, так и командные файлы). Если на файле стоит атрибут Execute, то независимо от его расширения он считается программой, которую можно запустить. (Вот почему в *nix не принято ставить исполняемым файлам расширения по типу DOS’овских *.com, *.exe, *.bat. Вообще в Unix/Linux нет такого жесткого понятия расширение файла, как в Dos/Windows, и система сама определяет тип файлов независимо от их расширения, но это — уже другая история…). Так же атрибут выполнения может стоять у shell-скриптов, CGI-скриптов, и у всего, что можно хоть как-то запустить. Разрешение на выполнение применительно к каталогам означает возможность выполнять команды вроде cd.

Эти типы прав доступа могут быть предоставлены для трех классов пользователей:

  • владельцы — у каждого файла в Linux’e есть один владелец.

  • группы — с каждым файлом связана группа пользователей этого файла.

  • остальные пользователи.

Владельцем файла становится юзер, который создал этот файл. Короче говоря, для файла все юзеры делятся на 3 типа: хозяин, или владелец, юзеры, состоящие в одной группе с владельцем, и все остальные юзеры. Для каждого типа — свои права. Учтите, что директории и все системные устройства в UNIX являются обычными файлами. Тот же самый /dev/fd0 — это не сам Floppy disk, а всего лишь файл, связанный с флопповодом. Поэтому, если root запретил юзеру доступ к этому файлу, тот не сможет использовать флопповод (так же обстоят дела с модемами, хардами и т.п.). Владельцем всех системных файлов является root. Он же имеет право забирать файлы у одного юзера и передавать их другому (менять владельца).

Команда chmod

Изменить права доступа к файлу может либо его владелец, либо сам root. Делается это командой chmod. Существует две формы представления прав доступа: символьная и цифровая.

Символьная форма прав доступа

Если войти в любой каталог, где есть файлы, и набрать ls -l, то появится список всех файлов в этом каталоге и права доступа в символьной форме. Строка прав доступа состоит из 10 символов. Первый символ указывает на тип файла: d — директория, — обычный файл. Три последующих — права доступа владельца к этому файлу. Если первый символ из этих трех — r, владелец имеет право читать этот файл, а если , то не имеет. Следующие 2 символа — w — писать и x — запускать. Если вместо них стоит , значит, владелец этого права не имеет. Еще 3 символа — права доступа группы, еще три — права всех остальных пользователей.

Примеры:

drwxrwxrwx — директория, к которой все имеют любые права доступа.

-rwxr—r— — обычный файл, владелец может делать все, а остальные — только читать.

-r——— — обычный файл, который владелец может только читать, а остальные пользователи не видят.

Важно заметить, что права доступа, которые имеет файл, зависят также от прав доступа к каталогу, в котором этот файл находится. Например, даже если файл имеет -rwxrwxrwx, другие пользователи не смогут до него добраться, если у них не будет прав на чтение и выполнение каталога, в котором находится файл. Например, если юзер захочет ограничить доступ ко всем своим файлам, он может просто изменить права доступа своего домашнего каталога /home/user на drwx——. Таким образом, никто другой не будет иметь доступ в его каталог, а следовательно посторонним будут недоступны и все файлы. Так что, пользователь может не заботиться об индивидуальной защите своих файлов. Другими словами, чтобы иметь доступ к файлу, вы должны иметь доступ ко всем каталогам, лежащим на пути от корня к этому файлу, а также разрешение на доступ собственно к этому файлу. Обычно пользователи UNIX весьма открыты всеми своими файлами. По умолчанию файлам устанавливается защита -rw-r—r—, которая позволяет другим пользователям читать файлы, но ни коим образом их не менять. Каталогам обычно устанавливаются права доступа drwxr-xr-x, что позволяет другим пользователям ходить с правами экскурсантов по вашим каталогам, но ничего в них не трогать и не записывать.

Но многие пользователи хотят держать других подальше от своих файлов. Установив права доступа файла -rw——-, вы никому не покажете этот файл и не дадите записать в него. Также хорошо закрывает файлы защита соответствующего каталога drwx——.

С правами доступа в символьной форме chmod работает так:

chmod {a,u,g,o}{+,-}{r,w,x} <filenames>

Кратко, вы выбираете из all (все), user (пользователь), group (группа) или other (другие). Далее указываете, либо вы добавляете права (+), либо лишаете прав (). И наконец, вы указываете один или несколько режимов: read, write или execute.

Числовая форма прав доступа

Теперь права доступа в числовой форме. Для некоторых эта форма может показаться более простой. Надо запомнить только следующее:

  • 400 — владелец имеет право на чтение
  • 200 — владелец имеет право на запись
  • 100 — владелец имеет право на выполнение
  • 40 — группа имеет право на чтение
  • 20 — группа имеет право на запись
  • 10 — группа имеет право на выполнение
  • 4 — остальные имеют право на чтение
  • 2 — остальные имеют право на запись
  • 1 — остальные имеют право на выполнение

Теперь осталось только просуммировать числа, соответствующие тем правам доступа, которые мы хотим поставить файлу.

Примеры

Символьная форма

chmod a+r stuff

Дает всем пользователям право читать файл stuff.

chmod +r stuff

То же самое, что и ранее (a — по умолчанию).

chmod og-x stuff

Лишает права на выполнение всех, кроме владельца.

chmod u+rwx stuff

Разрешает владельцу все (read, write и execute).

chmod o-rwx stuff

Запрещает все (read, write и execute) пользователям категории другие (other).

=== Числовая форма===

400+200+100+40+4=744

chmod 744 stuff

владелец может делать все, а остальные — только читать.

400+40+4=444

chmod 444 stuff

все имеют право только на чтение.

400+100+10+1=611

chmod 611 stuff

владелец может читать и выполнять, остальные — только выполнять.

400+200+100+40+10+4+1=755

chmod 755 script

Классическая команда. Скрипт — это исполняемый файл, и все должны иметь к нему доступ на чтение и выполнение. Только владелец этого файла может его изменять или удалять.

Команда chown

Изменение владельца файла осуществляется командой chown, например:

sudo chown <имя нового владельца> <имя файла>

Для передачи каталога надо вводить:

sudo chown -R <имя нового владельца> <имя каталога>

Команда chgroup

Изменение группы, которой принадлежит файл.

sudo chown <название новой группы> <имя файла>

Для передачи каталога надо вводить:

sudo chown -R <название новой группы> <имя каталога>

Valery V. Kachurov

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

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

Изначально каждый файл имел три параметра доступа. Вот они:

  • Чтение — разрешает получать содержимое файла, но на запись нет. Для каталога позволяет получить список файлов и каталогов, расположенных в нем;
  • Запись — разрешает записывать новые данные в файл или изменять существующие, а также позволяет создавать и изменять файлы и каталоги;
  • Выполнение — вы не можете выполнить программу, если у нее нет флага выполнения. Этот атрибут устанавливается для всех программ и скриптов, именно с помощью него система может понять, что этот файл нужно запускать как программу.

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

  • Владелец — набор прав для владельца файла, пользователя, который его создал или сейчас установлен его владельцем. Обычно владелец имеет все права, чтение, запись и выполнение.
  • Группа — любая группа пользователей, существующая в системе и привязанная к файлу. Но это может быть только одна группа и обычно это группа владельца, хотя для файла можно назначить и другую группу.
  • Остальные — все пользователи, кроме владельца и пользователей, входящих в группу файла.

Именно с помощью этих наборов полномочий устанавливаются права файлов в linux. Каждый пользователь может получить полный доступ только к файлам, владельцем которых он является или к тем, доступ к которым ему разрешен. Только пользователь Root может работать со всеми файлами независимо от их набора их полномочий.

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

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

Для того, чтобы позволить обычным пользователям выполнять программы от имени суперпользователя без знания его пароля была придумана такая вещь, как SUID и SGID биты. Рассмотрим эти полномочия подробнее.

  • SUID — если этот бит установлен, то при выполнении программы, id пользователя, от которого она запущена заменяется на id владельца файла. Фактически, это позволяет обычным пользователям запускать программы от имени суперпользователя;
  • SGID — этот флаг работает аналогичным образом, только разница в том, что пользователь считается членом группы, с которой связан файл, а не групп, к которым он действительно принадлежит. Если SGID флаг установлен на каталог, все файлы, созданные в нем, будут связаны с группой каталога, а не пользователя. Такое поведение используется для организации общих папок;
  • Sticky-bit — этот бит тоже используется для создания общих папок. Если он установлен, то пользователи могут только создавать, читать и выполнять файлы, но не могут удалять файлы, принадлежащие другим пользователям.

Теперь давайте рассмотрим как посмотреть и изменить права на файлы в Linux.

Как посмотреть права доступа к файлам в Linux

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

Чтобы узнать права на файл linux выполните такую команду, в папке где находится этот файл:

ls -l

perm

За права файлов в linux тут отвечают черточки. Первая это тип файла, который рассмотрен в отдельной статье. Дальше же идут группы прав сначала для владельца, для группы и для всех остальных. Всего девять черточек на права и одна на тип.

Рассмотрим подробнее, что значат условные значения флагов прав:

  • — нет прав, совсем;
  • —x — разрешено только выполнение файла, как программы но не изменение и не чтение;
  • -w- — разрешена только запись и изменение файла;
  • -wx — разрешено изменение и выполнение, но в случае с каталогом, вы не можете посмотреть его содержимое;
  • r— — права только на чтение;
  • r-x — только чтение и выполнение, без права на запись;
  • rw- — права на чтение и запись, но без выполнения;
  • rwx — все права;
  • —s — установлен SUID или SGID бит, первый отображается в поле для владельца, второй для группы;
  • —t — установлен sticky-bit, а значит пользователи не могут удалить этот файл.

В нашем примере, файл test1 имеет типичные разрешения для программ, владелец может все, группа только чтение и выполнение, а все остальные — только выполнение. Для test2 дополнительно установлен флаг SUID и SGID. А для папки test3 установлен Sticky-bit. Файл test4 доступный всем. Теперь вы знаете как посмотреть права на файл linux.

Как изменить права файла в Linux

Чтобы изменить права на файл в linux вы можете использовать утилиту chmod. Она позволяет менять все флаги, включая специальные. Рассмотрим ее синтаксис:

$ chmod опции категориядействиефлаг файл

Опции сейчас нас интересовать не будут, разве что только одна. С помощью опции -R вы можете заставить программу применять изменения ко всем файлам и каталогам рекурсивно.

Категория указывает для какой группы пользователей нужно применять права, как вы помните доступно только три категории:

  • u — владелец файла;
  • g — группа файла;
  • o — другие пользователи.

Действие может быть одно из двух, либо добавить — знак «+», либо убрать — знак — «-«. Что касается самих прав доступа, то они аналогичны выводу утилиты ls: r — чтение, w — запись, x — выполнение, s — suid/sgid, в зависимости от категории, для которой вы его устанавливаете, t — устанавливает sticky-bit. Например, всем пользователям полный доступ к файлу test5:

chmod ugo+rwx test5

Или заберем все права у группы и остальных пользователей:

chmod go-rwx test5

Дадим группе право на чтение и выполнение:

chmod g+rx test5

Остальным пользователям только чтение:

chmod o+r test5

Для файла test6 установим SUID:

chmod u+s test6

А для test7 — SGID:

chmod g+s test7

Посмотрим что получилось:

ls -l

perm1

Как видите, изменить права на файл в Linux очень просто. К тому же вы можете изменить основные права с помощью файлового менеджера.

Выводы

Вот и все, теперь вы знаете не только что такое права доступа к файлам в Linux, но и как их посмотреть, и даже как их изменить. Это очень важная тема, в которой действительно стоит разобраться новичкам, чтобы использовать свою систему более полноценно. Если у вас остались вопросы, спрашивайте в комментариях!

На завершение хочу предложить неплохое видео про права доступа в Linux:

Creative Commons License

Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .

Как записаться редактировать a файл только для чтения в линуксе?

  1. Войдите в систему как пользователь root из командной строки. введите команду su.
  2. Введите пароль root.
  3. Введите gedit (чтобы открыть текст редактор) по пути вашего файл.
  4. Сохраните и закройте файл.

Как отключить режим только для чтения в Ubuntu?

Если файл доступен только для чтения, это означает, что у вас (пользователя) нет разрешения w, и вы не можете удалить файл. Чтобы добавить это разрешение. Вы можете изменить права доступа к файлам, только если вы являетесь владельцем файла. В противном случае вы можете удалить файл используя sudo , получив привилегию суперпользователя.

Как редактировать файл только для чтения?

Файлы только для чтения

  1. Откройте проводник Windows и перейдите к файлу, который хотите отредактировать.
  2. Щелкните имя файла правой кнопкой мыши и выберите «Свойства».
  3. Выберите вкладку «Общие» и снимите флажок «Только для чтения», чтобы удалить атрибут только для чтения, или установите флажок, чтобы установить его.

Как в Linux перевести файл из режима только для чтения в режим чтения и записи?

chmod ugo +rwx имя папки, чтобы всем было разрешено чтение, запись и выполнение. chmod a = r имя папки, чтобы всем было разрешено только чтение.

Как изменить права доступа к каталогу в Linux для владельцев групп и других лиц

  1. chmod g + w имя_файла.
  2. chmod g-wx имя_файла.
  3. chmod o + w имя_файла.
  4. chmod o-rwx имя папки.

Только для чтения добавить для переопределения?

Чтобы сохранить файл, доступный только для чтения, используйте следующую команду: Восклицательный знак после записи-выхода означает переопределение статуса файла только для чтения. … Этот трюк прост и быстр, поэтому вам не придется тратить время на изменение разрешений, если вам нужно простое редактирование.

Какой пароль root для Ubuntu?

Короткий ответ — нет. Учетная запись root заблокирована в Ubuntu Linux. Нет Ubuntu Пароль root в Linux установлен по умолчанию, и он вам не нужен.

Как изменить права доступа к файлам в Ubuntu?

Тип «sudo chmod a + rwx / путь / к / файлу » в терминал, заменив «/ путь / к / файлу» на файл, для которого вы хотите предоставить разрешения всем, и нажмите «Ввод». Вы также можете использовать команду «sudo chmod -R a + rwx / path / to / folder» для предоставления разрешений выбранной папке и ее файлам.

Как мне удалить разрешение только на чтение в Linux?

Чтобы удалить разрешение на чтение в мире из файла, введите chmod или [имя файла]. Чтобы удалить групповое разрешение на чтение и выполнение при добавлении такого же разрешения в мир, вы должны ввести chmod g-rx, o + rx [имя файла]. Чтобы удалить все разрешения для группы и мира, введите chmod go = [имя файла].

Как изменить документ Word с режима только для чтения на редактирование?

Ограничить редактирование

  1. Щелкните Обзор> Ограничить редактирование.
  2. В разделе Ограничения на редактирование установите флажок Разрешить только этот тип редактирования в документе и убедитесь, что в списке указано Без изменений (только чтение).
  3. Щелкните Да, начать усиление защиты.

Как изменить PDF-файл только для чтения на редактируемый?

Как сделать PDF-файл редактируемым

  1. Выберите подходящий конвертер Smallpdf PDF в Word, PPT или Excel для своих нужд.
  2. Перетащите ваш PDF-файл в конвертер.
  3. Сохраните преобразованный файл на свой компьютер и откройте в выбранном формате (Word, PPT или Excel).
  4. Внесите свои правки.
  5. Используйте соответствующий конвертер Smallpdf, чтобы снова преобразовать его в PDF.

Как изменить Excel только для чтения на редактирование?

Для этого:

  1. В проводнике найдите нужный файл Excel.
  2. Щелкните правой кнопкой мыши файл Excel, который хотите отредактировать.
  3. Выберите пункт Свойства.
  4. Перейдите в нижнюю часть вкладки «Общие».
  5. Снимите флажок Только для чтения.
  6. Нажмите ОК, чтобы завершить.

Одной из самых запутанных и разочаровывающих частей Linux, обычно для новых пользователей, является концепция разрешений файловой системы. Раньше считалось, что если вы хотите изменить права доступа к файлам в Linux, вам нужно будет ввести некоторые закодированные команды терминала. Однако теперь среды рабочего стола, такие как GNOME и KDE Plasma, действительно упрощают проверку и настройку этих параметров.

В этой статье мы объясним, что такое каждый параметр прав доступа к файлам, и покажем вам, как изменить их в каждой из четырех основных сред рабочего стола Linux: GNOME, Plasma, Cinnamon и XFCE. Проверять Большинство разрешений приложений для смартфонов, которые вам нужно проверить.

Как изменить права доступа к файлам в Linux - Linux

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

  • Нет разрешения (или ничего).
  • Только для чтения.
  • читать и писать.
  • исполняемый.

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

Ниже приводится краткое объяснение эффектов каждого разрешения.

Отсутствует разрешение

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

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

Только чтение

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

Если разрешение владельца установлено только для чтения, система выдаст предупреждение, когда пользователь попытается изменить или удалить элемент. Тем не менее, он по-прежнему сможет переопределить состояние только для чтения.

чтение и письмо

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

исполняемый

Разрешение на выполнение — это специальный параметр, который позволяет пользователю запускать (выполнять) скрипт или двоичный файл как программу. Файлы, которые запускают приложения, например, будут обозначены как исполняемые в файловой системе.

Как изменить права доступа к файлам Linux в Gnome

Чтобы изменить права доступа к файлам на рабочем столе Gnome, откройте файловый менеджер Gnome, щелкните правой кнопкой мыши файл или каталог, который вы хотите изменить, и выберите ئصائص.

Как изменить права доступа к файлам в Linux - Linux

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

Как изменить права доступа к файлам в Linux - Linux

В диалоге свойств файла перейдите на вкладку Разрешения Сверху. На вкладке «Разрешения» вы сможете изменить права доступа к файлу для владельца, группы (групп) и других лиц (любой, кто не является владельцем или членом группы, имеет доступ).

Установка флажка «Выполнить» в нижней части диалогового окна позволит пользователям с доступом выполнить файл как программу или сценарий.

Как изменить права доступа к файлам в KDE Plasma

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

Как изменить права доступа к файлам в Linux - Linux

В открывшемся контекстном меню просто нажмите ئصائص в нижней части списка, и появится диалоговое окно, как показано ниже.

Как изменить права доступа к файлам в Linux - Linux

Щелкните вкладку Разрешения в верхней части диалогового окна, и система предоставит вам возможность установить разрешения для владельца, группы и других.

KDE Plasma использует немного другой синтаксис, но все разрешения имеют одинаковое значение. Вы можете выбрать из Нет доступа و Можно только просматривать و Можно просматривать и изменять. Под тремя вариантами разрешений есть флажок, чтобы при необходимости сделать файл исполняемым.

Как изменить права доступа к файлам в Cinnamon

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

Как изменить права доступа к файлам в Linux - Linux

После нажатия на опцию свойств Cinnamon представит вам диалоговое окно конфигурации, как показано ниже.

Как изменить права доступа к файлам в Linux - Linux

Поскольку рабочий стол основан на Gnome, диалоговое окно Cinnamon для настройки прав доступа к файлам почти такое же, как и в GNOME. Просто нажмите на вкладку «Разрешения» вверху по центру. Затем вы сможете выбрать «Нет разрешения», «Только чтение» и «Чтение и запись» для каждого из трех типов пользователей. Внизу также есть флажок, чтобы установить элемент как исполняемый. Проверять Лучшая легкая среда рабочего стола для Linux: сравнение LXDE, Xfce и MATE.

Как изменить права доступа к файлам в XFCE

На рабочем столе XFCE вы также можете изменить права доступа к файлам и каталогам, открыв файловый менеджер, найдя файл или каталог, с которым вы хотите работать, и щелкнув элемент правой кнопкой мыши. затем выберите ئصائص Из появившегося контекстного меню.

Как изменить права доступа к файлам в Linux - Linux

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

Как изменить права доступа к файлам в Linux - Linux

Сначала щелкните вкладку «Разрешения» в верхней части диалогового окна, чтобы открыть настройки разрешений для файлов и каталогов. Как и во всех перечисленных выше средах рабочего стола, вы сможете выбирать без разрешения, только для чтения, а также для чтения и записи. XFCE также предоставляет четвертый вариант для установки разрешений только на запись.

Вы можете выбрать параметр «Разрешить запуск этого файла как программы», чтобы предоставить файлу разрешение на выполнение. Проверять Сравнение Ext4 и Btrfs: какую файловую систему Linux мне следует использовать?

Понимание прав доступа к файлам в Linux дает вам контроль

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

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

Состояние перевода: На этой странице представлен перевод статьи File permissions and attributes. Дата последней синхронизации: 10 февраля 2022. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

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

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

Просмотр разрешений

Чтобы посмотреть разрешения (или права файла), используйте команду ls с опцией -l для просмотра содержимого каталога, например:

$ ls -l /путь/к/каталогу
итого 128
-rw-rw-r-- 1 archie users  5120 апр 27 08:28 customers.ods
-rw-r--r-- 1 archie users  3339 апр 27 08:28 todo
-rwxr-xr-x 1 archie users  2048 май  6 12:56 myscript.sh
drwxr-xr-x 6 archie users  4096 июл  5 17:37 Документы
drwxr-xr-x 2 archie users  4096 июл  5 13:45 Загрузки
drwxr-xr-x 2 archie users  4096 июл  5 21:03 Рабочий стол

Здесь мы должны сосредоточиться на первом столбце. Например, обратив внимания на значение drwxrwxrwx+, каждый символ которого объясняется в следующих таблицах:

d rwx rwx rwx +
Обозначет тип файла, технически не относится к разрешениям. Смотрите типы файлов (UNIX) для ознакомления со всеми возможными значениями. Разрешения, которые имеет владелец к файлу (объяснения ниже). Разрешения, которые имеет группа к файлу (объяснения ниже). Разрешения, которые имеют все остальные пользователи к файлу (объяснения ниже). Одиночный символ, который указывает на применение альтернативного метода доступа. Пробел указывает на отсутствие альтернативного метода доступа. Символ . обозначает файл с контекстом безопасности, но без другого альтернативного метода доступа. Файл с любой другой комбинацией альтернативных методов доступа помечается символом +, например в случае Access Control Lists (Русский).

Каждая из трёх триад разрешений (rwx в примере выше) может состоять из следующих символов:

Символ Влияние на файлы Влияние на директории
Разрешение на чтение (первый символ) - Файл не может быть прочитан. Содержимое каталога не может быть показано.
r Файл можно прочитать. Содержимое каталога может быть показано.
Разрешение на запись (второй символ) - Файл не может быть изменён. Содержимое каталога не может быть изменено.
w Файл может быть изменён. Содержимое каталога может быть изменено (создание новых файлов или папок; переименовывание и удаление существующих файлов или папок); дополнительно требуется разрешение на выполнение, в противном случае, это разрешение не действует.
Разрешение на выполнение (третий символ) - Файл не может быть выполнен. Каталог не может быть доступен с помощью cd.
x Файл может быть выполнен. Доступ к каталогу можно получить с помощью cd. Это единственный бит, который на практике можно считать «наследуемым» от каталогов-предков; фактически, если какой-либо каталог в пути не имеет установленного бита x, конечный файл или каталог также оказывается недоступен независимо от его разрешений; подробнее смотрите path_resolution(7).
s Показывает установленный suid бит: в триаде пользователя — setuid; в триаде группы — setgid; в триаде остальных не встречается; также подразумевает, что установлен бит x.
S То же, что и s, но бит x не установлен; редко встречается у обычных файлов, бесполезен для каталогов.
t Sticky bit; встречается только в триаде остальных; также подразумевает, что установлен бит x.
T То же, что и t, но бит x не установлен; редко встречается у обычных файлов.

Смотрите info Coreutils -n "Mode Structure" и chmod(1) для более подробной информации.

Совет: Также можно посмотреть разрешения с помощью команды namei -l путь.

Примеры

Давайте посмотрим несколько примеров для лучшего понимания:

drwx------ 6 archie users  4096 июл  5 17:37 Документы

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

dr-x------ 6 archie users  4096 июл  5 17:37 Документы

Archie имеет полный доступ, за исключением создания, переименовывания и удаления файлов. Он может просматривать список файлов и (если позволяют разрешения к файлам) может получить доступ к существующему файлу в Документах.

d-wx------ 6 archie users  4096 июл  5 17:37 Документы

Archie не может выполнить ls в Документах, но если он знает имя существующего файла, то он может просмотреть, переименовать и удалить или (если позволяют разрешения) получить доступ к нему. Также он может создавать новые файлы.

d--x------ 6 archie users  4096 июл  5 17:37 Документы

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

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

Давайте посмотрим на другой пример, на этот раз файл, а не каталог:

-rw-r--r-- 1 archie users  5120 июн 27 08:28 foobar

Здесь мы видим первой буквой не d, а -. Таким образом мы знаем, что это файл, а не директория. Благодаря разрешению rw- владелец может читать и писать, но не выполнять. Может показаться странным, что у владельца нет всех трёх разрешений, но разрешение x не требуется, так как это файл текста/данных, который может быть прочитан текстовым редактором, например Gedit, EMACS или программным обеспечением подобно R, а не исполнятся самим файлом (если он содержит что-то вроде программного кода на Python, то тогда подобное вполне возможно). Для группы установлены права доступа r--, поэтому у группы есть возможность читать файл, но не записывать и не редактировать его — фактически это установка чего-либо только для чтения. Мы видим, что подобные разрешения применимы и ко всем остальным пользователям.

Изменение разрешений

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

Текстовый метод

Для изменения прав доступа — или режима доступа — к файлу используйте команду chmod в терминале. Ниже приведена общая структура команды:

chmod кто=разрешения имя_файла

Где кто — любая из нескольких букв, каждая из которых обозначает, кому дано разрешение. Они следующие:

  • u (user): пользователь, который является владельцем файла.
  • g (group): группа пользователей, которой принадлежит этот файл.
  • o (other): другие пользователи, то есть все остальные.
  • a (all): все сразу; используйте вместо ugo.

Права доступа обозначаются так же, как описано в разделе #Просмотр разрешений (r, w и x).

Теперь посмотрите на некоторые примеры использования этой команды. Предположим, вы захотели сильно защитить каталог Документы и отказать всем, кроме себя, в разрешении на чтение, запись и выполнение (или, в данном случае, поиск/просмотр) внутри него:

До: drwxr-xr-x 6 archie users 4096 июл 5 17:37 Документы

$ chmod g= Документы
$ chmod o= Документы

После: drwx------ 6 archie users 4096 июл 6 17:32 Документы

Здесь, поскольку вы хотите отказать в разрешениях, вы не ставите никаких букв после =, где будут введены разрешения. Из этого видно, что только разрешения владельца — это rwx, а все остальные разрешения — это -.

Это можно восстановить с помощью:

До: drwx------ 6 archie users 4096 июл 6 17:32 Документы

$ chmod g=rx Документы
$ chmod o=rx Документы

После: drwxr-xr-x 6 archie users 4096 июл 6 17:32 Документы

В следующем примере вы предоставляете права на чтение и выполнение группе и другим пользователям, поэтому вы ставите следующие буквы для этих прав (r и x) после =, не оставляя пробелов.

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

$ chmod go=rx Документы

Примечание: Не имеет значения, в каком порядке вы ставите буквы кто или буквы разрешений в команде chmod: команды chmod go=rx file и chmod og=xr file делают одно и то же.

Рассмотрим ещё один пример: предположим, вы хотите изменить файл foobar так, чтобы у вас были разрешения на чтение и запись, а коллеги из группы users, которые могут совместно работать с файлом foobar, также могли читать и записывать файл, а все остальные пользователи могли только читать его:

До: -rw-r--r-- 1 archie users 5120 июн 27 08:28 foobar

$ chmod g=rw foobar

После: -rw-rw-r-- 1 archie users 5120 июн 27 08:28 foobar

Это точно такой же пример, как и первый, но с файлом, а не каталогом, и вы предоставляете разрешение на запись (просто для того, чтобы привести пример предоставления каждого разрешения).

Сокращения для текстового метода

Команда chmod позволяет добавлять и вычитать разрешения из существующих, используя + или - вместо =. Это отличается от описанных выше команд, которые по сути переписывают разрешения (например, чтобы изменить разрешения с r-- на rw-, вам всё равно нужно указать r и w после = в вызове команды chmod. Если вы пропустите r, то = перезапишет разрешения и таким образом удалит разрешение r. Использование + и - позволяет избежать этого, добавляя или отнимая текущий набор разрешений).

Давайте попробуем применить + и - на предыдущем примере добавления разрешений на запись в группу:

До: -rw-r--r-- 1 archie users 5120 июн 27 08:28 foobar

$ chmod g+w foobar

После: -rw-rw-r-- 1 archie users 5120 июн 27 08:28 foobar

Ещё пример, который запрещает запись абсолютно всем (a):

До: -rw-rw-r-- 1 archie users 5120 июн 27 08:28 foobar

$ chmod a-w foobar

После: -r--r--r-- 1 archie users 5120 июн 27 08:28 foobar

Также есть специальный режим X: это не настоящий файловый режим, но он часто используется вместе с опцией -R, чтобы добавить бит выполнения только каталогам, но оставить его нетронутым у файлов. Типичный пример использования:

$ chmod -R a+rX ./data/

Копирование разрешений

С помощью chmod можно взять разрешения у одного класса, например владельца, и выставить те же разрешения группе или даже всем. Для этого вместо r, w или x после = поставьте нужную вам букву кто. Например:

До: -rw-r--r-- 1 archie users 5120 июн 27 08:28 foobar

$ chmod g=u foobar

После: -rw-rw-r-- 1 archie users 5120 июн 27 08:28 foobar

Эта команда по сути означает «изменить разрешения группы (g=), чтобы они были такими же, как у владельца (=u)». Обратите внимание, что вы не можете скопировать одновременно несколько разрешений или добавить новые, то есть такая команда:

$ chmod g=wu foobar

выдаст ошибку.

Числовой метод

Команда chmod позволяет задавать разрешения в виде чисел.

Использование чисел — это ещё один метод, который позволяет редактировать разрешения одновременно для владельца, группы и остальных, а также биты setuid, setgid и sticky. Основная структура такова:

$ chmod xxx путь

где xxx это три цифры, каждое их которых может иметь значение от 0 до 7. Первая цифра задаёт разрешения для владельца, вторая — для группы, а третья — для всех остальных.

Права r, w и x соответствуют следующим числам:

r=4
w=2
x=1

Чтобы объединить нужные права в одно трёхзначное число, нужно суммировать соответствующие значения. Например, если вы хотите предоставить владельцу каталога права на чтение, запись и выполнение, а группе и всем остальным — только права на чтение и выполнение, то числовые значения будут выглядеть следующим образом:

  • Владелец: rwx=4+2+1=7
  • Группа: r-x=4+0+1=5
  • Остальные: r-x=4+0+1=5
$ chmod 755 путь

Это эквивалентно следующим двум командам:

$ chmod u=rwx путь
$ chmod go=rx путь

Чтобы посмотреть текущие права в числовом виде, можно использовать команду stat(1):

$ stat -c %a путь

где %a задаёт числовой формат вывода.

Большинство каталогов имеют значение 755, которое разрешает чтение, запись и выполнение для владельца, но запрещает запись для всех остальных, а файлы обычно имеют значение 644, разрешающее чтение и запись для владельца, но только чтение для всех остальных; так как большинство файлов не являются исполняемыми, то бит выполнения x у них не установлен.

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

До: -rw-r--r-- 1 archie users 5120 июн 27 08:28 foobar

$ chmod 664 foobar

После: -rw-rw-r-- 1 archie users 5120 июн 27 08:28 foobar

Для исполняемого файла вы могли бы задать 774, если бы вы хотели предоставить разрешение на исполнение владельцу и группе. Если бы вы хотели, чтобы у всех было разрешение только на чтение, число было бы 444. Если рассматривать r как 4, w как 2 и x как 1, то это, вероятно, самый простой способ вычислить числовые значения для использования chmod xxx путь, но существует также двоичный метод, при котором каждое разрешение рассматривается как двоичное число, а затем они объединяются в обычное десятичное число. Этот способ немного более запутанный, но для полноты картины он здесь приведён.

Рассмотрим такой набор разрешений:

-rwxr-xr--

Если вы пропишите 1 на месте каждого выданного разрешения и 0 на месте отсутствующих разрешений, получится такое двоичное число:

-rwxrwxr-x
 111111101

Затем можно преобразовать двоичные числа:

000=0	    100=4
001=1	    101=5
010=2	    110=6
011=3	    111=7

Итоговое значение получается 775.

Допустим, мы хотим удалить разрешение на запись из группы:

-rwxr-xr-x
 111101101

Итоговое значение будет равно 755, и вы можете использовать команду chmod 755 имяфайла, чтобы снять разрешение на запись. Обратите внимание, что вы получите одно и то же трёхзначное число независимо от того, какой метод вы используете. Используете ли вы текст или цифры, зависит от личных предпочтений и скорости набора текста. Если вы хотите вернуть файлу или каталогу права по умолчанию, например, разрешение на чтение и запись (и выполнение) для владельца, но запретить запись для всех остальных, может быть быстрее использовать chmod 755/644 имяфайла. Однако если вы меняете разрешения на что-то нестандартное, проще и быстрее использовать текстовый метод, а не выполнять преобразование в числа, в процессе которого можно случайно ошибиться. Для пользователя, который использует chmod изредка, вероятно, нет существенной разницы в скорости использования обоих методов.

Вы также можете использовать числовой метод для установки битов setuid, setgid и sticky, используя четыре цифры.

setuid=4
setgid=2
sticky=1

Например, chmod 2777 имяфайла выдаст всем права на чтение/запись/выполнение и включит бит setgid.

Массовое изменение разрешений

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

Чтобы выставить разрешения 755 только каталогам:

$ find каталог -type d -exec chmod 755 {} +

Чтобы выставить разрешения 644 только файлам в каталоге:

$ find каталог -type f -exec chmod 644 {} +

Изменение владельца

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

Рассмотрим следующий пример: создание нового раздела с помощью GParted для резервного копирования данных. Gparted делает всё это от имени root, поэтому по умолчанию всё принадлежит root. Всё это хорошо, но обычные пользователи не смогут записать данные в смонтированный раздел.

brw-rw---- 1 root disk 8,    9 июл  6 16:02 sda9
drwxr-xr-x 5 root root    4096 июл  6 16:01 Backup

В данном примере устройством в /dev владеет root, как и каталогом для монтирования (/media/Backup). Чтобы изменить владельца каталога, можно сделать следующее:

До: drwxr-xr-x 5 root root 4096 июл 6 16:01 Backup

# chown archie /media/Backup

После: drwxr-xr-x 5 archie root 4096 июл 6 16:01 Backup

Теперь новый владелец archie может записывать данные в этот раздел без изменения разрешений (потому что изначально уже стояли права rwx, разрешающие запись владельцу).

Примечание:

  • chown всегда сбрасывает биты setuid и setgid.
  • Обычные пользователи не могут использовать chown для «передачи» файлов, которыми они владеют, другому пользователю.

Списки управления доступом

Списки управления доступом (Access Control Lists, ACL) предоставляют дополнительный, более гибкий механизм разрешений для файловых систем, позволяя устанавливать разрешения для любого пользователя или группы на любой файл.

Umask

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

Атрибуты файла

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

Важно: По умолчанию cp, rsync и другие подобные программы не сохраняют эти атрибуты.

Пакет e2fsprogs содержит программы lsattr(1) и chattr(1), которые позволяют просмотреть и изменить атрибуты файла соответственно.

Здесь приведены некоторые полезные атрибуты. Не все файловые системы поддерживают каждый упомянутый атрибут.

  • a — append only: Файл может быть открыт только для добавления.
  • c — compressed: Включить сжатие на уровне файловой системы для файла.
  • i — immutable: Не может быть изменён, удалён или переименован. Может быть установлен только пользователем root.
  • j — data journaling: Использовать журнал для записи данных файла так же, как и метаданных.
  • m — no compression: Отключить сжатие на уровне файловой системы для файла.
  • A — no atime update: Время получения доступа к файлу не будет обновляться.
  • C — no copy on write: Отключение copy-on-write на поддерживающих это файловых системах.

Полный список атрибутов и подробную информацию о них можно прочитать в chattr(1).

Пример установки атрибута immutable:

# chattr +i /путь/к/файлу

Для снятия атрибута замените + на -.

Расширенные атрибуты

Расширенные атрибуты (Extended attributes) — это пары ключ-значение, привязанные к файлу или каталогу. Существует четыре их класса: security, system, trusted и user.

Важно: По умолчанию cp, rsync и другие подобные программы не сохраняют расширенные атрибуты, смотртие #Сохранение расширенных атрибутов.

Расширенные атрибуты используются для Capabilities.

Пользовательские расширенные атрибуты

Класс user может использоваться для хранения дополнительной информации о файле. Пример создания атрибута:

$ setfattr -n user.checksum -v "3baf9ebce4c664ca8d9e5f6314fb47fb" foo.txt

Просмотр имеющихся атрибутов:

$ getfattr -d foo.txt
# file: foo.txt
user.checksum="3baf9ebce4c664ca8d9e5f6314fb47fb"

Удаление атрибута:

$ setfattr -x user.checksum foo.txt

Сохранение расширенных атрибутов

Команда Требуемый флаг
cp --preserve=mode,ownership,timestamps,xattr
mv сохраняет по умолчанию1
tar --xattrs для создания --xattrs-include='*' для извлечения
bsdtar -p для извлечения
rsync --xattrs
  1. mv без предупреждения убирает расширенные атрибуты, если целевая файловая система их не поддерживает.

Чтобы сохранить расширенные атрибуты в текстовых редакторах, настройте их на усечение (truncate) файлов при сохранении вместо использования rename(2).[1]

Советы и рекомендации

Preserve root

Используйте флаг --preserve-root, чтобы предотвратить рекурсивное выполнение chmod на /. Это поможет, например, предотвратить удаление бита выполнения во всей системе и тем самым сломать систему. Чтобы использовать этот флаг всегда, пропишите его в псевдониме. Смотрите также [2].

Смотрите также

  • chattr — Википедия
  • Linux File Permission Confusion
  • Linux File Permission Confusion part 2
  • wikipedia:Extended file attributes#Linux
  • Extended attributes: the good, the not so good, the bad.
  • Backup and restore file permissions in Linux
  • Why is «chmod -R 777 /» destructive?

Понравилась статья? Поделить с друзьями:

Читайте также:

  • Как изменить файл сохранения eu4
  • Как изменить файл скачивания файлов
  • Как изменить файл ртф на док
  • Как изменить файл реестра через блокнот
  • Как изменить файл подкачки фотошоп

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии