Linux System Programming Part 1 - Linux Basics: IBA Bulgaria 2018
1. The document discusses Linux system programming basics including an overview of system programming, the Linux environment, remote connections, getting help in Linux, files and directories, transferring files, processes, users and groups, file permissions, standard streams, and redirection and piping.
2. Key points include: system software interfaces directly with the kernel while application software uses system software; the environment includes a Linux server accessed remotely via SSH; common commands for navigating files and directories, transferring files via FTP, and managing processes, users, groups and permissions; and redirection operators and piping for manipulating program input/output.
3. An exercise asks the reader to connect remotely, change their password, create directories to contain exercise
Linux System Programming Part 1 - Linux Basics: IBA Bulgaria 2018
1. The document discusses Linux system programming basics including an overview of system programming, the Linux environment, remote connections, getting help in Linux, files and directories, transferring files, processes, users and groups, file permissions, standard streams, and redirection and piping.
2. Key points include: system software interfaces directly with the kernel while application software uses system software; the environment includes a Linux server accessed remotely via SSH; common commands for navigating files and directories, transferring files via FTP, and managing processes, users, groups and permissions; and redirection operators and piping for manipulating program input/output.
3. An exercise asks the reader to connect remotely, change their password, create directories to contain exercise
IBA Bulgaria 2018 What is System Programming? ● The art of writing system software. Application Software ● System software lives at a low level, Text Processor, Internet Browser, etc. interfacing directly with the kernel and core system libraries. ● Assists general use application programs. System Software ● System programmers must have a strong OS, Utilities, Drivers awareness of the hardware and operating system on which they are working. Hardware ● In Linux usually the system utilities are in CPU, Memory, Disks, Keyboard, etc. ‘/sbin’ and ‘/usr/sbin’. Our Work Environment Home Client User 1
Linux Server User 1 ssh University Windows Client User 1
46.10.253.12 User 2 ssh University Windows Client User 2
... ...
User N ssh University Windows Client User N
Remote Connection
● telnet (Teletype Network)
● ssh (Secure Shell) ● PuTTY - has no official meaning. How to get Help in Linux? ● man - an interface to the on- line reference manuals. ● man [option(s)] keyword(s) ● man man ● Most important keys :PgUp, PgDn, q
Of course you could always google it.
Files and Directories in Linux ● pwd - print the name of the current working directory. ● ls - list directory contents. ● mkdir - make directories. ● cd - change the shell working directory. ● rmdir - remove directory, this command will only work if the folders are empty. ● cp - copy files and directories. ● mv - move (rename) files. ● rm - remove files or directories. ● ln - make links between files. ● cat - concatenate files and print on the standard output. Transferring Files ● The File Transfer Protocol (FTP) is a standard network protocol used for the transfer of computer files between a client and server on a computer network. ● You can copy files into your ‘~/ftp/files’ directory. ● You can download those files with any browser - ‘ftp://46.10.253.12’ and login with your Linux credentials. ● You can manage your ‘~/ftp/files’ directory with any ftp client (like FileZilla). Example
Files and directories management
Processes in Linux ● Processes are object code in execution: active, alive, running programs. ● Processes consist of data, resources, state, and a virtualized computer. ● Each process is represented by a unique identifier, the process ID (pid). ● The process that the kernel "runs" when there are no other runnable processes is the idle process (pid=0). ● The process that spawns a new process is known as the parent; the new process is known as the child. ● Each process is owned by a user and a group. Users and Groups ● Authorization in Linux is provided by users and groups. ● Each user is associated with a unique positive integer called the user ID (uid). ● The users are often referred by usernames, not numerical values. ● Each user may belong to one or more groups, including a primary or login group. File Permissions ● The traditional system defines three modes to use a file - (r)ead, (w)rite or e(x)ecute. ● There are three levels of access rights for the file operations - owner, group and public. ● Set-user Identification (SUID) - identified with (s) instead of (x) at owner level. ● When a command has SUID bit set, its effective UID becomes that of the owner of the file, rather than of the user who is running it. ● chmod 4555 [path_to_file] File Permissions ls /usr/bin -al
● Set-group identification (SGID) - identified with (s)
instead of (x) at group level. ● When a command with SGID is run, it runs as if it were a member of the same group in which the file is a member. ● chmod 2555 [path_to_file] ● When SGID permission is set on a directory, files created in the directory belong to the group of which the directory is a member. ● chmod g+s [path_to_directory] ● Sticky Bit - identified with (t) instead of (x) at public level and is primarily used on shared directories. Users can create files, read and execute files owned by other users, but are not allowed to remove files owned by other users. ● chmod +t [path_to_directory] Managing Users and Groups ● id - print real and effective user and group IDs. ● chmod - change file mode bits. ● umask - set file mode creation mask. ● chown - change file owner and group. ● chgrp - change group ownership. ● passwd - change user password. Example
Manage users and groups.
Standard Streams Every program we run on the command line automatically has three data streams connected to it.
● STDIN (0) - Standard input (data fed into
the program) ● STDOUT (1) - Standard output (data printed by the program, defaults to the terminal) ● STDERR (2) - Standard error (for error messages, also defaults to the terminal) Redirection and Piping ● The greater than operator ( > ) redirects programs output (or whatever it sends to STDOUT) to be saved in a file instead of printed to the screen. ● If we save into a file which already exists, it's contents will be cleared, then the new output saved to it. ● The double greater than operator ( >> ) redirects the output and appends it to a file. ● The piping operator ( | ) feeds the output from the program on the left as input to the program on the right. Nano text editor ● nano - Nano's ANOther editor, an enhanced free Pico clone. ● select - drag mouse. ● paste - right mouse button. ● https://www.howtogeek.com/howto/4298 0/the-beginners-guide-to-nano-the-linux- command-line-text-editor/ ● http://www.codexpedia.com/text- editor/nano-text-editor-command- cheatsheet/ Exercise
1. Establish a remote connection (with In your Linux environment:
PuTTY) to our server (46.10.253.12), your initial password is ‘password123’. 1. Change your password. 2. Go to ‘ftp/files’ (you can use the ‘cd’ 2. In your home (‘~/’) directory create a new command) and copy there the file one for the exercises (like ‘exercises’) and a ‘/home/students/day01/LSPp1.pdf’ (you sub-directory in it for this lecture (‘day01’). can use the ‘cp’ command). 3. Go to the last folder (‘day01’) and create a 3. Open your ftp directory in a Windows file (‘listing.txt’) there, which contains the browser (ftp://46.10.253.12) and download list of the files in ‘/sbin’ folder. the ‘LSPp1.pdf’ and open it to read this 4. Open the listing file with nano and add your lecture. names at the beginning. 5. In your home directory create a link to the ‘/home/students/’ directory.