Permissões
Altere permissão e proprietário com o chmod
e chown
. O umask padrão pode ser alterado para todos os usuários em /etc/profile para Linux ou /etc/login.conf para FreeBSD. O umask padrão é normalmente 022. O umask é subtraído a partir do 777, assim o umask 022 resulta em uma permissão de 755.
1 --x execute # Mode 764 = exec/read/write | read/write | read 2 -w- write # For: |-- Owner --| |- Group-| |Oth| 4 r-- read ugo=a u=user, g=group, o=others, a=everyone
# chmod [OPTION] MODE[,MODE] FILE # MODE é da forma [ugoa]*([-+=]([rwxXst])) # chmod 640 /var/log/maillog # Restrito ao log -rw-r----- # chmod u=rw,g=r,o= /var/log/maillog # O mesmo que acima # chmod -R o-r /home/* # Remove recursivamente outros legíveis para todos os usuários # chmod u+s /path/to/prog # Configura o SUID bit no executável (Saiba o que fazer!) # find / -perm -u+s -print # Encontra todos os programas com o SUID bit # chown user:group /path/to/file # Altera o usuário e proprietário do grupo de um arquivo # chgrp group /path/to/file # Altera o proprietário de um grupo de um arquivo # chmod 640 `find ./ -type f -print` # Altera as permissões para 640 para todos os arquivos # chmod 751 `find ./ -type d -print` # Altera as permissões para 751 para todos os diretórios
Informações de disco
# diskinfo -v /dev/ad2 # informações a respeito do disco (sector/size) FreeBSD # hdparm -I /dev/sda # informação a respeito do disco IDE/ATA (Linux) # fdisk /dev/ad2 # Exibe e manipula a tabela de partição # smartctl -a /dev/ad2 # Exibe a informação disk SMART
Boot
FreeBSD
Para iniciar (boot) um kernel antigo se o novo não iniciar, pare o boot durante a contagem regressiva.
# unload # load kernel.old # boot
Pontos de montagem do sistema/Uso de disco
# mount | column -t # Mostra o sistemas de arquivos montados no sistema # df # Exibe espaço livre de disco e dispositivos montados # cat /proc/partitions # Mostra todas as partições registradas (Linux)
Uso de disco
# du -sh * # Tamanhos de diretórios como listado # du -csh # Tamanho total do diretório atual # du -ks * | sort -n -r # Classifica tudo por tamanho em kilobytes # ls -lSr # Mostra arquivos, maiores por ultimo
Quem tem quais arquivos abertos
Isso é útil para descobrir qual arquivo está bloqueando uma partição que tem que ser desmontada e dá um típico erro de:
# umount /home/
umount: unmount of /home # umount impossible because a file is locking home (impossível desmontar por que um arquivo está travando o home)
failed: Device busy (falhou: dispositivo ocupado)
FreeBSD e muitos Unixes
# fstat -f /home # para um ponto de montagem # fstat -p PID # para uma aplicação com o PID # fstat -u user # para um name
Encontre arquivo de log aberto (ou outros arquivos abertos), diga para o Xorg:
# ps ax | grep Xorg | awk '{print $1}' 1252 # fstat -p 1252 USER CMD PID FD MOUNT INUM MODE SZ|DV R/W root Xorg 1252 root / 2 drwxr-xr-x 512 r root Xorg 1252 text /usr 216016 -rws--x--x 1679848 r root Xorg 1252 0 /var 212042 -rw-r--r-- 56987 w
O arquivo com o inum 212042 é o único arquivo em /var:
# find -x /var -inum 212042 /var/log/Xorg.0.log
Linux
Encontre arquivos abertos em um ponto de montagem com fuser
ou lsof
:
# fuser -m /home # Lista processos acessando /home
# lsof /home
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
tcsh 29029 eedcoba cwd DIR 0,18 12288 1048587 /home/eedcoba (guam:/home)
lsof 29140 eedcoba cwd DIR 0,18 12288 1048587 /home/eedcoba (guam:/home)
Sobre uma aplicação:
ps ax | grep Xorg | awk '{print $1}' 3324 # lsof -p 3324 COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME Xorg 3324 root 0w REG 8,6 56296 12492 /var/log/Xorg.0.log
Sobre um único arquivo:
# lsof /var/log/Xorg.0.log COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME Xorg 3324 root 0w REG 8,6 56296 12492 /var/log/Xorg.0.log
Monta/remonta um sistema de arquivo
Por exemplo o cdrom. Se listado em /etc/fstab:
# mount /cdrom
Ou encontre o dispositivo em /dev/ ou com o dmesg
FreeBSD
# mount -v -t cd9660 /dev/cd0c /mnt # cdrom # mount_cd9660 /dev/wcd0c /cdrom # outro método # mount -v -t msdos /dev/fd0c /mnt # floppy
Entrada em /etc/fstab:
# Device Mountpoint FStype Options Dump Pass# /dev/acd0 /cdrom cd9660 ro,noauto 0 0
Para deixar os usuários fazerem isso:
# sysctl vfs.usermount=1 # Ou insira a linha "vfs.usermount=1" in /etc/sysctl.conf
Linux
# mount -t auto /dev/cdrom /mnt/cdrom # comando mount típico do para cdrom # mount /dev/hdc -t iso9660 -r /cdrom # IDE típico # mount /dev/scd0 -t iso9660 -r /cdrom # cdrom SCSI típico # mount /dev/sdc0 -t ntfs-3g /windows # SCSI típico
Entrada em /etc/fstab:
/dev/cdrom /media/cdrom subfs noauto,fs=cdfss,ro,procuid,nosuid,nodev,exec 0 0
Montar uma partição FreeBSD com o Linux
Encontre o número da partição com o fdisk, essa é normalmente a partição root, mas pode ser uma outra outra fatia de BSD também. Se o FreeBSD tiver muitas fatias, elas são as não listadas na tabela do fdisk, mas visíveis em /dev/sda* ou /dev/hda*.
# fdisk /dev/sda # Encontre a partição FreeBSD /dev/sda3 * 5357 7905 20474842+ a5 FreeBSD # mount -t ufs -o ufstype=ufs2,ro /dev/sda3 /mnt /dev/sda10 = /tmp; /dev/sda11 /usr # As outras fatias
Remontar
Remontar um dispositivo sem remontá-lo. Necessário para o fsck
# mount -o remount,ro / # Linux # mount -o ro -u / # FreeBSD
Cópiar o arquivo bruto a partir de um cdrom dentro de uma imagem ISO (tamanho de blocos padrão de 512 podem causar problemas):
# dd if=/dev/cd0c of=file.iso bs=2048
Virtualbox
Permite um compartilhamento no host:
# VBoxManage sharedfolder add "GuestName" --name "share" --hostpath "C:\hostshare"
Montar compartilhamento no guest (convidado) (linux, FreeBSD)
# sudo mount -t vboxsf share /home/vboxshare # -o uid=1000,gid=1000 (as appropriate) share /home/colin/share vboxsf defaults,uid=colin 0 0 # fstab entry
OSX
# diskutil list # Lista as partições de um disco # diskutil unmountDisk /dev/disk1 # Desmonta um disco inteiro (todos os volumes) # chflags hidden ~/Documents/folder # Enconde pastas (diretórios) (reverta com o unhidden)
Adicionar swap com o sistema em pleno uso (on-the-fly)
Suponhamos que você precise de mais swap (agora mesmo), diga um arquivo de 2GB /swap2gb (somente em Linux).
# dd if=/dev/zero of=/swap2gb bs=1024k count=2000 # mkswap /swap2gb # cria a área de swap # swapon /swap2gb # ativa a SWAP. Isso agora em uso # swapoff /swap2gb # Quando feito desative a swap # rm /swap2gb
Montar um compartilhamento SMB
Suponhamos que queremos acessar compartilhamento SMB myshare no computador smbserver, o endereço como digitado em um PC Windows PC é \\smbserver\myshare\. Nós montamos no /mnt/smbshare. Warning> cifs wants an IP or DNS name, not a Windows name.
Linux/OSX
# smbclient -U user -I 192.168.16.229 -L //smbshare/ # Lista os compartilhamentos
# mount -t smbfs -o username=winuser //smbserver/myshare /mnt/smbshare
# mount -t cifs -o username=winuser,password=winpwd //192.168.16.229/myshare /mnt/share
Montar o compartilhamento Samba através de um túnel sshl
# ssh -C -f -N -p 20022 -L 445:127.0.0.1:445 me@server # connect on 20022, tunnel 445 # mount -t smbfs //colin@localhost/colin ~/mnt # mount_smbfs //colin:mypassword@127.0.0.1/private /Volumes/private # I use this on OSX + ssh
Adicionalmente com o pacote mount.cifs é possível armazenar as credenciais em um arquivo, por exemplo /home/user/.smb
:
username=winuser password=winpwd
E monte como a seguir:
# mount -t cifs -o credentials=/home/user/.smb //192.168.16.229/myshare /mnt/smbshare
FreeBSD
Utilize -I para dar o IP (ou DNS name); smbserver é o nome Windows.
# smbutil view -I 192.168.16.229 //winuser@smbserver # Liste os compartilhamentos
# mount_smbfs -I 192.168.16.229 //winuser@smbserver/myshare /mnt/smbshare
Montar uma imagem
# hdiutil mount image.iso # OS X
Linux loop-back
# mount -t iso9660 -o loop file.iso /mnt # Monte uma imagem de CD # mount -t ext3 -o loop file.img /mnt # Monte uma imagem com o sistema de arquivos ext3
FreeBSD
Com dispositivo de memória (faça # kldload md.ko se necessário):
# mdconfig -a -t vnode -f file.iso -u 0
# mount -t cd9660 /dev/md0 /mnt
# umount /mnt; mdconfig -d -u 0 # Limpa o dispositivo md
Ou como node virtual:
# vnconfig /dev/vn0c file.iso; mount -t cd9660 /dev/vn0c /mnt
# umount /mnt; vnconfig -u /dev/vn0c # Limpa o dispositivo vn
Solaris e FreeBSD
Com interface de arquivo loop-back ou lofi:
# lofiadm -a file.iso
# mount -F hsfs -o ro /dev/lofi/1 /mnt
# umount /mnt; lofiadm -d /dev/lofi/1 # Limpa o dispositivo lofi
Criar e queimar uma imagem ISO
Isso copiar o cd ou DVD setor por setor. Sem conv=notrunc
, a imagem será pequena se há menos conteúdo no cd. Veja abaixo os exemplos dd.
# dd if=/dev/hdc of=/tmp/mycd.iso bs=2048 conv=notrunc
Utilize mkisofs para criar uma imagem de CD/DVD image a partir de um diretório. Para superar as restrições de nomes de arquivos: -r habilita as extensões comuns Rock Ridge para sistemas UNIX, -J habilita extenções Joliet utilizada pelos sistemas Microsoft. -L permite nomes de arquivos ISO9660 iniciar com um período.
# mkisofs -J -L -r -V TITLE -o imagefile.iso /path/to/dir
# hdiutil makehybrid -iso -joliet -o dir.iso dir/ # OS X
No FreeBSD, mkisofs é encontrado no ports em sysutils/cdrtools.
Queimar uma imagem de CD/DVD ISO
FreeBSD
FreeBSD não habilita a DMA nos drivers ATAPI por padrão. A DMA é habilitada com o comando sysctl e os argumentos abaixo, ou com /boot/loader.conf com as seguintes entradas:
hw.ata.ata_dma="1" hw.ata.atapi_dma="1"
Utilize burncd
com um dispositivo ATAPI (burncd
é parte do base system) e cdrecord
(em sysutils/cdrtools) com um drive SCSI.
# burncd -f /dev/acd0 data imagefile.iso fixate #Para drive ATAPI # cdrecord -scanbus # Para encontrar o dispositivo gravador (como 1,0,0) # cdrecord dev=1,0,0 imagefile.iso
Linux
Também utiliza cdrecord
com Linux como descrito acima. Adicionalmente é possível utilizar a interface ATAPI nativa que é encontrada com:
# cdrecord dev=ATAPI -scanbus
e queime o CD/DVD como acima.
dvd+rw-tools
O pacote dvd+rw-tools (FreeBSD: ports/sysutils/dvd+rw-tools) pode fazer tudo isso e inclui growisofs
para queimar CDs ou DVDs. Os exemplos referem-se ao dispositivo de dvd como /dev/dvd
que podia ser um symlink para /dev/scd0
(scsi típico no Linux) ou /dev/cd0
(FreeBSD típico) ou /dev/rcd0c
(SCSI de caráter típico do NetBSD/OpenBSD) ou /dev/rdsk/c0t1d0s2
(exemplo de uma dispositivo de carater CD-ROM SCSI/ATAPI do Solaris). Há uma documentação boa com exemplos no FreeBSD handbook capítulo 18.7http://www.freebsd.org/handbook/creating-dvds.html.
# -dvd-compat closes the disk # growisofs -dvd-compat -Z /dev/dvd=imagefile.iso # Queima imagem ISO existente # growisofs -dvd-compat -Z /dev/dvd -J -R /p/to/data # Queima diretamente
Converter um arquivo Nero .nrg para .iso
O Nero simplesmente adicionas um cabeçalho de 300 Kb em uma imagem ISO normal. Isso pode ser aparado com o dd.
# dd bs=1k if=imagefile.nrg of=imagefile.iso skip=300
Converter uma imagem bin/cue para .iso
O título bchunk
programhttp://freshmeat.net/projects/bchunk/ pode fazer isso. Ele está no ports do FreeBSD em sysutils/bchunk.
# bchunk imagefile.bin imagefile.cue imagefile.iso
Criar uma imagem basada em arquivo
Por exemplo uma partição de 1 GB utilizando o arquivo /usr/vdisk.img. Aqui no utilizamos o vnode 0, mas podia ser também 1.
FreeBSD
# dd if=/dev/random of=/usr/vdisk.img bs=1K count=1M # mdconfig -a -t vnode -f /usr/vdisk.img -u 0 # Cria o dispositivo /dev/md1 # bsdlabel -w /dev/md0 # newfs /dev/md0c # mount /dev/md0c /mnt # umount /mnt; mdconfig -d -u 0; rm /usr/vdisk.img # Limpa o dispositivo md
A imagem baseada em arquivo pode ser automaticamente montada durante o boot com uma entrada em /etc/rc.conf e /etc/fstab. Teste sua configuração com o # /etc/rc.d/mdconfig start
(primeiro exclua o dispositivo md0 com o # mdconfig -d -u 0
).
Note no entanto que essa configuração automática só funcionará se a imagem de arquivo não estiver na partição root. A rasão é o script /etc/rc.d/mdconfig é executado durante o boot e a partição root ainda está em somente leitura (read-only). Imagens localizadas fora da partição root serão montadas mounted mais tarde com o script /etc/rc.d/mdconfig2.
/boot/loader.conf:
md_load="YES"
/etc/rc.conf:
# mdconfig_md0="-t vnode -f /usr/vdisk.img" # /usr não está na partição root
/etc/fstab: (O 0 0 no final é importante, Isso diz ao fsck que ignore esse dispositivo, como ainda não exite)
/dev/md0 /usr/vdisk ufs rw 0 0
Também é possível aumentar o tamanho da imagem depois, digamos por exemplo 300 MB maior.
# umount /mnt; mdconfig -d -u 0
# dd if=/dev/zero bs=1m count=300 >> /usr/vdisk.img
# mdconfig -a -t vnode -f /usr/vdisk.img -u 0
# growfs /dev/md0
# mount /dev/md0c /mnt # Partição do arquivo é agora 300 MB maior
Linux
# dd if=/dev/zero of=/usr/vdisk.img bs=1024k count=1024
# mkfs.ext3 /usr/vdisk.img
# mount -o loop /usr/vdisk.img /mnt
# umount /mnt; rm /usr/vdisk.img # Limpa
Linux com o losetup
/dev/zero
é muito mais rapido do que o urandom
, mas menos seguro para criptografia.
# dd if=/dev/urandom of=/usr/vdisk.img bs=1024k count=1024 # losetup /dev/loop0 /usr/vdisk.img # Cria e associa /dev/loop0 # mkfs.ext3 /dev/loop0 # mount /dev/loop0 /mnt # losetup -a # Verificar loops utilizados # umount /mnt # losetup -d /dev/loop0 # Destaca # rm /usr/vdisk.img
Criar um sistema de arquivo de memória
Um sistema de arquivo baseado em memória é muito rápido para aplicações de entrada e saída (IO). Como criar uma partição de 64 MB montada em /memdisk:
FreeBSD
# mount_mfs -o rw -s 64M md /memdisk # umount /memdisk; mdconfig -d -u 0 # Limpa o dispositivo md md /memdisk mfs rw,-s64M 0 0 # /etc/fstab entrada
Linux
# mount -t tmpfs -osize=64m tmpfs /memdisk
Desempenho de disco
Lê e escreve um arquivo de 1 GB na partição (/home)
# time dd if=/dev/ad4s3c of=/dev/null bs=1024k count=1000
# time dd if=/dev/zero bs=1024k count=1000 of=/home/1Gb.file
# hdparm -tT /dev/hda # Somente em Linux