Presentation is loading. Please wait.

Presentation is loading. Please wait.

CIS 191: Linux and Unix Class 0 January 21 st, 2015.

Similar presentations


Presentation on theme: "CIS 191: Linux and Unix Class 0 January 21 st, 2015."— Presentation transcript:

1 CIS 191: Linux and Unix Class 0 January 21 st, 2015

2 Outline for today About This Class Introduction to Linux Common File Commands Permissions

3 What we’ll learn (generally) Unix commands A bit about file systems How to shell script How to remotely log in to other machines How to construct regular expressions How to use a text editor like vi(m) or emacs The basics of unix system configuration A little history How to understand more XKCDs A little bit about hardware (but just a little)

4 Class Goals Get comfortable working with the command line – An essential skill in any computer science curriculum! Go over essential topics that you’d never know were essential Introduce interesting topics we wouldn’t get to cover otherwise Other stuff you want to know???

5 What you’re in for One lecture per week – Please participate! Weekly in-class quizzes – At the beginning of each lecture Starting the third week – Based on homework and class One homework assignment/week – Due before class Final project; no final exam!

6 Grading Breakdown… Homework – 40% Quizzes – 25% Participation – 5% Final Project – 30%

7 On Homework We’re going to be do-ers! – And sometimes, sudo-ers… – Writing scripts, creating config files, piping commands… Sometimes we’ll ask you to think, or write an explanation – Usually pretty short – “Why are configuration files human-readable?”

8 Participation Significant contributions in class and on piazza – We’d like to see five over the course of the semester – So, one point per point, you might say!

9 On the shared lecture Shared lecture is at night – you guys may or may not be confused about this There will be a meeting starting next Tuesday Will meet ~4 times during the semester

10 Your instructor Spencer Lee’s the name – CIS master’s student – I took this course in 2012, back when Sam Panzer was teaching it – I’ve had a bunch of exposure to UNIX environments through my experience with RoboCup here at Penn, and through the courses I’ve taken in CIS and ESE.

11 Your TA’s Xiuruo Zhang Jonathan Chen

12 Contact info (also posted online) Spencer Lee – lesp at seas – Office Hour – By Appointment Xiurou Zhang – xiuruo at seas – Office Hours – 4:00-6:00PM Tuesday – Room TBA Jonathan Chen – jonchen at seas – Office Hours – 2:00-4:00PM Monday – Room TBA

13 Outline for today About This Class Introduction to Linux Common File Commands Permissions

14 Time for a history lesson Unix – born in Bell Labs in 1969 Rewritten in C by 1973 – C’s a high-level low-level language More in CIS 240 – Unix was one of the first complex, time-critical systems not written entirely in assembly. Ken Thompson and Dennis Ritchie; look them up! – Full online documentation… we’ll be looking at these. Popular in places that could afford it (and to run it) – In other words… it cost money! – Used a lot in corporations and universities

15 GNU and the FOSS UNIX dream Richard Stallman founded the GNU project in the hopes of having a free and open UNIX (GNU’s Not Unix!) – Close to complete by the 1990s… – Missing the kernel – They had a project called HURD (Hird of Unix Replacing Daemons), but it wasn’t attracting enough interest.

16 Kernels Complex bits of software… They convert your data requests into data processing commands for the CPU User-to-hardware intermediary Courtesy of Wikipedia…

17 Linus Torvalds – The man, the penguin Linus Torvalds decided to write an open source kernel, when he was ~21 – It was finished in 1991 (incidentally the same year I was born… coincidence??) This kernel was incorporated into existing GNU operating system components, and LINUX was born. Those eyes…

18 Linux is a “Unix-Like” kernel Not exactly compatible with earlier versions of Unix… – But hey, Linux is free and open source It provides us with several useful abstractions for user software – Input and output, interfacing with other devices…

19 Why Unix anyway? Processes as we know them today! Hierarchical file system Devices as files… Designed to make it easy to write, test, and run programs; useful to know if your business is software Device-specific details can be left to the operating system

20 The Unix File System The user sees a file system as a tree, with the root being “/” – Each node is a file or directory Each directory has its own tree – Refer to itself by. (dot) and its parent by.. (dot dot) User’s home directory can be referenced by the ~ shortcut Previous directory is stored in the - shortcut

21 The Unix File System / / dev usr home docs pics passwords.txt thesis.docx cheezburger.jpg

22 inodes “Index nodes” Datastructure for representing UNIX filesystem objects – Attributes – Disk block locations – Metadata – Permissions http://dysphoria.net/OperatingSystems1/images/unix-inode.gif

23 Important Root Folders (Ubuntu) /bin contains executable binaries /boot holds the bootloader and the kernel /dev lists physical and virtual devices (as files) /etc contains system-wide configurations – Per-user config files are stored in the user’s home /proc holds runtime system information

24 Outline for today About This Class Introduction to Linux Common File Commands Permissions

25 Shell Commands Consider the basic Hello World! Command $echo –n Hello World! The dollar sign ( $ ) represents the command prompt – You’ll also likely see # or >; this can be configured echo is the name of the command/program -n is an option or flag; here, it tells echo to not print a trailing newling character Hello World! Is a command-line argument to echo.

26 Before we get into the details… I’d like to go over the one command to rule them all It’ll help you to understand how to use practically any other command

27 man is the man man brings up a program’s manual. Lots of useful information therein… – Look there first when you’ve got a question! xkcd.com/293/

28 Ten essentials ls, cp, mv, cat, touch, rm, mkdir, rmdir, ln, cd You won’t believe how often you use these. Note that all of these are actually program binaries – The system knows some locations where they might be stored, and automatically executes the file as if you were in the correct directory. More on this later – cd is not a program. It is a shell command. This is slightly different.

29 Quick note Unix is unforgiving with file manipulations. If you tell the system to remove your file, it’ll do it – NO QUESTIONS ASKED. Unless you tell it to ask questions. This includes… moving one file over another. – Say bye to your thesis if you didn’t copy it first. Or even copying one file over another. Be careful with what you ask for!

30 ls – list file or directory When given a file, ls just lists that file – $ ls file1 file2 – file1 file2 ls lists the contents of a directory if given a directory. You will find yourself typing this reflexively. Important options – ls –l gives a full listing, showing permissions, owner, group, timestamp, and file size – ls –a lists all files, including. and.. (-A excludes. and..)

31 cp – copy file or directory Two use cases – $ cp source target Copies source file to target name (creating the file if necessary) – $ cp source_list destination_dir Copies one or more files in the first argument to the directory listed in the second argument cp doesn’t ask before overwriting existing files! Options – -r copies directories recursively; cp won’t copy directories without this – -i asks before overwriting a file; -n won’t overwrite at all

32 mv – move files Behaves like cp, but the original file stops existing – Can be used for rename – Can be used in both ways that cp can be mv works recursively by default (can move directories) Options – -i and –n work like in cp

33 rm – remove files $ rm file_list This command removes all files in the file_list argument. By default, this will not work recursively (won’t delete directories) Options – rm –r removes recursively – it deletes directory contents – rm –f removes forcefully (no prompting) – rm –i prompts the user before removing each file

34 ln – create links to files $ ln –s source target This command creates a symbolic link at target, pointing to the source Operations at the target will be redirected to the source This can be very useful… – Compatibility layer If I have multiple versions of python, which – Allow a list of version-labeled files to be labeled as current

35 Symbolic links Basically a special file that just points to another file path They can be operated on using normal file system commands like cp and rm, and those commands will delete the link and not the original file Calling a symbolic link will call the original target Commands that modify file contents will modify the original file, not the link – Everything is redirected to the original file path What will happen if I create a symbolic link to the file ~/cats/felix, then I rename it to ~/cats/felinicus?

36 Symbolic links Basically a special file that just points to another file path They can be operated on using normal file system commands like cp and rm, and those commands will delete the link and not the original file Calling a symbolic link will call the original target Commands that modify file contents will modify the original file, not the link – Everything is redirected to the original file path What will happen if I create a symbolic link to the file ~/cats/felix, then I rename it to ~/cats/felinicus? – The symbolic link will break!

37 Hard links If you run ln without the ‘-s’ option, the program will create a hard link to the source file. This can be thought of as another “file path” that points to the same i-node as the source file! This has interesting implications… – If I have many hard links, how can I delete the file contents (by which I mean the i-node hierarchy)? – How is copying a file different from creating a hard link to it?

38 Hard links If you run ln without the ‘-s’ option, the program will create a hard link to the source file. This can be thought of as another “file path” that points to the same i-node as the source file! This has interesting implications… – If I have many hard links, how can I delete the file contents (by which I mean the i-node hierarchy)? The file contents will be deleted only when all references (hard links) are removed. – How is copying a file different from creating a hard link to it? Creating a hard link does not copy the i-node hierarchy; it just creates another link to an existing one. Each link is the file!

39 cat – concatenate files $ cat file_list Displays the contents of each file in file_list Usually, file_list is just a single file Often, it is less compute intensive to use other programs – We will still be using cat for many exercises, for simplicity Refers to standard input as a dash Concatenates by listing each file in file_list consecutively! – But just prints to standard output by default…

40 mkdir, rmdir, touch mkdir makes an empty directory rmdir removes an empty directory – If you ant to remove a directory with files in it, then use rm –r touch updates the timestamps on a file; if the file doesn’t exist, then the file is created (as an empty file)

41 cd – change directory This command tells the shell to change to a different working directory – A “reference point” when looking at files Both relative and absolute paths work; absolute paths start with the / character (you are starting from the root directory, after all) cd – returns to the previous directory

42 How to destroy your Linux install rm –rf removes both recursively and forcefully – So it’ll remove everything and not bother to ask you about it Many distibutions will assume it was a mistake… – Ubuntu will report bach with rm: it is dangerous to operate recursively on ‘/’ rm: use –no-preserve-root to override Famous way to “pwn n00bs”

43 Outline for today About This Class Introduction to Linux Common File Commands Permissions

44 Unix Permissions Three categories of what we can do… 1.Read 2.Write 3.Execute Three categories for who is using the file… 1.User 2.Group 3.Other This leads naturally to a 9 bit permission scheme

45 Permission scheme breakdown rwx User rwx Other rwx Group --- setid File’s permissions; set with chmod Special bits; set with setuid Represented as a bit-vector in unix Here, 000111111111 Or, 0777

46 Permission scheme breakdown rwx User rwx Other rwx Group --- setid File’s permissions; set with chmod Special bits; set with setuid Represented as a bit-vector in unix Here, 000111111111 Or, 0777 We are concerned with these

47 What does this mean? The User is the owner – They own the file The Group is the group in which the owner is in Others is everyone else!

48 Which permission? Prioritized resolution of differences… if the user is the owner – then use the User permission otherwise, if the user is in the owner’s group – then use the Group permission otherwise use the Other permission

49 What do the permissions mean…? Read – I can cat the file, or open it in a text editor in read-only mode Write – I can modify the file using a text editor or some other file manipulation tool (like cat in append mode). – I can delete the file if I want to. Execute – I can execute the file if it is an executable binary file – In other words, I can load the program into memory and run it!

50 Okay, but what about directories? Read – I can list the directory’s contents Write – I can add files to or remove files from the directory Execute – I can enter the directory (such as with cd) Non-intuitive, but sometimes we might want to have write-only permissions… – Why?

51 Changing permissions and owners Change the owner of a file with chown Change the group that owns a file with chgroup Change the file permission scheme with chmod – This is also known as changing the file’s mode These operations may require root access… Or they may require you to be the file owner See man for more details!

52 More details on chmod Two modes of operation that we are concerned with – Relative $ chmod u+rx file – Adds read and execute permissions to the user/owner of the file – Absolute $ chmod 755 file – Set the file’s permission to be rwx r-x r-x

53 chmod relative calls chmod o+r myfile.txt Gives the “other” group read permissions on myfile.txt; can also specify ‘-’ to remote a permission Important characters: a – allr – read u – ownerw – write g – groupx – execute o – others

54 Aside: A little more about setid bits There are three setid bits – Sticky Off: If the user has write permission on the directory, then that user can rename or remove files even if the user is not the owner On: Only the file owner, directory owner, and root can rename or remove files that are in the directory – Setuid – set the execution user id (EUID) of the process to the id of the file owner For example, the passwd binary, which allows a user to change his/her password, is owned by root – and the setuid is true. So, when Jeff executes passwd, it is executed as though root ran it! – Setgid – like setuid, except it sets the execution group id to the group id of the file.

55 What is a group? A list of users, for the purpose of the permissions scheme Useful if you are doing a class project Or if you are working in a company

56 The superuser Also known as root Root can do anything. – Modify users – Change permissions on files – Kill any process – Delete any directory

57 Changing users It is possible and sometimes useful to switch to another user This can be done using the su command $ su user – This will prompt for the user’s password, and then act as though the user had logged in – The working directory will remain the same If the superuser uses su, then no password is required

58 sudo Execute commands as another user without knowing the other user’s password! – Typically used to execute commands as root. Users in the sudoers file can make use of sudo sudo –i opens up an interactive root session – Allows the user to execute commands as root in a running session – Useful for running multiple commands – Also very dangerous.

59 Remember: Careful what you ask for! If you sudo something it will happen, almost assuredly. Make sure that what you are asking for is what you want. Root can make a lot of dangerous system modifications that basic users cannot – often for their protection! xkcd.com/149


Download ppt "CIS 191: Linux and Unix Class 0 January 21 st, 2015."

Similar presentations


Ads by Google