Informatics1-2017/Practice2

A MathWikiből
(Változatok közti eltérés)
(Linux permissions)
(Linux permissions)
28. sor: 28. sor:
 
The symbol for '''a''' differs from '''o''' for example it is possible to give execution permissions to others, but deny it to my group.
 
The symbol for '''a''' differs from '''o''' for example it is possible to give execution permissions to others, but deny it to my group.
  
Karakteresen a jogokat egy 10 karakterből álló sztring tartalmazza:
+
In the alphabetic denotion, the permissions are usually represented by a 10 character long string:
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
| 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 10
 
| 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 10
 
|-
 
|-
| rowspan="2" | típus || colspan="3" style="text-align: center;" | owner jogok || colspan="3" style="text-align: center;" | group jogok || colspan="3" style="text-align: center;" | others
+
| rowspan="2" | tpye || colspan="3" style="text-align: center;" | owner || colspan="3" style="text-align: center;" | group || colspan="3" style="text-align: center;" | others
 
|-
 
|-
 
| read || write || execute || read || write || execute || read || write || execute  
 
| read || write || execute || read || write || execute || read || write || execute  

A lap 2017. szeptember 11., 04:43-kori változata

Tartalomjegyzék

Linux permissions

  • Permission groups
    • superuser (su), pl. system administrators
    • owner, the owner of the given file, who created it, i.e. kkovacs
    • group, a group of users that the owner is a part of, i.e. student
    • others, everyone else
  • Permission types
    • w: Write, can write or read the file
    • r: Read, can read the file, or access the folder's contents
    • x: eXecute, can execute the file (script or program), or access the files / folders inside the folder
    • -: nothing

We can pick and choose from these types and groups, for example we can set the permissions for a file so that

  • the owner can read, write and execute the file
  • the owner's group can read and execute the file
  • everybody else can't do anything with the file

Superusers can always do everything with all files.

We can use alphabetic and numerical codes for these permissions:

  • u: user, owner
  • g: group
  • o: others
  • a: everyone: user, group and others.
  • read: r or 4
  • write: w or 2
  • execute: x or 1
  • nothing: - or 0

The symbol for a differs from o for example it is possible to give execution permissions to others, but deny it to my group.

In the alphabetic denotion, the permissions are usually represented by a 10 character long string:

1 2 3 4 5 6 7 8 9 10
tpye owner group others
read write execute read write execute read write execute
$ ls -l ~
drwxr-xr-x 8 borbely student 4096 Aug 30 23:24 Desktop
drwxr-xr-x 2 borbely student 4096 Mar 27  2012 Downloads
drwxr-xr-x 2 borbely student 4096 Oct 20  2009 Drives
drwx------ 2 borbely student 4096 Apr 20 10:42 mail
drwxr-xr-x 7 borbely student 4096 Sep  6 13:01 public_html
$ _

A public_html mappámnak a tulajdonosa: borbely, csoportja student, azonosító: drwxr-xr-x, vagyis:

  • típusa d: könyvtár
  • saját jogaim rwx, vagyis minden (hál' Istennek)
  • diáktársaim jogai r-x, vagyis írni nem írhatják, de minden mást szabad
  • mindenki másnak r-x, vagyis más is olvashatja és futtathatja

Numerikusan egy 3 számból álló érték határozza meg a jogokat. Balról az első szám az owner jogok, aztán group majd others. A számok 4: olvasás, 2: írás, 1: execute. Ezek összeadódhatnak. Pl /home/student/borbely/public_html jogai: 755 azaz

  • owner (borbely) 7=4+2+1: írás, olvasás és futtatás
  • group (student) 5=4+1: olvasás és futtatás
  • other 5=4+1: olvasás és futtatás

chmod

A jogokat a chmod paranccsal változtathatjuk meg. Néhány példa:

  • chmod 700 ~/info_hazi: elrejtem az info_hazi mappámat rajtam kívül mindenki elől (nem tudnak belelépni, sem listázni a tartalmát), persze a superuser-ek láthatják.
  • chmod 750 ~/important_work: ebben a mappában egy group-al együtt dolgozok valamin, a group olvashatja és futtathatja, én írhatom is, senki más nem láthatja.
  • chmod 754 -R ~/public_html: az -R kapcsoló rekurzívan alkalmazza a beállításokat a mappa tartalmára.

Bővebben

Bash

Néhány hasznos link:

Alapvető parancsok

  • pwd: aktuális könyvtár kiíratása.
  • cd: könyvtárváltás. Ha paraméter nélkül hívjuk meg, akkor a saját mappánkba visz. Pl cd /mnt, cd, cd ..
  • ls: könyvtár tartalmának listázása. Pl: ls, ls -h, ls /dev, ls -h -l ~
  • mkdir: könyvtár létrehozása. mkdir NewFolder
  • cp: másolás. cp mit.txt hova.txt
  • mv: mozgatás/átnevezés (az eredeti nem marad meg). mv mit.txt hova.txt
  • rm: törlés, Pl: rm alma.txt, rekurzívan töröl minent a mappával együtt: rm -r NewFolder
  • quota: A felhasznált/megmaradt helyet írja ki. Ha a kvótánk betelik, akkor nem kapjuk meg a nekünk címzett leveleket és a grafikus terminálra sem tudunk belépni; ilyenkor a parancssoros terminálra belépve tudjuk kitakarítani a home-unkat.
  • df, du: lemezen szabad / felhasznált helyet írja ki. A -h kapcsolóval olvasható GB, MB, kB értékeket kapunk, de lehet fix byte-okban is kiírni. Pl: df -h ~
  • mc: midnight commander fájlböngésző.
  • segíts magadon
    • info <parancs>
    • man <parancs> az adott parancsról leírást ad. A leírásban navigálni a 'fel', illetve a 'le' billentyűkkel, továbbá a 'PageUp', 'PageDown'-nal lehet. Kereséshez '/' jel után kell beírni a kifejezést. Kilépés 'q'-val. man ls
    • <parancs> --help
    • help
  • history: parancs történet lekérdezése.
  • apropos: parancs/program nevek keresése. apropos math
  • top: futó alkalmazások.
  • kill, killall, xkill: folyamatok leállítása. Egy adott felhasználó összes folyamatának leállítása: killall -u username
  • cat: fájl tartalmának kiíratása. Pl: cat .forward
  • echo: kiírja az argumentumait, Pl: echo Hello World. Figyelem, beugratós: echo --help
  • grep: szöveg mintázatok keresése állományokban. grep "tű" szénakazal.txt
  • less: szöveges állományok megjelenítése, könnyebb olvashatóság nagy fájloknál, Pl less valami.txt
  • head (-n ), tail (-n ): fájl elejének és végének a kiiratása. head -n 100 valami.txt
  • sort (-g -k): szövegállomány rendezése.
  • wc (-l): byte/karakterek/sorok számolás adott fájlra.
  • ssh: távoli gépre való bejelentkezést teszi lehetővé. Linux-ról Windows-ról
  • scp: távoli gépre/gépről való másolás. Linux-ról Windows-ról
  • wget: file-ok letöltése internetről, HTTP, HTTPS és FTP használatával.
  • exit: kilépés terminálból (vagy ctrl+d).
  • sudo: programok futtatása superuserként. (Mat intézetben erre nem lesz lehetőségünk) Pl. sudo rm /home/someone_I_hate/important_file.txt
  • halt, reboot: kikapcsol, újraindít (Mat intézetben erre sem lesz lehetőségünk)

Pipe, redirect

Minden program írhat a konzolra, vagy az stderr-re, ez az, amit a konzolon szoktunk látni. Azonban ezeket a képernyő helyett fájlba is írhatjuk.

$ ls -l ~
drwxr-xr-x 8 borbely student 4096 Aug 30 23:24 Desktop
drwxr-xr-x 2 borbely student 4096 Mar 27 2012 Downloads
drwxr-xr-x 2 borbely student 4096 Oct 20 2009 Drives
drwx------ 2 borbely student 4096 Apr 20 10:42 mail
drwxr-xr-x 7 borbely student 4096 Sep 6 13:01 public_html
$ ls -l ~ > folder.txt
$ cat folders.txt
drwxr-xr-x 8 borbely student 4096 Aug 30 23:24 Desktop
drwxr-xr-x 2 borbely student 4096 Mar 27 2012 Downloads
drwxr-xr-x 2 borbely student 4096 Oct 20 2009 Drives
drwx------ 2 borbely student 4096 Apr 20 10:42 mail
drwxr-xr-x 7 borbely student 4096 Sep 6 13:01 public_html
$ _

A > jellel egy parancs kimenetét egy fájlba irányítjuk át, majd a fájlt kiírathatjuk a cat-el. Ugyanakkor figyeljük meg a következőt:

$ ls -l /home/algebra/wettl/ > myfile.txt
ls: cannot open directory /home/algebra/wettl/: Permission denied
$ cat myfile.txt
$ _

A myfile.txt üresen maradt, de a konzolon hibaüzenet jelent meg (nem volt jogunk a mappa listázására). Ez azért van, mert az utóbbi ls parancs nem a standard kimenetre, hanem a hiba-kimenetre, azaz stderr-re írt. Az stderr-t a 2> jelel irányíthatjuk át:

$ ls -l /home/algebra/wettl/ > myfile.txt 2> error.log
$ cat myfile.txt
$ cat error.log
ls: cannot open directory /home/algebra/wettl/: Permission denied
$ _

Így az egyik fájlba a standard kimenet (stdout), a másikban az stderr került bele.

Az egyes programok olvashatnak a standard bemenetükről: stdin. Az ú.n. nem-interaktív parancsok olyanok, hogy a parancs kiadása után a befejezéséig nem nyúlunk a billentyűzethez. Ezekkel csak az argumentumaikon keresztül kommunikálhatunk. Interaktív parancsok a futásuk közben olvasnak a standard bemenetükről: stdin

  • nem-interaktív parancs: grep "needle" haystack.txt
  • interaktív parancs: grep "needle"

Az előbbi esetben a grep egy megadott fájlban keresi a needle kifejezést. Az utóbbi esetben a beírt szövegben keresi ugyanazt.

$ grep "needle"
I hate this
why can't I find anything
why can't I find a needle
why can't I find a needle
oh, a needle
oh, a needle
again
$ _

A Ctrl+D billentyű-kombinációval megszakítjuk a futást. A needle-t tartalmazó sorok duplán vannak, mert azokat a grep kérésemre kiírta.

Próbáljuk ki így:

$ grep "needle" > needle.txt
I hate this
why can't I find anything
why can't I find a needle
oh, a needle
again
$ cat needle.txt
why can't I find a needle
oh, a needle
$ _

Ezzel kiválasztottuk a bemenetről a needle-t tartalmazó sorokat.

Az egyik parancs kimenete lehet a másik bemenete is, ez a pipe, jele egy függőleges vonal: |.

Példa: írjuk ki a home mappánk azon elemeit, melyek nevükben az info szövegrészletet tartalmazzák.
$ ls -1 ~
Desktop
Downloads
Drives
info1
info_hf.txt
mail
myfile.txt
myfolder
needle.txt
public_html
regi_info
regi_info_zh.txt
$ ls -1 ~ | grep "info"
info1
info_hf.txt
regi_info
regi_info_zh.txt
$ _

Példa: sok elem van egy mappában és apránként végig akarjuk nézni:

$ ls /home/student/ | wc -l
821
$ ls /home/student/ | less

Egy fájlból kivehetjük a különböző sorokat (rendezés és duplikált sorok törlése):

$ cat nevek.txt | sort | uniq > nevek.sorted.txt

Ha egy fájl tartalmát akarjuk pipe-olni egy parancsba, azt így is megtehetjük (<):

$ cat nevek.txt | sort
$ sort < nevek.txt

Ez kombinálható > -el.

$ sort < nevek.txt | uniq > nevek.sorted.txt

Feladatok

1)

  • Töltsük le a A1nevsor.txt állományt a borbely felhasználó oldaláról
    • wget
  • Távolítsuk el a neveket az első oszlopból.
    • cut
  • Rendezzük a sorokat Neptun kód szerint (a fejléc kivételével).
    • sort
  • Nagybetűsítsük a Neptun kódokat.
    • tr
  • Írjuk ki az eredményt egy külön fájlba (segédfájlokat használhatunk útközben).
    • cat, echo, paste, head, tail

Megoldás

wget math.bme.hu/~borbely/A1nevsor.txt
tail -n+2 A1nevsor.txt | cut -f2,3 -d" " | sort | tr [:lower:] [:upper:] > sorted.txt

Windows

A DOS után a Windows-os parancssori lehetőségek nem nagyon fejlődtek. A parancssor közelében sincs a Linux-nak, sem használhatóságban, sem funkcióiban, de azért van valami.

  • Parancssor indítása
    • Start menü -> Parancssor
    • Start menü -> Futtatás -> cmd
    • Keresés -> cmd
  • leírás
  • használható: help, help <parancs>
  • Windows 10-en új életre kelt a cmd.
  • A Windows 10 egy éves évfordulója óta beépített a bash (béta verzió).

Használatos a PowerShell, ami nem mindegyik verzión beépített, de ingyenes és elterjedt.

Különbségek

Pár szembetűnő különbség

  • a Windows case-insensitive, vagyis kis és nagybetű nem számít, ellenben a Linux case-sensitive.
  • A könytár-, fájlnevek:
    • C:\Windows\System32\
    • /usr/bin/
  • parancssori kapcsolók perrel versus kötőjellel:
    • Windows: dir /b
    • Unix: ls -l
  • script
    • Windows-on: .bat
    • Linux-on: .sh
  • pipe, redirect hasonló

Gyakran emulálják/helyettesítik a unix-os lehetőségeket windows-on:

Személyes eszközök