bash

May 102012
 

Flattr this!

Bash File Testing
-b filename Block special file
-c filename Special character file
-d directoryname Check for directory existence
-e filename Check for file existence
-f filename Check for regular file existence not a directory
-G filename Check if file exists and is owned by effective group ID.
-g filename true if file exists and is set-group-id.
-k filename Sticky bit
-L filename Symbolic link
-O filename True if file exists and is owned by the effective user id.
-r filename Check if file is a readable
-S filename Check if file is socket
-s filename Check if file is nonzero size
-u filename Check if file set-ser-id bit is set
-w filename Check if file is writable
-x filename Check if file is executable
Feb 252012
 

Flattr this!


Original

– čia pateikiamas tik vertimas!

Jei norite leisti prisijungti root naudotojui per SSH tik iš vieno IP, o kitiems naudotojams iš betkur kitur. Tokį sprendimą galime realizuoti per PAM autentifikacijos modulius. Naudosime pam_access PAM modulį, kuris naudojamas prieigos valdymui. Šis suteikia galimybę kontroliuoti prisijungimus atsižvelgiant į:

  • Naudotojo prisijungimo vardą (Login names)
  • Kompą ar domeną (Host or domain names)
  • IP ar IP tinklas (Internet addresses or network IP numbers)
  • Terminal line names etc

Kam naudojam pam_access?

Prie serverio gali reikėti prisijungti iš betkurio tinkle esančio kompiuterio. taigi turime pasirūpinti gera prieigos kontrole, naudojant OpenSSH servisą.

Kaip susikonfiguruoti pam_access?

Reikės keisti šiuos failiukus:

  1. /etc/pam.d/sshd
  2. Linux PAM konfiguracinis failas.

  3. /etc/security/access.conf
  4. Taisyklių paėmimui pagal nutylėjimą yra naudojamas šis failas.

Kai kasnors jungiasi, perbėgama per 2 bylos turinį ir jei yra sutapimas įvykdoma taisyklė. Mes galime nurodyti, ar priimti tokį prisijungimą ar atmesti. sintaksė: permission : username: origins kur:
permission : Teisių laukelis “+” (prieiga suteikiama) ar “-” (prieiga atšaukiama)
username : Linux sisteminis naudotojas (username)/login‘as (root ir kiti). Galima nurodyti ir grupės vardą. Arba galima nurodyti specialų trumpinį: ALL (Jei norime, kad tai būtų skirta visiems).
origins : Čia pateikiamas sąrašas terminalo langų, kompo vardų, IP adresų, domenų, kurie prasideda . ar specialų trumpinį ALL ar LOCAL

Visų pirma, kad tolesni pakeitimai veiktų reikia įjungti pam_access palaikymą byloje /etc/pam.d/sshd:


# vi /etc/pam.d/sshd
# Papildome eilute:
account required pam_access.so


Išsaugome ir uždarome.

Tarkime norime leisti naudotojam root ir lpic prisijungti tik iš IP adreso 1.1.1.1.

Atidarome bylą: /etc/security/access.conf su root’o teisėmis:


# vi /etc/security/access.conf
# Papildome eilute:
-: ALL EXCEPT root lpic:1.1.1.1


Išsaugome bylą.

Dabar SSH leis prisijungimus naudotojų root ir lpic tik iš 1.1.1.1 IP adreso. Jei naudotojas root ir lpic bandys jungtis iš kito IP adreso, jiems parašys: ‘Connection closed by xxx.xxx.xxx.xxx’ ir error pranešimu turėtų būti papildytas Jūsų žurnaliukas (log’as):


# tailf /var/log/message
Feb 20 19:02:39 hostname pam_access[2091]: access denied for user `lpic' from `xxx.xxx.xxx.xxx'


Kur, jau kaip ir minėjau xxx.xxx.xxx.xxx1.1.1.1.
Beje, jei įrašėte savo naudotojo vardą ir išsaugojote… VISOS TAISYKLĖS taikomos IŠKART po IŠSAUGOJIMO /etc/security/access.conf bylos! Būkite atsargūs!

Daugiau pavyzdukų:

a) Kartais reiktų sukurti taisykles, kurios leistų prisijungti visiems išskyrus rootbetkur, o root tik iš localhost:


-:root:ALL EXCEPT LOCAL
# ar
-:root:ALL EXCEPT localhost


b) Deny network and local login to all users except for user root and vivek:

-:ALL EXCEPT root vivek:ALL

c) Tik iš 192.168.1.0/24 leisti prisijungti root naudotoju:


+ : root : 192.168.1.0/24

Pastebėjimas: taip galime leisti ir drausti jungtis visoms tarnyboms, kurios naudoja PAM, pvz.: ftpd, telnet ir t.t.

P.S. + : root : yyy.yyy.yyy.yyy
- : root : ALL

Jun 052011
 

Flattr this!

Sveiki, kaip sekas?

Aišku jei Jumi labai paranojikas ir niekuom nepasitikit, ir suprantat, kad kiekviena programulka, su papildoma funkcija, Jūsų serveryje, suteikia įsilaužėliui po papildomą įsilaužimo įrankį tai Jūs galite susikompiliuoti SAMBA iš sources ir štai sambos HowTo. Mes taip nedarysime, juk kaip iš pavadinimo matome tai: naminis serveris, kuris NĖRA pasiekiamas iš išorės.

Taigi mums prireiks:

Taigi, parsisiunčiame SAMBA:


aptitude install samba

sutikime su viskuom, tik įdėmiai paskaitykite ką jis jums siūlo…

Taigi nusikopinkime egzistuojantį sambos configūracinį failiuką ir įmeskime šį, ara pasikeiskite Jau esamą, taip Jūs daugiau sužinorsite apie sambos teikiamus malonumus… taigi:


mv /etc/samba/smb.conf /etc/samba/smb.conf.orig
vi /etc/samba/smb.conf


[global]
workgroup = LINUX
server string = %h server
dns proxy = no
hosts allow = 127.0.0.1 192.168.0.0/16 10.0.0.0/8 172.16.0.0/12
log file = /var/log/samba/log.%m
log level = 2
max log size = 1000
syslog = 0
panic action = /usr/share/samba/panic-action %d
encrypt passwords = true
passdb backend = tdbsam
obey pam restrictions = yes
unix password sync = yes
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
pam password change = yes
printing = cups
printcap name = cups
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=65536 SO_SNDBUF=65536 SO_KEEPALIVE
deadtime = 15
vfs objects = full_audit
full_audit:prefix = %u|%I|%m|%S
full_audit:success = mkdir rename unlink rmdir pwrite
full_audit:failure = none
full_audit:facility = LOCAL7
full_audit:priority = NOTICE
[homes]
comment = Home Directories
browseable = no
read only = yes
create mask = 0700
directory mask = 0700
valid users = %S
[printers]
security = share
comment = All Printers
browseable = yes
path = /var/spool/samba
printable = yes
guest only = yes
public = yes
read only = yes
create mask = 0700
create mode = 0700
use client driver = yes
[print$]
comment = Printer Drivers
path = /var/lib/samba/printers
browseable = yes
read only = yes
guest ok = no
[DL]
path=/home/Downloads
writeable = no
valid users = USERNAME
public = no
browseable = no
available = yes


Taigi Šiame konfigūraciniame faile matome 4 pagrindines sekcijas (P.S. kas redaguojate originalų sambos failiuką… # ir ; reiškia komantarą, viskas kas už šių ženklų iki naujos eilutės, nebus traktuojama sambos serverio)

  1. [global]
  2. [homes]
  3. [printers]
  4. [print$]
  5. [DL]

Vienetuku ir dvejetuku pažymėtos sekcijos yra SAMBA išmyslas… :) [global] skiltyje aprašomi bendri samba parametrai, kurie bus taikomi visai SAMBA’i ir visiems padalintiems resursams, kuriuose nepasakysime kitaip. Tuo tarpu [homes] tai yra paviešintas/padalintas/už’share’intas resursas, kurio funkcija, paviešinti naudotojo namų katalogus. T.Y. naudotojas prisijungęs, praėjęs autentifikaciją, užėjus į serverį per windows’us, pamatys savo namų katalogą SAMBA sistemoje.
SAMBA naudotojai turi egzistuoti ne tik Linux/Unix sistemoje, bet ir SAMBOS autentifikavimo sistemoje, nes SAMBA saugo slaptažodį tokiu pat formatu, kaip ir WINDOWS OS.

Taigi, sekančios sekcijos [printers] ir [print$] yra reikalingos, jei mes norime per Linux paviešinti spausdintuvą.

Taigi paskutinė opcija [DL] yra mano paviešintas resursas tinkle.


[DL]
path=/home/Downloads
writeable = no
valid users = USERNAME
public = no
browseable = no
available = yes


  • DL – tokiu pavadinimu yra pasiekiamas resursas vietiniame tinkle \\Serverio_IP\DL
  • path=/home/Downloads – čia nurodoma, kurią direktoriją norime paviešinti…
  • writeable = no – Į šį resursą, nebus galima įrašyti duomenų
  • valid users = USERNAME – ši opcija nėra būtina, bet aš nenoriu, kad į šią direktoriją patektų betkas, o tik naudotojai kurie praėjo autorizaciją
  • public = no – Resursas nėra viešai pieinamas, neautorizuoti naudotojai nealės čia patekti
  • browseable = no – Resursas nėra MATOMAS užėjus į serverį per explorer.exe į \\Server_IP jo nepamatysite, nebent pakeisite į yes
  • available = yes – resursas yra įjungtas, kai jums jo nebereikės, bet nesinorės trinti visų nustaytymų bei tingėsite komentuoti, tiesiog parašome čia no ir viskas ;)

Taigi, beliko sužinoti, kaip pridėti naudotoją prie SAMBA sistemos… Tam mums reiktų, dėl viso pikto perkrauti SAMBA serverį ir tuomet pridėti naudotoją, kuris jau yra mūsų sistemoje, o jei jo nėra jį ten sukurti:


/etc/init.d/samba restart # perkrovem SAMBA
useradd -s /bin/false -m naudotojas # Sukuriame sisteminį naudotoją tik sambai
smbpasswd -a naudotojas # pridedame jį prie SAMBA duomenų bazės.

tai tiek… nor yra dar daug ko čia papasakoti.

May 202010
 

Flattr this!

touch /backup.sh
mkdir /backup
chmod a+x /backup.sh

#!/bin/bash
cd /backup
file="`date +%Y%m%d-%H%M%S`.tar"
#echo $file
tar -cf new.backup/$file folder_to_backup
cd /backup/new.backup
bzip2 -zq9 $file
#rm $failas
echo "backed up `date` \n" >> /backup/backup.made
#remove older then 3 days to /backup/old.backup
find -type f -mtime +3 -exec mv {} ../old.backup/ \;
cd ../old.backup
# completely remove backups, older then 7 days
find -type f -mtime +7 -exec rm -f {} ../old.backup/ \;

May 132010
 

Flattr this!

Žinau, jūs jau daugybe kartų esate girdėję apie enlightenment aplinką. Tikriausiai esate ją ir išbandę debian repozitorijuose?! Deja, tokie bandymai būna nelabai vykę. Dažniausiai įsidiegia e16, o jeigu ir e17 tai be visų galimų modulių… o tuo tarpu prisidėję į resursus http://packages.enlightenment.org/ resursą mes galėsime pasisipūsti vieną iš naujausių versijų ir ne tik naujausių, bet ir PILNĄ, kas yra labiausiai aktualu.
Taigi atsidarome failiuką /etc/apt/sources.list su jūsų pamegtu teksto redaktorium:
# vi /etc/apt/sources.list
Tuomet įrašome ten eilutę:
deb http://packages.enlightenment.org/debian lenny main extras

Tuomet pridedame repozitorijaus raktą ir paleidžiame atnaujinimą paketų sąrašo:
# wget http://packages.enlightenment.org/repo.key -o /tmp/b && apt-key add /tmp/b && rm /tmp/b && apt-get update

Taip pat jums bus smalsu žvilgtelt čia

May 102010
 

Flattr this!

hello, how to get time to see what time is now in linux command prompt? simply:
$ date
Mon May 10 15:56:05 EEST 2010
But i need with no spaces and colons… i use all mighty sed :)

$ date | sed 's/\ /_/g' | sed 's/:/-/g'
Mon_May_10_15-56-31_EEST_2010
Hurray!?! No! I still need something else: YYYY-MM-DD HH:mm:ss howto get it? simply:
$ date +%Y-%m-%d\ %H:%M:%S
2010-05-10 15:57:01
How to set the date? simply:
$ date +%Y-%m-%d.%H:%M:%S -s "2010-05-03.12:56:01"
$ date
Mon May 3 12:56:05 EEST 2010

for setting up time you can simply get ntp (network time protocol) to sync your clock with pool severs ;)

May 042010
 

Flattr this!

In english
Kaip prijungti ftp serveri kaip lokalų katalogą?
Paieškojus radau keletą sprendimų, juos visus išbandžiau, ir priėjau išvadų, kad lyg ir patogiausias būdas tai pasinaudojus curlftpfs. Įdiekite jį pasinaudodami aptitude ar betkokį kitą paketų valdymo įrankį. (Papildomai apie curlftpfs_*.deb)
Taigi, mes jau galime prisijungti direktoriją prie ftp serveriuko, kaip tai padaryti?

Prijungimui per fstab įgyvendinti mums reikia atlikti 2 veiksmus:

  • pridėti įrašą į /etc/fstab
  • sukurti mount.curlftpfs

Taigi pridedame įrašą į /etc/fstab


ftpusername:ftppassword@ftp.site.address /path/to/mountpoint curlftpfs rw,allow_other,uid=userid,gid=groupid 0 0


ir tuomet sukuriame mount.curlftpfs tam, kad mount suprastų ką ir kaip reikia prijungti naudojant curlftpfs failų sistemą.


# ln -s `which curlftpfs` /sbin/mount.curlftpfs


Ir antrasis būdas tiesiog kiekvieną kartą paleidžiant OS prijungti pasinaudojant curlftpfs ftp direktoriją, deja jeigu mes neturėsime krovimosi metu tinklo, mum nepavyks prisijungti šio resurso. Taigi paprasčiausiai įdedame eilutę:


curlftpfs ftpusername:ftppassword@ftp.site.address /path/to/mountpoint/


Žinoma, neturint tinklo abiem atvejais negalėsime prisijungti prie ftp resurso, bet pirmuoju būdu atsiradus tinklui, galėsime tiesiog įrašyti: mount /path/to/mountpoint
ir resursas bus automatiškai prijungtas.


How to mount some ftp resource to my Debian box?
After doing some searches i have found some ways, i have tried them and wrote down the way i liked using curlftpfs. aptitude or apt-get it from curlftpfs_*.deb repositories or compile it from sources, what ever you like. After you have installed these you may choose howto mount our ftp to /path/to/mountpoint.

connecting using fstabwe wil need to make 2 steps:

  • add a row to /etc/fstab
  • create mount.curlftpfs

So let’s add some line to /etc/fstab


ftpusername:ftppassword@ftp.site.address /path/to/mountpoint curlftpfs rw,allow_other,uid=userid,gid=groupid 0 0


last step is to let mount recognize the filesystem type


# ln -s `which curlftpfs` /sbin/mount.curlftpfs


And the second one is just to add a row to /etc/rc.local file.


curlftpfs ftpusername:ftppassword@ftp.site.address /path/to/mountpoint/


Of course both ways will not work if we will not have active connection at startup. But using fstab way you can easily mount it: mount /path/to/mountpoint

External links:
some more info on forums

Mar 242010
 

Flattr this!

last -f /var/log/wtmp > wtmp.log

recover # veikia tik iki pirmo umount, mount

strings /dev/md0 > failas.txt # istraukia visa info i text faila

find -type d -size +50000 -size -60000 -name ‘testfile*’ -exec rm -rf “{}” \; # istrina testfile katalogus ir ju turini ir kuriu dydis daugiau nei 50000 baitu :) ir maziau nei 60000 baitu

cut -d ‘ ‘ -f1 file

sort file | uniq > file.new