- •2.1. Иерархия каталогов
- •2.2. Невидимые символы
- •2.3. Ввод-вывод для файлов-терминалов
- •2.4. Содержимое файлов
- •2.5. Права доступа
- •2.5.1 Права доступа процессов к файлам
- •2.5.2 Файл паролей /etc/passwd
- •2.5.3. Переустановка идентификатора владельца процесса
- •2.6. Содержимое каталогов
- •2.5.4. Права доступа к каталогам
- •2.7. Специальные файлы
- •3. Выводы:
2.2. Невидимые символы
Создаем файл prog.c с текстом программы:
#include <stdio.h>
main ()
{
printf ("Hello, everybody ! ");
}
Применив команду ls , определяем владельца и группу файла, права доступа, размер файла, время последнего изменения:
group13@SPOcomp5:~/Boytsev/Lab2$ ls -l
total 12
-rw-r--r-- 1 group13 group13 68 2011-09-26 11:47 prog.c
-rw-r--r-- 1 group13 group13 1281 2011-10-10 11:06 report.txt
drwxr-xr-x 2 group13 group13 4096 2011-10-10 11:01 tem
Владелец и группа - group13
Права доступа:
владелец - запись и чтение;
группа - чтение;
остальные - чтение.
Размер файла = 68 байт
Время последнего изменения: 2011-09-26 11:47
С помощью команды od (octal dump - восьмеричный дамп) выведим побайтную распечатку prog.c:
group13@SPOcomp5:~/Boytsev/Lab2$ od prog.c
0000000 021440 067151 066143 062165 020145 071474 062164 067551
0000020 064056 005076 060555 067151 024040 005051 005173 071160
0000040 067151 063164 024040 044042 066145 067554 020054 073145
0000060 071145 061171 062157 020171 020041 067134 024442 005073
0000100 020175 005012
0000104
od -c выводит ASCII-символы.
group13@SPOcomp5:~/Boytsev/Lab2$ od -c prog.c
0000000 # i n c l u d e < s t d i o
0000020 . h > \n m a i n ( ) \n { \n p r
0000040 i n t f ( " H e l l o , e v
0000060 e r y b o d y ! \ n " ) ; \n
0000100 } \n \n
0000104
od -b выводит побайтно коды символов в 8-миричной системе.
group13@SPOcomp5:~/Boytsev/Lab2$ od -b prog.c
0000000 040 043 151 156 143 154 165 144 145 040 074 163 164 144 151 157
0000020 056 150 076 012 155 141 151 156 040 050 051 012 173 012 160 162
0000040 151 156 164 146 040 050 042 110 145 154 154 157 054 040 145 166
0000060 145 162 171 142 157 144 171 040 041 040 134 156 042 051 073 012
0000100 175 040 012 012
0000104
od -сb
group13@SPOcomp5:~/Boytsev/Lab2$ od -cb prog.c
0000000 # i n c l u d e < s t d i o
040 043 151 156 143 154 165 144 145 040 074 163 164 144 151 157
0000020 . h > \n m a i n ( ) \n { \n p r
056 150 076 012 155 141 151 156 040 050 051 012 173 012 160 162
0000040 i n t f ( " H e l l o , e v
151 156 164 146 040 050 042 110 145 154 154 157 054 040 145 166
0000060 e r y b o d y ! \ n " ) ; \n
145 162 171 142 157 144 171 040 041 040 134 156 042 051 073 012
0000100 } \n \n
175 040 012 012
0000104
Перевод строки - \n (код 012)
Пробел - код 040
Табуляция - \t (код 011)
2.3. Ввод-вывод для файлов-терминалов
С помощью tty определяем полное имя нашего файла-терминала:
group13@SPOcomp5:~/Boytsev/Lab2$ tty
/dev/pts/0
Выведим информацию посредством echo, переназначив вывод на этот терминал:
group13@SPOcomp5:~/Boytsev/Lab2$ echo rrr >> /dev/pts/0
rrr
Переназначим вывод на другой терминал:
group13@SPOcomp5:~/Boytsev/Lab2$ echo rr >> /dev/pts/1
На консоли терминала pts/1 появляется group13@SPOcomp5:~$ rr
Файл-терминал — находится в каталоге /dev и воспринимается системой как файл-устройство. В результате, при выводе непосредственно в файл-терминал информация отображается в консоле.
Запустим cat без аргументов, переназначив ее вывод на файл prog.c и введем строчку:
group13@SPOcomp5:~/Boytsev/Lab2$ cat >> prog.c
eee
После ввода команды терминал перешел в режим ожидания ввода символов. По нажатию Ctrl+D, ввод символов завершается, и данные записываются в файл. С помощью od убеждаемся, что в конец файла prog.c записывается введеная строчка (и символ перевода строки \n):
group13@SPOcomp5:~/Boytsev/Lab2$ od -cb prog.c
0000000 # i n c l u d e < s t d i o .
0000020 h > \n m a i n ( ) \n { \n p r i
0000040 n t f ( " H e l l o , e v e
0000060 r y b o d y ! " ) ; \n } \n
0000100 \n \n e e e \n
0000106
Запустим cat, наберем несколько символов без перевода строки:
group13@SPOcomp5:~/Boytsev/Lab2$ cat >> prog.c
huhbujb
Приглашения в shell появляется только после второго нажатия Ctrl+D. Это объясняется тем, что операционная система ищет в конце ввода символ перевода строки (\n) или конца потока ввода (символ Ctrl+D конец потока ввода). Если она его находит то по нажатию Ctrl+D завершается ввод, если не находит, то Ctrl+D воспринимается как конец потока ввода.
В файл записалась введенная строчка без символа перевода строки \n:
group13@SPOcomp5:~/Boytsev/Lab2$ od -cb prog.c
0000000 # i n c l u d e < s t d i o .
0000020 h > \n m a i n ( ) \n { \n p r i
0000040 n t f ( " H e l l o , e v e
0000060 r y b o d y ! " ) ; \n } \n
0000100 \n e e e \n R E R
0000110
