ACL – Permissões avançadas no Linux

Introdução

O sistema padrão de permissão de acesso para arquivos e diretórios no Linux pode ser extendido com o uso da ACL – Access Control Lista.

O sistema utilizado aqui é o Debian 8.6, mas aplica-se basicamente em qualquer distribuição Linux.

Três tipos de permissão padrão são definidos em sistemas Linux: (r) leitura, (w) gravação e (x) execução.  Essas permissões são aplicáveis no arquivos e diretórios para o dono, grupo e outros.

As ACLs reduzem um pouco a performance do sistema. Na partição do sistema (/)  as permissões padrões são suficientes. Ative a ACL em partições específicas como a “home” o crie uma para a sua necessidade.

Através das ACLs (Listas de Controle de Acesso) podemos estender essa capacidade adicionando mais donos, grupos e outros mesmo que não correspondam aos originais.

Alguns dos sistemas de arquivos que possuem suporte para ACLs são: Ext2, Ext3, Ext4, ReiserFS, JFS e XFS

A ACL é um recurso do kernel Linux, para verificar se o sistema de arquivos possui essa característica use o comando abaixo

tune2fs -l /dev/sda1 | grep "Default mount options:"

Caso não seja exibida a opção “acl” edite /etc/fstab e acrescente acl em options. Talvez seja necessário instalar o pacote e reiniciar o sistema

apt-get install acl

Obs: Para esse nível de operação do sistema evitei explicar conceitos básicos como criar usuário e grupo, troca de usuário, tipos de permissão, entre outros.

Criando um cenário

Imaginando um cenário relativamente simples, mas que exemplificará o uso de ACLs, temos um servidor de arquivos com um diretório pub (público) onde existem subdiretórios para os departamentos financeiro e comercial com seus respectivos arquivos caixavendas.

  • Diretório pub
    • subdiretório financeiro
      • arquivo caixa
    • subdiretório comercial
      • arquivo vendas

O diretório pub terá permissão de leitura e execução para todos (555/rwx). Nos subdiretórios o controle de acesso é restrito aos seus respectivos grupos.

  • Grupo diretores (acesso ao subdiretório financeiro)
    • Usuário alberto 
    • Usuário augusto
  • Grupo gerentes (acesso ao subdiretório comercial)
    • usuário joao
    • usuário jose

Vamos utilizar a ACL para criar uma exceção para o usuário joao do grupo gerentes do departamento comercial ter permissão de leitura e gravação no arquivo relatório.txt no subdiretório financeiro, mas não poderá ler os outros arquivos neste mesmo diretório

Comando básicos

Uma vez definida a política de segurança (workflow – fluxo de trabalho) vamos criar os usuários, os grupos, a estrutura de diretórios, e definir as permissões de acesso.

Obs.: Os comandos serão executados sendo o diretório corrente /mnt.

Adicionado usuários albertoaugustojoaojose

adduser alberto
adduser augusto
adduser joao
adduser jose

Adicionado os grupos diretores e gerentes

addgroup diretores
addgroup gerentes

Adicionando usuários aos respectivos grupos

usermod -a -G diretores alberto
usermod -a -G diretores augusto
usermod -a -G gerentes joao
usermod -a -G gerentes jose

Criando o diretório pub e subdiretórios financeiro e comercial

mkdir -p pub/{comercial,financeiro}

Definindo permissões para diretórios

chmod 555 pub
chmod 770 pub/{comercial,financeiro}

Utilizando ACL

Existem apenas dois tipos de ACLs:

  • Regras de Acesso – especificam as informações de acesso para um arquivo ou diretório único
  • Regras Padrão – aplicadas apenas a diretórios e especificam informações de acesso padronizadas para todos os arquivos dentro do diretório.

Arquivos que não possuem regras herdam a configuração do diretório pai com base nas permissões padrão.

Conforme brevemente explicado anteriormente é possível definir valores padrões para usuários, grupos e outros, em pastas e arquivos, diferente do dono, grupo e outros padrão do sistema de arquivos.

getfacl – utilizado para visualizar as permissões
setfacl – utilizado para alterar as permissões

Obtendo informações do arquivo planilha.txt com getfacl

getfacl pub/comercial/planilha.txt
# file: pub/comercial/planilha.txt
# owner: jose
# group: jose
user::rw-
group::r--
other::r--

Como podemos observar temos as permissões padrões.

Com o comando setfacl vamos alterar tais permissões

setfacl -m user:joao:rw pub/comercial/planilha.txt

Utilize o parâmetro -m seguido de user,  group, other para adicionar novas permissões para usuários distintos, grupos e outros. Pode-se abreviar user para ugo.

É possível atribuir permissões para usuários e grupos simultaneamente.

setffacl -m u:joao:rw,g:diretores:rw pub/financeiro/relatorio.txt

Observe que será necessário da permissão de leitura e execução no subdiretório financeiro para que joao possa editar o arquivos relatório.txt.

setfacl -m u:joao:rx pub/financeiro

Desta forma, mesmo joao não sendo dono original do arquivo relatório.txt e nem fazendo parte do grupo diretores, estou me referindo das permissões padrões do sistema, terá acesso de leitura e gravação no arquivo, pois, ele também tem permissão de leitura e execução do diretório financeiro através de regras ACLs.

O usuário joao ainda poderá ler outros arquivos nesse subdiretório, mas alterar somente o arquivo relatorio.txt

Obtendo informações com getfacl do sub diretório financeiro e arquivo relatorio.txt

getfacl pub/financeiro
# file: pub/financeiro/
# owner: root
# group: diretores
user::rwx
user:joao:r-x
group::rwx
mask::rwx
other::---

getfacl pub/financeiro/relatorio.txt
# file: pub/financeiro/relatorio.txt
# owner: alberto
# group: alberto
user::rw-
user:joao:rw-
group::r--
group:diretores:rw-
mask::rw-
other::r--

Criando arquivos com o usuário alberto e jose

su alberto
touch pub/financeiro/relatorio.txt
su jose
touch pub/comercial/planilha.txt

Da forma como está configurado até agora, usando a permissões de acesso padrão, o arquivo criado pelo usuário jose no subdiretório comercial terá permissão de somente leitura para o usuário joao que faz parte do mesmo grupo gerentes definido neste subdiretório, a depender da umask definida.

Ainda, no subdiretório financeiro o usuário joao não poderá acessar arquivos, independente da umask definida, pois ele não é o dono do subdiretório, não faz parte do grupo diretores e outros não tem permissão de acesso.

Obs: Obrigado Mike pelo compartilhamento, apesar deste texto (e o site também) ainda estar em construção, finalizarei o mais breve possível.

Frases

Se vcs tivessem acreditado nas minhas brincadeiras de dizer verdades vcs teriam ouvido verdades que eu teimo em dizem brincando. Muitas vezes eu falho como um palhaço, mas nunca desacreditei na seriedade das pessoas que ouvem.
– Charles Chaplin


“Não me faça acreditar que você não e importante para mim
Quando já não acredito que sou importante pra você”

– Autor desconhecido

WordPress – Dicas de configurações a partir da instalação

Neste artigo não será ensinado como configurar o Servidor Web e o SGBD.

Considerando-se que já acessou a URL onde estará seu novo site será necessário informar o nome do banco de dados que foi criado para sua instalação, a conta e senha do usuário do banco de dados, endereço da máquina e o prefixo a ser utilizado pelas tabelas. Considere pertinente trocar o prefixo das tabelas de wp_ por outro, desta forma reforçará a segurança quanto a possíveis tentativas de violação do sistema.

Após isso seu WordPress está instalado.

Agora informe um nome para seu site, uma conta e senha para o usuário principal (super administrador) e o endereço de email.

Confirme ou não se deseja que os buscadores indexem seu site.

Feito o login no site vamos a outras dicas.

Menu Configurações

Submenu Geral

  • Acertar fuso horário

Submenu Escrita

  • Serviços de atualização
http://rpc.pingomatic.com/
http://blogsearch.google.com/ping/RPC2
http://api.feedster.com/ping
http://api.moreover.com/ping
http://blog.goo.ne.jp/XMLRPC
http://blogdb.jp/xmlrpc/
http://coreblog.org/ping/
http://ping.blo.gs/
http://ping.bloggers.jp/rpc/
http://ping.cocolog-nifty.com/xmlrpc
http://ping.syndic8.com/xmlrpc.php
http://ping.weblogalot.com/rpc.php
http://pinger.blogflux.com/rpc
http://rpc.blogrolling.com/pinger/
http://rpc.icerocket.com:10080/
http://rpc.technorati.com/rpc/ping
http://rpc.weblogs.com/RPC2
http://topicexchange.com/RPC2
http://www.blogdigger.com/RPC2
http://xping.pubsub.com/ping
http://api.my.yahoo.com/RSS/ping
http://1470.net/api/ping
http://www.a2b.cc/setloc/bp.a2b
http://www.bitacoles.net/ping.php
http://bitacoras.net/ping
http://blogmatcher.com/u.php
http://www.blogoole.com/ping/
http://www.blogoon.net/ping/
http://www.blogshares.com/rpc.php
http://www.blogsnow.com/ping
http://bulkfeeds.net/rpc
http://www.lasermemory.com/lsrpc/
http://ping.amagle.com/
http://ping.bitacoras.com
http://ping.blogmura.jp/rpc/
http://ping.feedburner.com
http://ping.myblog.jp
http://ping.rootblog.com/rpc.php
http://ping.weblogs.se/
http://pingoat.com/goat/RPC2
http://www.popdex.com/addsite.php
http://rcs.datashed.net/RPC2/
http://www.snipsnap.org/RPC2
http://www.weblogues.com/RPC/
http://xping.pubsub.com/ping/
http://api.blogblogs.com.br/api/pinguins

Submenu Links Permanentes

  • Estrutura personalizada
/%category%/

Menu Plugins

Sugestão de plugins a serem instalados

  • Advanced noCaptcha reCaptcha
  • Crayon Syntax Highlighter

 

Debian – Pós instalação inicial

Editar o sources.list

vi /etc/apt/sources.list

Comentar (#) a linha

#deb cdrom:[...

Instalar os pacotes

apt-get install vim vim-scripts

Configurar placa de rede

vi /etc/network/interfaces
allow-hotplug eth0
iface eth0 inet static
address 192.168.0.10
netmask 255.255.255.0
gateway 192.168.0.1

Comfigura o editor Vim

vi /etc/vim/vimrc

Retirar comentários () das linhas:

"syntax on
"set background=dark
"set showcmd
"set showmatch
"set ignorecase
"set smartcase
"set incsearch
"set autowrite
# Acrescentar para destacar resultado da pesquisa
set hlsearch

Editar o arquivo profile

vi /etc/profile

Acrescentar no final do arquivo as linhas:

alias   l='ls -lFh  --color=auto'
alias  ll='ls -lFha --color=auto'
alias  ls='ls    --color=auto'
alias cds='cd /etc/init.d && ls '

Reiniciar o computador

Editar o arquivo sources.list

vi /etc/apt/sources.list

Acrescentar contrib e non-free em todas as linhas descomentadas, exemplo:
deb http://ftp.br.debian.org/debian/ wheezy main contrib non-free

Acrescentar a linha

deb http://www.deb-multimedia.org stable main non-free

Após salvar o arquivo execute os comandos a seguir

apt-get update
apt-get install deb-multimedia-keyring
apt-get dist-upgrade

Instalar pacotes

apt-get install ntp mc arj ssh aspell-pt-br spamassassin audacity flashplugin-nonfree unrar browser-plugin-vlc libcurl3 mesa-utils ttf-mscorefonts-installer xsane w64codecs ttf-xfree86-nonfree tcl-tls rsync grsync hardinfo curl screen libdvdcss2gimp-data-extras kopete kdeartwork-emoticons kde-wallpapers kscreensaver xscreensaver-gl-extra scribus-ng scribus-template icc-profiles-free akonadi-kde-resource-googledata kde-config-touchpad chromium chromium-l10n gtk3-engines-oxygen gtk2-engines-oxygen kde-config-gtk-style konq-plugins

Debian 8 não tem esses pacotes => bibletime libdvdcss

Instalar pacote JAVA

echo "deb http://ppa.launchpad.net/webupd8team/java/ubuntu trusty main" | tee /etc/apt/sources.list.d/webupd8team-java.list
echo "deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu trusty main" | tee -a /etc/apt/sources.list.d/webupd8team-java.list
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys EEA14886
apt-get update
apt-get install oracle-java8-installer
apt-get install oracle-java8-set-default
Java www.java.com/pt_BR/download
# tar -zxvf jre-8u60-linux-x64.tar.gz -C /opt/

Obs.: neste exemplo, o arquivo baixado é “jre-8u60-linux-x64.tar.gz”.

# update-alternatives --install /usr/bin/java java /opt/jre1.8.0_60/bin/java 1
# update-alternatives --install /usr/lib/mozilla/plugins/libjavaplugin.so mozilla-javaplugin.so /opt/jre1.8.0_60/lib/amd64/libnpjp2.so 1
# update-alternatives --set java /opt/jre1.8.0_60/bin/java
# update-alternatives --set mozilla-javaplugin.so /opt/jre1.8.0_60/lib/amd64/libnpjp2.so
# update-alternatives --config java

Instalar o Google Talk

sh -c 'echo "deb http://dl.google.com/linux/talkplugin/deb/ stable main" >> /etc/apt/sources.list.d/google-talkplugin.list'
wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
apt-get update
apt-get install google-talkplugin

Configurar

Kmail Spamaassin
VLC – associar arquivos de audio e video
Bibletime – instalar bíblia em português

LibreOffice acesso mysql

apt-get install libreoffice-mysql-connector

LibreOffice acesso em arquivos por NFS

vi /usr/bin/soffice
#SAL_ENABLE_FILE_LOCKING=1
#export SAL_ENABLE_FILE_LOCKING

 

OSX – VLC rodando em múltiplas instâncias

  1. Abrir o “Editor de Scripts” (Aplicativos -> Utilitários -> Editor de Scripts)
  2. Criar um novo documento e inserir o seguinte comando
    do shell script “open -n /Applications/VLC.app”
  3. Clicar em “Compilar o Script” e verificar se não há erro.
  4. Salvar o script como “VLC-Multi” com o formato de arquivo “Aplicativo” no diretório (pasta) Documentos por exemplo.
  5. Abrir o Finder e criar um diretório chamado VLC em “Macintosh HD -> Biblioteca -> Scripts”
  6. Mover o arquivo VLC-Multi para esse novo diretório
  7. Arrastar o novo script para o seu dock.
  8. Clicar no ícone para lançar novas instâncias.

OSX – Acessando servidor Linux via NFS

Criar o diretório onde será montado o filesystem remoto

mkdir /mnt

Editar o arquivo /etc/auto_master e adicionar a seguinte linha

/mnt/Resources    auto_resources

Criar o arquivo /etc/auto_resources e adicionar a seguinte linha

/mnt   -fstype=nfs,soft,resvport,nfc   ip_remoto:/diretório

Substitua ip_remoto e diretório pelo valores correspondentes no seu servidor.

Então execute o comando

sudo automount -vc

OSX – ls colorido e alias para vários formatos de exibição

Crie ou edite o arquivo ~/.bashrc e acrescente as seguintes linhas:

export LSCOLORS="DxGxcxdxCxegedabagacad"
alias ls="ls -G"                # -G == --color
alias ll="ls -Gla"              # -G == --color
alias  l="ls -Gl"               # -G == --color

Após salvar e sair do arquivo .bashrc execute o comando

source ~/bashrc

Pronto, já está funcionando, agora poderá fazer listagens com os comandos (alias) ls, ll e l e em cores por tipo de conteúdo.

TeamViewer 64 bits – Instalação no Debian

Baixar o arquivo teamviewer_linux_x64.deb em:

http://www.teamviewer.com/pt/download/linux.aspx

o link direto é

http://download.teamviewer.com/download/teamviewer_amd64.deb

Então execute os seguintes comandos

dpkg --add-architecture i386

dpkg -i teamviewer_linux_x64.deb

apt-get update

apt-get install -f

Pronto.