Файловая система (отчет по лабораторной), страница 4

  #include <fstream>

  #include <cstdlib>

  void error (const char* p, const char* p2="")

  {

  //          std::cin <<p<<' '<<p2<<'\n';

              std::exit(1);

  }

  int main(int argc, char* argv[])

  {

              if (argc!=3) error ("vrong args");

              std::ifstream from (argv[1]);

              if (!from) error ("input file not open ", argv[1]);

              std::ofstream to (argv[2]);

              if (!to) error ("output file not open ", argv[2]);

              char ch;

              while (from.get (ch)) to.put(ch);

              if (!from.eof()||!to) error ("strange");

}

   В результате в текущем каталоге создастся копия запрашиваемого файла другого пользователя.

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

8.

Утилита df позволяет определить свободное пространство на диске. Выполним команду df -hP. Флаг -h позволяет увидеть размер памяти в привычном нам формате, а -P добавляет заголовки к каждому столбцу. Флаг -n позволяет отображать только типы и точки монтирования файловых систем на жестком диске.

# df

/dev/hd0t79              5237190   5159988     77202      99%  /

/dev/cd0                       0         0         0     100%  (/fs/cd0/)

/dev/hd0               107699760 107699760         0     100%  /dev/hd0t7.1

/dev/hd0               103073040 103073040         0     100%  /dev/hd0t7

/dev/hd0                18426492  18426492         0     100%  /dev/hd0t39

/dev/hd0               234441648 234441648         0     100%

--------------------

# df -hP

Filesystem                  Size      Used Available Capacity  Mounted on

/dev/hd0t79                 2.4G      2.4G       38M      99%  /

/dev/cd0                       0         0         0     100%  (/fs/cd0/)

/dev/hd0                     51G       51G         0     100%  /dev/hd0t7.1

/dev/hd0                     49G       49G         0     100%  /dev/hd0t7

/dev/hd0                    8.7G      8.7G         0     100%  /dev/hd0t39

/dev/hd0                    112G      112G         0     100%

---------------------

# df -hPn

Filesystem           Mounted on        Type

/dev/hd0t79          /                 qnx4

/dev/cd0             (/fs/cd0/)        blk-cd

/dev/hd0             /dev/hd0t7.1      blk-partition

/dev/hd0             /dev/hd0t7        blk-partition

/dev/hd0             /dev/hd0t39       blk-partition

/dev/hd0                               blk-hd

9.

Для формирования ссылок на файл используются утилиты ln, link, cp. Команды ln и link создают жесткие ссылки на указанный файл. Символические ссылки позволяет создать команда ln с флагом –s. Пример использования приведён ниже.

# ln -s res.txt Newsl_res

# ls -l

total 80

drwxr-xr-x  4 root      root           4096 Jan 10 20:09 .

drwxrwxrwx  8 root      root           4096 Jan 10 18:17 ..

drwsr-xr-x  2 23        root           4096 Nov 05 17:39 1

drwxr-xr-x  3 root      root           4096 Nov 05 17:39 2

-rwxrwxr-x  1 root      root           1135 Nov 03 23:07 2_4.sh

-rw-rw-r--  1 root      root            459 Nov 04 18:58 2_7.c

-rwsr-xr-x  1 root      root             92 Nov 04 18:12 2_7.sh

-rwSr--r--  1 root      root             92 Nov 04 18:12 2_7_1.sh

-rw-rw-r--  1 root      root            221 Nov 05 17:58 2_9.sh

lrwxrwxrwx  1 root      root              9 Nov 05 17:24 Lfile2 -> file2.txt

lrwxrwxrwx  1 root      root              7 Jan 10 20:09 Newsl_res -> res.txt

-rwsrwxr-x  1 root      root           7483 Nov 04 18:47 a.out

-rwxrwxr-x  1 root      root           2532 Nov 03 23:07 difference.txt

-rwxrwxr-x  1 root      root              3 Nov 04 01:13 file.txt

-rw-rw-r--  1 root      root              5 Nov 05 17:23 file2.txt

-rwxrwxr-x  2 root      root              2 Nov 04 17:55 link

lrwxrwxrwx  1 root      root             11 Nov 04 17:52 link_my_file -> my_file.txt

-rw-rw-r--  3 root      root            646 Nov 05 17:58 link_to_res

-rwxrwxr-x  1 root      root            117 Nov 01 23:52 links.sh

-rw-rw-r--  3 root      root            646 Nov 05 17:58 ln_to_res

-rwxrwxr-x  1 root      root           2272 Nov 04 22:57 log2.txt

-rw-rw-r--  3 root      root            646 Nov 05 17:58 res.txt

lrwxrwxrwx  1 root      root             22 Jan 10 20:08 sysl_res -> /home/Xromov/2/res.txt

-rwxrwxr-x  1 root      root             32 Dec 14 00:41 types.sh

-rwxrwxr-x  1 root      root             19 Dec 14 00:30 types.txt