Linux System Programming
Български
Български
  • Въведение
  • Част 1 - Основи на Линукс
    • Какво е системно програмиране?
    • Работна среда
    • Отдалечен достъп
    • Как да получите помощ в Линукс?
    • Файлова система
    • Трансфер на файлове
    • Процеси в Линукс
    • Потребители и групи
    • Файлови разрешения
    • Управление на потребители и групи
    • Стандартни потоци
    • Пренасочване и тръбопроводи
    • Текстовият редактор Nano
    • Упражнение върху основи на Линукс
  • Част 2 – Програмиране
    • Kомпилиране
    • Компилатор
    • Изходен програмен код
    • Компилирайте в асемблер
    • Компилирайте до обектен файл
    • Компилирайте до изпълнима програма
    • Стартирайте изпълнимата програма
    • Библиотеки
    • Архиватор
    • Създаване на обектните файл
    • Създаване на статична и динамична библиотеки
    • Програма за намиране сумата на числа
    • Дебъгване
    • Упражнение върху тема програмиране
  • Част 3 – Файлова система и файлове
    • Файлове
    • Файлови системи и именовани пространства
    • Работа с файлове
    • Буферирани срещу небуферирани потоци
    • Библиотека за работа с файлове
    • Отваряне и затваряне на файл
    • Четене на съдържанието на файл
    • Четене и отпечатване на файл
    • Четене и писане на файл
    • Запис на изречения във файл
    • Търсене в файлове и откъслечни файлове
    • Направете файл с дупка
    • Заключване на файлове
    • Заключи и пиши там
    • Упражнение върху работа с файлове
  • Част 4 – Процеси
    • Процеси
    • Управление на процесите
    • Методи за работа с процеси
    • Изпълнение на команда
    • Показване на изходния код на файла
    • Стартиране на дъщерен процес
    • Отпечатване на идентификаторите на процесите
    • Изчакване и прекратяване на дъщерен процес
    • Изпълнение и отпечатване на състоянието
    • Зомбита и проста обработка на сигнали
    • Игра на зомбита
    • Упражнение върху процеси
  • Част 5 – Комуникация между процеси
    • Методи за комуникация между процеси
    • Сигнали
    • Най-важните сигнали
    • Управление на сигналите
    • Обработка на сигнал
    • Изчакване на сигнали
    • Разглеждане на сигнали
    • Показване на информация за сигналите
    • Reentrancy
    • Анонимни и наименувани тръби
    • Работа с тръби
    • Използване на анонимни тръби
    • Използване на именовани тръби
    • Упражнение върху комуникация между процеси
  • Част 6 - Синхронизация на комуникацията между процесите
    • Опашка за съобщения
    • Библиотеки за работа със съобщения
    • Определяне на общите данни
    • Сървър за съобщения
    • Клиент за съобщения
    • Споделена памет
    • Библиотеки за работа със споделена памет
    • Определяне на общите данни
    • Сървър за памет
    • Клиент за памет
    • Семафори
    • Библиотеки за работа със семафори
    • Определяне на общите данни
    • Семафор Сървър
    • Семафор Клиент
    • Упражнение за синхронизация на комуникация между процеси
  • Част 7 – Сокети
    • Сокетите в Линукс
    • Работа със сокети в C
    • Използване на Unix сокети
    • Файл сокет сървър
    • Файл сокет клиент
    • Двойка сокети
    • Пример за двойка сокети
    • Мрежови сокети
    • Мрежов сокет сървър
    • Мрежов сокет клиент
    • Упражнение върху сокети
  • Част 8 – Нишки
    • Въведение в нишките
    • Библиотека за работа с нишки
    • Функции за управление на нишки
    • Създаване на нишки
    • Финализиране на нишки
    • Съединяване на нишки
    • Пример за съединяване на нишки
    • Функции за прекратяване на нишки
    • Типове при прекратяване на нишки
    • Пример за прекратяване на нишки
    • Упражнение върху нишки
  • Част 9 - Синхронизация на нишки
    • Изход от нишка
    • Управление на изход от нишка
    • Пример за изход от нишкa
    • Защо е необходима синхронизация?
    • Механизми за синхронизация
    • Мютекси
    • Кога е необходимо заключване?
    • Типична употреба на мютекси
    • Проблеми при състезателни условия
    • Безопасен за нишките код
    • Състояние на мъртва хватка
    • Създаване и унищожаване на мютекси
    • Заключване и отключване на мутекси
    • Пример за синхронизиране посредством използване на мютекс
    • Синхронизиране със семафори
    • Пример за синхронизиране посредством използване на семафор
    • Упражнение за синхронизация на нишки
  • Част 10 – Демони
    • Какво са демоните?
    • Скелет на демон
    • Чат демон
Powered by GitBook
On this page

Was this helpful?

  1. Част 1 - Основи на Линукс

Файлови разрешения

PreviousПотребители и групиNextУправление на потребители и групи

Last updated 1 month ago

Was this helpful?

Традиционните файлови системи поддържат три режима за използване на файловете: четене (Термин на Английски език: Read), запис (Термин на Английски език: Write) и изпълнение (Термин на Английски език: Execute).

От друга страна, всеки файл в Линукс принадлежи на потребител и група, като по подразбиране, това са създателя на файла и първичната му група. На базата на това са дефинирани три нива на правата за достъп до файлови операции: собственик (Термин на Английски език: Owner),група (Термин на Английски език: Group) и публика (Термин на Английски език: Public).

Чрез комбинирането на трите нива и трите режима се получават 9 възможни характеристики на файловете, които могат да се представят със следната битова маска (първият флаг показва дали полето описва директория или файл):

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

В конзолен режим на Линукс може да разгледаме правата на елементите в текущата директория с помощта на командата:

ls -la

В Линукс има дефинирани допълнителни специални режими за файловете и директориите. Един от тези режими е SUID (Съкратено от: Set-User IDentification) и в маската за правата се идентифицира със (s) вместо (x) на ниво собственик. Когато файл с изпълним код е в този режим и бъде изпълнен, то създадените процеси и ресурси ще принадлежат на собственика на файла, а не на потребителя, стартирал приложението.

Друг специален режим е SGID (Съкратено от: Set-Group IDentification) и се идентифицира със (s) вместо (x) на ниво група. Когато файл с изпълним код е в този режим и бъде изпълнен, то създадените процеси и ресурси ще принадлежат на групата на собственика на файла, а не на потребителя, стартирал приложението. Когато директория е в режим SGID, то създадените в нея файлове по подразбиране ще принадлежат на групата на горната директория.

Режимът Sticky bit, който се идентифицира със (s) вместо (x) на общо ниво, често се използва за споделени директории. Когато директория е в този режим, потребителите имат право да четат и изпълняват файлове на други потребители, но не могат да ги изтриват или преименуват.

09_permissions_fig1.png
09_permissions_fig2.png