Desvendando o Mundo do GNU/Linux Headline Animator

sexta-feira, 6 de janeiro de 2012

Dicas de administração do sistema Part 7

Por: Fagner Oliveira




Gerenciamento de usuários:

Embora o Linux tenha sido desenvolvido de uma forma independente, ele é um sistema Unix que herdou os recursos multiusuário dos primeiros sistemas Unix. Isso permite que o sistema possa ser usado por vários usuários ao mesmo tempo, sem que um atrapalhe as atividades do outro, nem de forma alguma possa alterar seus arquivos.
A restrições básicas de acesso são implementadas, através de um sistema de permissões simples, porém, eficientes. Consiste pois em um conjunto de três permissões de acesso (ler, gravar, executar) e três grupos (dono, grupo, outros), combinadas nos permitem fazer muitas coisas.

Existe dois comandos básicos que permite respectivamente a criação de usuários e criação ou alteração de senhas, são eles: "adduser"  "passwd".

Para criar um novo usuário, basta executar:

# adduser joao
(cria o usuário joao e especifica uma senha para ele)

# passwd joao
(altera a senha caso necessite)

Um usuário comum pode alterar sua senha normalmente usando o comando "passwd", porém, é preciso especificar a senha antiga, caso contrário nada será feito. Se isso acontecer será uma tarefa que o administrador do sistema terá que fazer, pois ele entrará com a conta de root e fará o procedimento, lembrando que, para o root não é necessário especificar a senha antiga.

Os usuários cadastrados no sistema estão dentro do arquivo "/etc/passwd", esse arquivo tem o seguinte conteúdo:
==========================================================================

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh
www-data:x:33:33:www-data:/var/www:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/sh
list:x:38:38:Mailing List Manager:/var/list:/bin/sh
irc:x:39:39:ircd:/var/run/ircd:/bin/sh
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
libuuid:x:100:101::/var/lib/libuuid:/bin/sh
syslog:x:101:103::/home/syslog:/bin/false
messagebus:x:102:105::/var/run/dbus:/bin/false
avahi-autoipd:x:103:108:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false

==========================================================================

Esse arquivo pode ser editado manualmente, porém deve-se tomar muito cuidado para não alterar o campo errado. O comando para editar esse arquivo é o "usermod"

Para deletar um usuário anteriormente criado é o utilizado o comando "deluser", como em:

# deluser joao

Por padrão ele só exclui a conta do sistema mantendo assim o diretório pessoal do usuário. Caso for necessário remover o usuário incluindo seu diretório pessoal, adicione o parâmetro "--remove-home", como em:

# deluser joao --remove-home

Também existe a possibilidade de bloquear um usuário específico sem fazer sua exclusão do sistema, para isso adicione o parâmetro "-l" no comando "passwd", como em:

# passwd -l joao

Dessa forma é incluído uma "!" antes da conta do usuário no arquivo "/etc/passwd". Para desbloquear usa-se a opção "-u", como em:

# passwd -u joao

quinta-feira, 5 de janeiro de 2012

Dicas de administração do sistema Part 6

Por: Fagner Oliveira






Aglutinando arquivos:

Tar: Esse comando é usado para empacotar, compactar e descompactar arquivos.
Em sua forma mais simples possuí essa estrutura:

comando: opcões: parâmetro: diretório

Opções do Tar:

-c ----> criar
-x ----> extrair
-v ----> modo detalhado
-f ----> indica o nome do arquivo
-j ----> permite usar o método de compressão bzip2
-z ----> permite usar o método de compressão gzip

Ex: tar  -cjvf   backup.tar.bz2   /home

Aqui estou dizendo para o tar criar o arquivo chamado backup incluindo todos os arquivos do diretório /home e utilizando compressão bzip2 mostrando toda a operação na tela.

Caso fosse necessário extrair os arquivos desse pacote, executaria o tar assim:

Ex: tar -xjvf  backup.tar.bz2


Acertando o relógio:


Ao tratar-se de servidores, o relógio do sistema é mais uma configuração importante que não pode ser deixada de lado. Imagine que você precisasse entregar uma auditória de segurança, e ao analisar os logs do seu servidor notaria que o horário estava totalmente errado. E agora, o que fazer?
Simplesmente nada, mas esse tipo de erro pode ser evitado. Mas como?

Bem, existe um protocolo chamado ntp (Network Time Protocol), ele é responsável por manter o relógio do sistema em sincronia com outro servidor ntp, geralmente o "pool.ntp.org" é utilizado para esse fim.

Para usá-lo, o primeiro passo é verificar se os pacotes "ntp e ntpdate" estão instalados no sistema. Em distribuições derivadas do Debian, você pode instalá-los usando o "apt-get".


# apt-get install ntp ntpdate

Após instalado o ntp passa a ajustar o relógio do sistema de forma totalmente transparente, mantendo o relógio em sincronia com os servidores especificados no arquivo "/etc/ntp.conf". Para checar a hora é utilizado o comando "date".



Ex: # date
Qui Jan  5 00:40:38 BRT 2012

Existe uma diferença em relação ao ntpdate, o ntp ajusta poucos segundos de cada vez, pois a função de ajustar o relógio em caso de grandes atrasos ficou para o "ntpdate", que atualiza na marra. Independente de quão grande seja o atraso.


Ex: ntpdate -u pool.ntp.org

A opção "-u" é usada para que ele utilize uma porta UDP alta, evitando que a porta 123 esteja aberta no firewall, e "pool.ntp.org" é um servidor público, que passa a requisição para um servidor mais próximo.

Caso o horário apareça atrasado ou adiantado algumas horas, é sinal que o fuso horário não tenha sido definido corretamente. Nesse caso utiliza-se o comando "tzselect", para ajustar as configurações.
Caso o servidor utilize o horário de Brasília (UTC-3), você usaria as opções opções  2) Americas > 9) Brasil > 8) S & SE Brasil ( GO, DF, MG, ES, RJ, SP, PR, SC, RS).

quarta-feira, 4 de janeiro de 2012

Dicas de administração do sistema Part 5

Por: Fagner Oliveira




Bash_completion:

Um dos recursos mais úteis do terminal é usar a tecla TAB para completar comandos, o famoso Bash_completion (auto-completar), ao pressionar uma vez a tecla TAB o interpretador tenta completar o comando, caso haja mais de uma possibilidade outro toque e ele lista as opções.
Parece estranho, mas esse recurso vem desativado em algumas distribuições, para ativá-lo é bem simples; basta adicionar a seguinte linha no "/etc/profile".

[  "$PS1"  -a   -f  /etc/bash_completion  ]  &&  .  /etc/bash_completion


Entendendo o path:

O sistema procura por comandos dentro de pastas específicas, e a esse conjunto de pastas dar-se o nome de "PATH" que por sua vez é armazenado em uma variável no sistema com o o nome cognato "PATH". Para ver a lista basta usar esse comando:

$ echo $PATH


/usr/local/bin:/usr/bin:/bin:/usr/games

A pasta /bin contém os utilitários do sistema, comandos como: (cat, cp, rm, mv) estão dentro dessa pasta. A grande maioria dos executáveis de programas vão para "/usr/bin", onde temos tanto aplicativos do terminal como do modo gráfico.

Ao executar o mesmo comando como root, percebe-se que a lista muda um pouco.

# echo $PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

A diferença aqui é que o PATH do root possui os diretórios "/usr/local/sbin" e "/usr/sbin". Pois essas duas pastas são reservadas aos comandos que só podem ser executados por ele.


Edição básica de arquivos com vi:

O vi (Visual editor) é o editor de textos padrão, o mesmo é voltado para operação em terminal, onde os atalhos do teclado são usados para tarefas de edição.
Há três modos de execução básicos no vi.


Modo de navegação:

É o modo inicial do vi. Nesse modo as teclas do teclado atuam na navegação e edição de blocos de texto.



Modo de inserção:

Para entrar no modo de inserção basta pressionar a tecla [i] ou [A], esse modo é usado para digitar textos no documento. Nesse modo ao pressionar a tecla [ESC] é feita a saída do modo de inserção voltando para o modo de navegação.



Modo de comando:

Para entrar nesse modo basta pressionar [:] no modo de navegação, esse modo é usado para fazer buscas, salvar, sair, executar comandos do shell e alterar configurações do próprio vi. Para voltar para o modo de navegação basta usar a instrução visual ou [ Enter].


Comandos do vi:

:! ---> Permite executar um comando do shell
:quit ou :q ----> Fecha
:quit! ou :q! ----> Fecha sem gravar
:wq ----> Salva e fecha
:exit ou : x ou :e ----> Fecha e grava se for necessário
:visual ----> Volta para o modo de comando


Teclas de navegação:


O, $ ----> inicio e fim de linha
1G, G ---->inicio e fim de documento
h, j, k, l ----> esquerda, abaixo, acima, direita
/, ? ----> busca para frente e para trás
r ----> substitui um único caractere
x ----> apaga um único caractere
y, yy ----> copia um item ou toda linha
p, P ----> cola o conteúdo depois ou antes do cursor
u ----> desfazer
ZZ ----> fecha e salva caso necessário
ZQ ----> fecha e não salva

terça-feira, 3 de janeiro de 2012

Dicas de administração do sistema Part 4

Por: Fagner Oliveira


ln: Permite criar links entre arquivos, semelhante aos atalhos do Windows. O sistema suporta dois tipos de links, são eles: os Hard links e os Soft links (links simbólicos).
O sistema trabalha com o link da mesma forma que o arquivo original, de fato que ao gravar informações no link, ou visualizar seu conteúdo, você estar simplesmente trabalhando diretamente com o arquivo, caso mova-se, delete ou renomei o link, as mudanças são feitas apenas no link.
Os Soft links são atalho estático: ao mover ou deletar o arquivo, é quebrada a ligação com o link. Já o Hard links são mais precisos, pois estão mais intimamente ligados ao arquivo e sofrem alterações junto com ele: se o arquivo mudar de lugar, o próprio link faz sua atualização automaticamente. Isso só é possível porque nos sistemas de arquivos usados pelo sistema, cada arquivo possuí um código que o identifica (o inode), que nunca muda.
Quando o arquivo é renomeado o sistema sabe que é o mesmo do atalho simplesmente procurando pelo inode ao invés do nome. Outra dica é que se você apaga o arquivo original, o arquivo continua acessível através do Hard link, é como se você tivesse duas cópias do mesmo arquivo, mas apenas o espaço em disco é usado uma única vez.
A grande limitação dos Hard links é que os links só podem ser criados se os arquivos de destino estiverem dentro da mesma partição. Este é o motivo dos links simbólicos serem mais usados.

Caso seja usado sem argumentos, o comando ln criará um Hard link, como em:

$ ln /var/www/dominiointerno/arquivo   /home/dominiointerno/arquivo

Os links simbólicos são criados passando como argumento para o comando ln a opção "-s", como em:

ln -s /var/www/dominiointerno/html    /home/dominiointerno/html


Histórico: O terminal mantém armazenado um histórico dos últimos 500 comandos executados, que é salvo dentro do arquivo ".bash_history" no diretório "/home".
Caso queira repetir um comando recente, basta pressionar setas para cima ou para baixo até encontrá-lo. Se preferir ver uma lista com todos os comandos digitados use o comando "history", como em:



#  history

 94  sudo ifconfig
   95  sudo /etc/init.d/network-manager restart
   96  sudo ifconfig
   97  echo 1 > /proc/sys/net/ipv4/ip_forward
   98  sudo echo 1 > /proc/sys/net/ipv4/ip_forward
   99  sudo wireshark
  100  xkill
  101  sudo which ls
  102  which ls
  103  find /etc/ -name smb.conf
  104  sudo find /etc/ -name smb.conf
  105  su -
  106  head /etc/samba/smb.conf | cat -n
  107  head -20 /etc/samba/smb.conf | cat -n
  108  tail -f /var/log/syslog
  109  head -20 /etc/samba/smb.conf | cat -n
  110  sudo -i
  111  history

Como podem observar os comandos são numerados de acordo com a ordem com que foram executados, uma dica interessante é que podemos reexecutar qualquer comando da lista, basta usar a exclamação seguido do número do comando que aparece na lista. Digamos que você quisesse executar novamente o comando
"sudo echo 1 > /proc/sys/net/ipv4/ip_forwar", que aparece com número 98 da lista, você usaria:

# !98


Ponto e vírgula: O sistema oferece disponibiliza um recurso que permite executar mais de um comando ao mesmo tempo, basta separá-los por ";", como em:

$ wget -c http://url/cdubuntu1.iso; wget -c http://url/cdubuntu2.iso; wget -c http://url/cdubuntu3.iso


Case sensitive: Todos os comandos e parâmetros dentro de arquivos de configuração são case sensitive, pois precisa respeitar a gráfia correta diferenciando maiśuculas de minúsculas. Por exemplo:

O comando "ls -s"  mostra o tamanho dos arquivos na listagem, enquanto que o comando "ls -S" ordena os arquivos por tamanho.


reboot: Esse comando reinicia o sistema

shutdown: Esse comando é usado para desligar ou reiniciar o sistema, mas dar a possibilidade de especificar um horário. Em caso de servidores ele é bastante útil permitindo agendar os reboots do sistema, para serem executados em horários de baixo pico.

Para isso deve-se especificar um tempo em minutos que o sistema esperará antes de fazer o desligamento, usando o parâmetro "+", como em "shutdown -r +60", também é possível especificar um horário no formato "hh:mm", como em "shutdown -r 06:00" (para reiniciar às seis da manhã). Caso queira desligar bastar substituir o "-r" por "-h".

Dicas de administração do sistema Part 3

Por: Fagner Oliveira



locate: Esse comando permite encontrar arquivos no sistema, diferentemente do comando "find" que veremos a seguir, o "locate" não faz sua pesquisa no hd, mas em sua base de dados que é atualizada com o comando "updatedb", caso você queira procurar por arquivos criado recentemente o locate não encontrará, ao menos que você tenha executado o updatedb para atualizar sua base de dados.

which: mostra o caminho dos executáveis no sistema
Ex: which ls
/bin/ls



find: Também usado para procurar arquivos, mas não usa uma base de dados, como o locate, sua pesquisa vasculha diretórios e subdiretórios até encontrar o arquivo

Ex: sudo find /etc/ -name smb.conf
/etc/samba/smb.conf


su: No sistema existe uma separação entre o "root" e os demais usuários do sistema, o "root" têm acesso completo ao sistema, podendo alterar configurações e usar a maior parte das ferramentas para tal procedimento.
Sua sintaxe é bem básica:

Ex: su -
Senha:



sudo: Algumas distribuições vem com a conta de "root" desativada por padrão, ai é que entra a utilidade desse comando, assim como outros utilitários no sistema, o "sudo" possuí seu arquivo de configuração, localizado em "/etc/sudoers", esse arquivo serve para permitir quem usará o comando. No ubuntu só o usuário administrativo criado na instalação poderá usar o "sudo".

Ex: sudo -i

cat: Usado para visualizar o conteúdo de arquivos, como em "cat /etc/samba/smb.conf", ele também pode ser combinado com outros comandos para fazer cópia de arquivos, como em " cat meuarquivo.txt > /dev/fd0", nesse caso o /dev/fd0 representa minha unidade de disquete no sistema.

head: permite visualizar as primeiras linhas de um arquivo, por padrão ele mostra as primeiras dez linhas, caso queira que ele mostre uma quantidade maior de linhas execute-o assim:

Ex: head -20 /etc/samba/smb.conf | cat -n
     1    #
     2    # Sample configuration file for the Samba suite for Debian GNU/Linux.
     3    #
     4    #
     5    # This is the main Samba configuration file. You should read the
     6    # smb.conf(5) manual page in order to understand the options listed
     7    # here. Samba has a huge number of configurable options most of which
     8    # are not shown in this example
     9    #
    10    # Some options that are often worth tuning have been included as
    11    # commented-out examples in this file.
    12    #  - When such options are commented with ";", the proposed setting
    13    #    differs from the default Samba behaviour
    14    #  - When commented with "#", the proposed setting is the default
    15    #    behaviour of Samba but the option is considered important
    16    #    enough to be mentioned here
    17    #
    18    # NOTE: Whenever you modify this file you should run the command
    19    # "testparm" to check that you have not made any basic syntactic
    20    # errors.

tail: Permite visualizar as últimas linhas de um arquivo, por padrão mostra as últimas dez linhas, esse comando é muito usado para visualizar os arquivos de log, para visualizar arquivos de log em tempo real usa-se a opção "-f " seguido do arquivo.

Ex: tail -f /var/log/syslog
Jan  2 23:57:03 200 kernel: [19637.235131] init: cups main process ended, respawning
Jan  2 23:57:10 200 kernel: [19644.025724] type=1400 audit(1325559430.056:21128): apparmor="STATUS" operation="profile_replace" name="/usr/lib/cups/backend/cups-pdf" pid=31755 comm="apparmor_parser"
Jan  2 23:57:10 200 kernel: [19644.026255] type=1400 audit(1325559430.056:21129): apparmor="STATUS" operation="profile_replace" name="/usr/sbin/cupsd" pid=31755 comm="apparmor_parser"
Jan  2 23:57:10 200 kernel: [19644.052801] type=1400 audit(1325559430.084:21130): apparmor="DENIED" operation="chown" parent=1 profile="/usr/sbin/cupsd" name="/run/cups/" pid=31756 comm="cupsd" requested_mask="w" denied_mask="w" fsuid=0 ouid=0
Jan  2 23:57:10 200 kernel: [19644.053062] type=1400 audit(1325559430.084:21131): apparmor="DENIED" operation="chown" parent=1 profile="/usr/sbin/cupsd" name="/run/cups/certs/" pid=31756 comm="cupsd" requested_mask="w" denied_mask="w" fsuid=0 ouid=0
Jan  2 23:57:10 200 kernel: [19644.058626] type=1400 audit(1325559430.088:21132): apparmor="DENIED" operation="mknod" parent=1 profile="/usr/sbin/cupsd" name="/run/cups/printcap" pid=31756 comm="cupsd" requested_mask="c" denied_mask="c" fsuid=0 ouid=0
Jan  2 23:57:10 200 kernel: [19644.064790] type=1400 audit(1325559430.096:21133): apparmor="DENIED" operation="mknod" parent=1 profile="/usr/sbin/cupsd" name="/run/cups/cups.sock" pid=31756 comm="cupsd" requested_mask="c" denied_mask="c" fsuid=0 ouid=0
Jan  2 23:57:10 200 kernel: [19644.065178] type=1400 audit(1325559430.096:21134): apparmor="DENIED" operation="mknod" parent=1 profile="/usr/sbin/cupsd" name="/run/cups/cupsd.pid" pid=31756 comm="cupsd" requested_mask="c" denied_mask="c" fsuid=0 ouid=0
Jan  2 23:57:10 200 kernel: [19644.066656] init: cups main process (31756) terminated with status 1
Jan  2 23:57:10 200 kernel: [19644.066775] init: cups main process ended, respawning
Jan  2 23:57:16 200 kernel: [19650.879763] type=1400 audit(1325559436.908:21135): apparmor="STATUS" operation="profile_replace" name="/usr/lib/cups/backend/cups-pdf" pid=31778 comm="apparmor_parser"
Jan  2 23:57:16 200 kernel: [19650.880382] type=1400 audit(1325559436.912:21136): apparmor="STATUS" operation="profile_replace" name="/usr/sbin/cupsd" pid=31778 comm="apparmor_parser"
Jan  2 23:57:16 200 kernel: [19650.908451] type=1400 audit(1325559436.940:21137): apparmor="DENIED" operation="chown" parent=1 profile="/usr/sbin/cupsd" name="/run/cups/" pid=31780 comm="cupsd" requested_mask="w" denied_mask="w" fsuid=0 ouid=0
Jan  2 23:57:16 200 kernel: [19650.908685] type=1400 audit(1325559436.940:21138): apparmor="DENIED" operation="chown" parent=1 profile="/usr/sbin/cupsd" name="/run/cups/certs/" pid=31780 comm="cupsd" requested_mask="w" denied_mask="w" fsuid=0 ouid=0
Jan  2 23:57:16 200 kernel: [19650.917573] type=1400 audit(1325559436.948:21139): apparmor="DENIED" operation="mknod" parent=1 profile="/usr/sbin/cupsd" name="/run/cups/printcap" pid=31780 comm="cupsd" requested_mask="c" denied_mask="c" fsuid=0 ouid=0
Jan  2 23:57:16 200 kernel: [19650.924979] type=1400 audit(1325559436.956:21140): apparmor="DENIED" operation="mknod" parent=1 profile="/usr/sbin/cupsd" name="/run/cups/cups.sock" pid=31780 comm="cupsd" requested_mask="c" denied_mask="c" fsuid=0 ouid=0
Jan  2 23:57:16 200 kernel: [19650.925414] type=1400 audit(1325559436.956:21141): apparmor="DENIED" operation="mknod" parent=1 profile="/usr/sbin/cupsd" name="/run/cups/cupsd.pid" pid=31780 comm="cupsd" requested_mask="c" denied_mask="c" fsuid=0 ouid=0
Jan  2 23:57:16 200 kernel: [19650.926916] init: cups main process (31780) terminated with status 1
Jan  2 23:57:16 200 kernel: [19650.927026] init: cups main process ended, respawning
Jan  2 23:57:23 200 kernel: [19657.333116] type=1400 audit(1325559443.364:21142): apparmor="STATUS" operation="profile_replace" name="/usr/lib/cups/backend/cups-pdf" pid=31798 comm="apparmor_parser"
Jan  2 23:57:23 200 kernel: [19657.333527] type=1400 audit(1325559443.364:21143): apparmor="STATUS" operation="profile_replace" name="/usr/sbin/cupsd" pid=31798 comm="apparmor_parser"
Jan  2 23:57:23 200 kernel: [19657.354606] type=1400 audit(1325559443.384:21144): apparmor="DENIED" operation="chown" parent=1 profile="/usr/sbin/cupsd" name="/run/cups/" pid=31799 comm="cupsd" requested_mask="w" denied_mask="w" fsuid=0 ouid=0
Jan  2 23:57:23 200 kernel: [19657.354782] type=1400 audit(1325559443.384:21145): apparmor="DENIED" operation="chown" parent=1 profile="/usr/sbin/cupsd" name="/run/cups/certs/" pid=31799 comm="cupsd" requested_mask="w" denied_mask="w" fsuid=0 ouid=0
Jan  2 23:57:23 200 kernel: [19657.360698] type=1400 audit(1325559443.392:21146): apparmor="DENIED" operation="mknod" parent=1 profile="/usr/sbin/cupsd" name="/run/cups/printcap" pid=31799 comm="cupsd" requested_mask="c" denied_mask="c" fsuid=0 ouid=0
Jan  2 23:57:23 200 kernel: [19657.366326] type=1400 audit(1325559443.396:21147): apparmor="DENIED" operation="mknod" parent=1 profile="/usr/sbin/cupsd" name="/run/cups/cups.sock" pid=31799 comm="cupsd" requested_mask="c" denied_mask="c" fsuid=0 ouid=0
Jan  2 23:57:23 200 kernel: [19657.366744] type=1400 audit(1325559443.396:21148): apparmor="DENIED" operation="mknod" parent=1 profile="/usr/sbin/cupsd" name="/run/cups/cupsd.pid" pid=31799 comm="cupsd" requested_mask="c" denied_mask="c" fsuid=0 ouid=0
Jan  2 23:57:23 200 kernel: [19657.368310] init: cups main process (31799) terminated with status 1
Jan  2 23:57:23 200 kernel: [19657.368462] init: cups main process ended, respawning
Jan  2 23:57:29 200 kernel: [19663.735830] type=1400 audit(1325559449.764:21149): apparmor="STATUS" operation="profile_replace" name="/usr/lib/cups/backend/cups-pdf" pid=31817 comm="apparmor_parser"
Jan  2 23:57:29 200 kernel: [19663.736391] type=1400 audit(1325559449.768:21150): apparmor="STATUS" operation="profile_replace" name="/usr/sbin/cupsd" pid=31817 comm="apparmor_parser"
Jan  2 23:57:29 200 kernel: [19663.757962] type=1400 audit(1325559449.788:21151): apparmor="DENIED" operation="chown" parent=1 profile="/usr/sbin/cupsd" name="/run/cups/" pid=31818 comm="cupsd" requested_mask="w" denied_mask="w" fsuid=0 ouid=0
Jan  2 23:57:29 200 kernel: [19663.758115] type=1400 audit(1325559449.788:21152): apparmor="DENIED" operation="chown" parent=1 profile="/usr/sbin/cupsd" name="/run/cups/certs/" pid=31818 comm="cupsd" requested_mask="w" denied_mask="w" fsuid=0 ouid=0
Jan  2 23:57:29 200 kernel: [19663.763306] type=1400 audit(1325559449.792:21153): apparmor="DENIED" operation="mknod" parent=1 profile="/usr/sbin/cupsd" name="/run/cups/printcap" pid=31818 comm="cupsd" requested_mask="c" denied_mask="c" fsuid=0 ouid=0
Jan  2 23:57:29 200 kernel: [19663.769952] type=1400 audit(1325559449.800:21154): apparmor="DENIED" operation="mknod" parent=1 profile="/usr/sbin/cupsd" name="/run/cups/cups.sock" pid=31818 comm="cupsd" requested_mask="c" denied_mask="c" fsuid=0 ouid=0
Jan  2 23:57:29 200 kernel: [19663.770346] type=1400 audit(1325559449.800:21155): apparmor="DENIED" operation="mknod" parent=1 profile="/usr/sbin/cupsd" name="/run/cups/cupsd.pid" pid=31818 comm="cupsd" requested_mask="c" denied_mask="c" fsuid=0 ouid=0
Jan  2 23:57:29 200 kernel: [19663.771752] init: cups main process (31818) terminated with status 1
Jan  2 23:57:29 200 kernel: [19663.771841] init: cups main process ended, respawning
^C


| (pipe): o pipe junto com as setas de redirecionamento ( > e >>) é muito usado em scipts. A ideia desse comando é redirecionar a saída de um comando para entrada de outro. vejam!!!

Ex:
head -20 /etc/samba/smb.conf | cat -n
     1    #
     2    # Sample configuration file for the Samba suite for Debian GNU/Linux.
     3    #
     4    #
     5    # This is the main Samba configuration file. You should read the
     6    # smb.conf(5) manual page in order to understand the options listed
     7    # here. Samba has a huge number of configurable options most of which
     8    # are not shown in this example
     9    #
    10    # Some options that are often worth tuning have been included as
    11    # commented-out examples in this file.
    12    #  - When such options are commented with ";", the proposed setting
    13    #    differs from the default Samba behaviour
    14    #  - When commented with "#", the proposed setting is the default
    15    #    behaviour of Samba but the option is considered important
    16    #    enough to be mentioned here
    17    #
    18    # NOTE: Whenever you modify this file you should run the command
    19    # "testparm" to check that you have not made any basic syntactic
    20    # errors.

Nesse caso o comando "head" passou o conteúdo do arquivo samba.conf para o comando  "cat -n " que me mostrou uma listagem numerada, pois o comando "head -20 /etc/samba/smb.conf" foi usado para mostrar as primeiras vinte linhas do arquivo, e o "cat -n ", me confirmou na listagem.