Administradores de Sistemas do Linux para Windows: Entenda como executar aplicativos do Linux

Execute aplicativos do Linux a partir da linha de comandos e da área de trabalho

A utilização de aplicativos é a principal finalidade de um servidor® Linux. Independentemente de seu aplicativo recém-instalado ser executado em uma área de trabalho ou na linha de comandos, este artigo permite utilizar sua experiência com o Microsoft® Windows® para entender rapidamente como executar aplicativos no Linux.

Tracy Bost, Consultant and Trainer, Freelance

Author photo - Tracy BostTracy Bost é desenvolvedor de software e engenheiro de sistemas experiente. Ele também é palestrante e instrutor do sistema operacional Linux. Tracy é certificado como Red Hat Certified Engineer (RHCE) e Microsoft Certified Systems Engineer (MCSE), além de ser membro ativo da Linux Foundation. Ele trabalhou em vários segmentos de mercado, incluindo hipotecas, imóveis e o setor sem fins lucrativos.



11/Mai/2012

Pré-requisitos

Para aproveitar este artigo ao máximo, é necessária experiência de trabalho com aplicativos de área de trabalho em um ambiente Windows. Presumo que os leitores tenham um entendimento básico de como utilizar a área de trabalho do Linux. É benéfico ter um computador Linux em execução para explorar os conceitos e exemplos neste artigo.


Visão geral

Outros Artigos nesta Série

Veja mais artigos na série Administradores de sistemas Linux para Windows .

Ocasionalmente, a primeira execução de um aplicativo no Linux requer um pouco de trabalho extra. Alguns aplicativos, como serviços do servidor, podem não ser instalados como serviços, portanto, é necessário iniciar esses aplicativos a partir da linha de comandos. Para as contas do usuário que iniciam os aplicativos, configure o sinalizador de permissão de execução (x) nos arquivos do aplicativo.


Executando aplicativos de espaço do usuário

O Linux executa processos no espaço do kernel ou no espaço do usuário. O espaço do usuário é a área do sistema operacional na qual os aplicativos geralmente são executados. Resumindo, cada conta do usuário possui seu próprio espaço do usuário e os aplicativos são executados nesse domínio.

Por padrão, apenas o usuário raiz tem acesso ao espaço do kernel. O usuário raiz é o superusuário no Linux, comparável à conta do administrador no Windows. A execução de um aplicativo na conta do usuário raiz pode representar um risco de segurança e não é aconselhável.

Muitos serviços do servidor precisam de permissão raiz para iniciar o serviço. No entanto, depois que o serviço for iniciado, a raiz geralmente o transfere para uma conta do serviço. Contas do serviço no Linux são contas do usuário tecnicamente padrão. A principal diferença é que as contas do serviço são usadas apenas para executar um serviço e não são destinadas para que ninguém efetue login com elas.


Configurando as permissões

É possível configurar as permissões de execução em um arquivo com o comando chmod . A configuração umask no Linux geralmente impede que um arquivo transferido por download seja executável, também por um bom motivo, pois isso pode ajudar a manter a segurança do seu computador Linux.

A maioria das distribuições do Linux possui uma configuração umask de 022 que, por padrão, significa que um novo arquivo tem configurações de permissão de 644. A representação numérica de permissões tem o formato de leitura (4), gravação (2) e execução (1). Portanto, o download de um aplicativo com a permissão padrão de 644 significa que o proprietário do arquivo tem permissão de leitura e gravação, enquanto o proprietário do grupo e outros possuem permissão somente leitura.

Por exemplo, para conceder a todos permissão de execução em um arquivo, use o comando chmod a+x . O a representa all, o sinal de mais (+) representa incluir e x significa executar. Da mesma forma, se o aplicativo for um serviço do servidor, é necessário assegurar que apenas as contas autorizadas tenham acesso à execução do serviço.

Se um aplicativo conseguir executar com permissões da conta do usuário padrão, mas somente aqueles de um grupo específico precisarem de acesso para utilizá-lo, é possível configurar a permissão do proprietário do grupo como executável e incluir os usuários em um grupo.

Sendo ainda mais específico, também é possível configurar as permissões da lista de controle de acesso (ACL) em um arquivo executável a fim de conceder a um usuário ou grupo específico a permissão para executar o aplicativo. Use o utilitário setfacl para configurar as permissões da ACL.

Para aplicativos, como serviços do servidor, que precisam iniciar o processo como usuário raiz, há algumas opções. Tablela 1 resume diversas opções que permitem que os usuários executem serviços do servidor que requerem privilégios de administrador.

Tablela 1. Opções para executar aplicativos que requerem privilégios de administrador
OpçãoDescrição
Como usuário raizNão recomendado para serviços do servidor. Aceitável para aplicativos nos quais os usuários já sabem a senha raiz e o comprometimento do aplicativo não é uma questão primária.
SetUIDNão recomendado devido a problemas de segurança. SetUID permite que um usuário padrão execute um arquivo como outro usuário, como raiz.
sudoGeralmente usado e considerado como uma boa prática. sudo concede a um usuário ou membro de um grupo permissão para executar um arquivo que poderia, de outra forma, exigir privilégios de administrador. O usuário não precisa saber a senha raiz.
Conta do usuário padrão com permissões de arquivoConfigure a permissão de execução em um arquivo para o proprietário do usuário, proprietário do grupo ou outro (todos). Essa é uma maneira comum de conceder aos usuários que não requerem privilégios de administrador permissão para executar um aplicativo.
Conta do usuário padrão com permissões de ACLSolução usada com menos frequência, mas viável, quando não é desejável que um usuário sudo seja concedido acesso ou alteração às permissões de um arquivo. Usando o comando setfacl em um arquivo, é possível conceder a um usuário ou grupo de usuários específico o direito de executar o arquivo.

Executando a partir da linha de comandos

A execução de um aplicativo a partir da linha de comandos é uma tarefa essencial ao gerenciar servidores Linux. Muitos aplicativos possuem shell scripts—semelhantes aos arquivos em lote do Windows (.bat)— que iniciam os aplicativos e executam outras tarefas, como a configuração de variáveis e a designação de processos a outros usuários. Por exemplo, um aplicativo pode precisar de um Java™ Virtual Machine (JVM) para ser executado. Nesse caso, shell scripts podem configurar as variáveis de ambiente apropriadas e, em seguida, executar o comando Java para executar o JAR (Java Archive) ou o arquivo de classe. Isso continua sendo verdade para aplicativos que usam Perl, Python e até mesmo C#. (Sim, aplicativos C# compilados podem ser executados no Linux!)

Comandos da conta de usuário padrão e de privilégio de administrador

Para as listagens deste artigo, observe que cada comando começa com um sinal de dólar ($) ou com um símbolo hash (#). No shell do Linux, esses símbolos têm significado. O sinal de dólar no prompt de shell denota que o usuário tem privilégios de conta padrão, enquanto o símbolo hash denota privilégios raiz (de administrador). Para executar comandos em listagens que possuem o símbolo hash, é necessário acesso sudo ou acesso direto à conta raiz para executar o comando.

Uma maneira comum de executar aplicativos a partir da linha de comandos ou do prompt de shell é com o comando ./ . Quando o ponto (.) e a barra (/) são utilizados no Linux, você está dizendo ao ambiente que deseja executar o arquivo como um executável. Por exemplo, para executar um executável nomeado myapp, use o comando ./myapp . Da mesma forma, é possível preceder o nome do arquivo com o ambiente de linguagem, como:

  • sh
  • php
  • python
  • perl
  • java

Mais frequente ainda, os aplicativos empacotados possuem shell scripts que configuram as variáveis de ambiente e fornecem o caminho do executável do tempo de execução do idioma com o símbolo #! , como #!/usr/bin/python . Também é necessário familiarizar-se com essa abordagem.

Lista 1 usa o script padrão catalina.sh para iniciar o servidor de aplicativos Apache Tomcat usando a abordagem ./ . Em seguida, ela inicia o servidor usando a abordagem sh . Como a porta padrão é 8080, não são necessárias modificações especiais para iniciar o serviço como um usuário padrão.

Lista 1. Executando um Aplicativo a partir da Linha de Comandos
$ ./catalina.sh start 
Using CATALINA_BASE:   /opt/apache-tomcat-7.0.26
Using CATALINA_HOME:   /opt/apache-tomcat-7.0.26
Using CATALINA_TMPDIR: /opt/apache-tomcat-7.0.26/temp
Using JRE_HOME:        /usr
Using CLASSPATH:   /opt/apache-tomcat-7.0.26/bin/bootstrap.jar:
	/opt/apache-tomcat-7.0.26/bin/tomcat-juli.jar
$ ./catalina.sh stop

.....................................................................
$ sh catalina.sh start 

Using CATALINA_BASE:   /opt/apache-tomcat-7.0.26
Using CATALINA_HOME:   /opt/apache-tomcat-7.0.26
Using CATALINA_TMPDIR: /opt/apache-tomcat-7.0.26/temp
Using JRE_HOME:        /usr
Using CLASSPATH:   /opt/apache-tomcat-7.0.26/bin/bootstrap.jar:
	/opt/apache-tomcat-7.0.26/bin/tomcat-juli.jar

Considere iniciar um servidor Protocolo de Transporte de Hipertexto (HTTP) da web típico. No Linux, qualquer porta abaixo da 1024 é considerada uma porta privilegiada e somente a raiz pode abrir portas privilegiadas. Como os servidores da web são executados na porta 80 por padrão, a raiz precisa iniciar o processo. No entanto, conforme observado, não é considerado seguro executar um serviço como o usuário raiz. O procedimento correto é iniciar o serviço como raiz e, em seguida, transferi-lo para uma conta do usuário ou de serviço padrão.

Felizmente, muitos serviços do servidor possuem os scripts para fazer exatamente isso. Se você desenvolver o servidor da web Apache desde a origem, pode perceber que ele começa como raiz e, em seguida, transfere os encadeamentos httpd para o usuário apache .

Lista 2 inicia uma compilação padrão do servidor da web Apache 2. O processo de instalação faz algumas coisas, incluindo tornar o comando apachectl executável. Como esse processo requer o uso da porta 80, ele começa com privilégios de usuário raiz. No entanto, o comando ps revela que os processos httpd estão sendo executados na conta do usuário apache .

Lista 2. Iniciando o servidor da web Apache
# cd /usr/local/apache2/bin
# apachectl start
#ps aux | grep httpd
apache   23094  0.0  0.3  11784  1912 ?        S    10:41   0:00 /usr/sbin/httpd -k start
apache   23095  0.0  0.3  11784  1912 ?        S    10:41   0:00 /usr/sbin/httpd -k start
apache   23096  0.0  0.3  11784  1912 ?        S    10:41   0:00 /usr/sbin/httpd -k start
apache   23097  0.0  0.3  11784  1912 ?        S    10:41   0:00 /usr/sbin/httpd -k start
apache   23098  0.0  0.3  11784  1912 ?        S    10:41   0:00 /usr/sbin/httpd -k start

Executando aplicativos em segundo plano

Um software instalado pode não ser tão fácil de usar quanto o servidor da web Apache. A menos que esteja resolvendo problemas ou queira ver exatamente o que está acontecendo com um aplicativo, provavelmente você desejará executá-lo em segundo plano depois que o processo for iniciado. Caso contrário, o aplicativo será finalizado quando o shell for encerrado. Ao executar serviços do servidor, não é um comportamento desejado que o serviço seja interrompido sempre que o shell do terminal seja fechado ou o logout seja efetuado!

Se um aplicativo for executado em segundo plano, ele continuará funcionando mesmo que a janela shell seja fechada. É possível iniciar um aplicativo em segundo plano anexando um e comercial (símbolo &) ao final do comando de execução. Por exemplo, é possível abrir um arquivo com o editor de vi e executá-lo em segundo plano com o comando vi /etc/sysconfig/network & , porque & abre o arquivo /etc/sysconfig/network e o mantém em segundo plano. É possível usar o utilitário nohup para permitir que o processo continue, mesmo após o logout. Por exemplo, nohup vi /etc/sysconfig/network &.

Lista 3 abre um arquivo para edição no editor de Vim e o coloca em segundo plano.

Lista 3. Executando um aplicativo em segundo plano
# vi /etc/sysconfig/network &
[1] 24940
# jobs
[1]+  Stopped   vi /etc/sysconfig/network

É possível digitar o comando jobs para visualizar todos os aplicativos que estão sendo executados em segundo plano. Cada tarefa sendo executada em segundo plano é designada um número sequencial, começando com 1. A tarefa na Lista 3 é o número da tarefa 1. 24940 é o ID do processo (PID). É possível trazer um aplicativo para o primeiro plano com o comando fg e com o número da tarefa específico. Neste exemplo, o processo não está em uso pelo usuário, portanto, é exibido como Interrompido. No entanto, o comando fg 1 abre o terminal de volta para o processo ativo de edição do arquivo.


Executando aplicativos a partir do desktop

A execução de aplicativos de interface gráfica com o usuário (GUI) a partir da área de trabalho no Linux não é muito diferente do que no Windows. Na maioria das vezes, é necessário entender como os aplicativos são agrupados em menus em seu ambiente específico de área de trabalho. O Linux possui uma série de aplicativos de área de trabalho disponíveis para várias tarefas. Alguns são nativos do Linux, enquanto outros podem ser aplicativos de plataforma cruzada desenvolvidos com C# usando um ambiente de tempo de execução comum, assim como os aplicativos .NET Framework. Pode ser possível inclusive executar seu aplicativo favorito do Windows no Linux usando um ambiente virtual, como o Wine.

Aplicativos Linux nativos

É muito possível que um aplicativo Linux alternativo seja encontrado para seu aplicativo baseado no Windows favorito. A execução de aplicativos Linux nativos na área de trabalho é direta. Assim como no Windows, esses aplicativos estão geralmente organizados em menus, basta clicar e executar, como faria com um aplicativo Windows.

Para os aplicativos que requerem privilégios de administrador, é solicitado inserir a senha raiz antes de prosseguir. É semelhante ao conceito da opção Executar como Administrador no Windows. Caso contrário, todos os aplicativos executados estarão no espaço do usuário da conta na qual foi efetuado login.

No Windows, é possível criar atalhos na área de trabalho. O Linux possui atalhos semelhantes, chamados ativadores, que podem ser colocados no painel ou na área de trabalho. Quando você clica no ativador, ele executa o programa.

Figura 1 exibe dois ativadores para o navegador da web Mozilla Firefox na área de trabalho do GNOME. Um ativador está localizado no painel e o outro, na área de trabalho.

Figura 1. Visualizando ativadores na área de trabalho e no painel
Visualizando ativadores na área de trabalho e no painel

Mono

Muitos aplicativos do Windows são desenvolvidos usando o .NET Framework. Mono é uma implementação de software livre do .NET que é executado em muitas plataformas, incluindo no Linux. Na verdade, o website do Mono o descreve como uma implementação de C# e do CLR (Common Language Runtime) de binário compatível com o .NET. Atualmente, o projeto é suportado pela Xamarin.

No Linux, os aplicativos desenvolvidos com o .NET Framework (ou Mono) são executados da mesma forma como no Windows. No entanto, lembre-se das permissões de umask e de arquivo padrão do Linux. Ainda será necessário fornecer permissões de execução ao arquivo a fim de que o Linux permita que o executável seja realizado.

Alguns aplicativos de plataforma cruzada desenvolvidos no Mono que podem ser instalados em sua área de trabalho do GNOME do Linux, como o F-Spot, residem no menu com os aplicativos GNOME nativos. O F-Spot é um aplicativo de software livre para o gerenciamento de fotos. Embora seja um aplicativo C#, ele aparece como um aplicativo nativo na área de trabalho do GNOME. Depois de criar um ativador para um aplicativo, é possível clicar e executar, assim como no Windows.

Figura 2 demonstra o local do aplicativo baseado no Mono, o F-Spot, e como é possível criar ativadores de área de trabalho ou de painel para ele.

Figura 2. Criando um ativador para o F-Spot
Criando um ativador para o F-Spot

Wine

O Wine permite executar o software Windows no Linux e em outros sistemas operacionais. Com o Wine, é possível instalar e executar esses aplicativos, assim como no Windows. O Wine ainda está sob desenvolvimento ativo e nem todos os programas Windows funcionam com ele. Se seu aplicativo for compilado para um sistema operacional Windows e você achar que ele pode ser executado adequadamente com o Wine, pode ser que ele seja um aplicativo de área de trabalho, não do servidor. Confira a documentação do Wine sobre a possibilidade de executar o aplicativo no Linux, porque o Wine não oferece suporte total a todos os aplicativos.

Ao usar o Wine com o Linux, há uma pasta oculta no diretório inicial de sua conta que emula um ambiente Windows, como na Lista 4.

Lista 4. Pasta oculta do Wine que emula um ambiente Windows
$ cd /home/tbost/.wine/drive_c/windows
$ls
cf8e.tmp
command
explorer.exe
Fonts
help
hh.exe
inf
Installer
ls.txt
Microsoft.NET
notepad.exe
pwd.txt
regedit.exe
rundll.exe
system
system32
system.ini
temp
twain_32.dll
twain.dll
winhelp.exe
winhlp32.exe
win.ini
winsxs

Depois de instalar um aplicativo usando o Wine, ele é geralmente encontrado no menu Área de Trabalho e executado da mesma forma como no Windows.

Por exemplo, Camstudio é uma ferramenta de software livre para gravar e gerenciar vídeos na tela. Atualmente, não há um release para o sistema operacional Linux. No entanto, usando o Wine, instalei a versão do Windows em uma área de trabalho do Linux. Aplicativos relacionados ao Wine são geralmente agrupados em Aplicativos> Wine > Programas, como em Figura 3.

Figura 3. Executando um aplicativo do Windows no Linux usando o Wine
Executando um aplicativo do Windows no Linux usando o Wine

Conclusão

Outros Artigos nesta Série

Veja mais artigos na série Administradores de sistemas Linux para Windows .

Ao gerenciar um servidor Linux, você tem a certeza de encontrar um software que é executado a partir da área de trabalho e da linha de comandos. Ao entender como configurar as permissões e contas do usuário apropriadas, é possível executar esses aplicativos com segurança. Com processos de execução longa, como serviços do servidor, é possível executar a partir da linha de comandos e configurar adequadamente em segundo plano. Caso tenha aplicativos que são voltados para a execução a partir da área de trabalho, isso também pode ser feito—às vezes, mesmo com aplicativos do Windows!

Recursos

Aprender

Obter produtos e tecnologias

  • Saiba mais sobre a execução de aplicativos do Windows no Linux com o Wine no website do projeto.
  • Descubra como executar aplicativos do .NET framework no Linux com o Mono no website do projeto.
  • AcesseVersão de teste do software IBM (disponível para download ou em DVD) e inove em seu próprio projeto de desenvolvimento de software livre usando software especialmente para desenvolvedores.

Discutir

Comentários

developerWorks: Conecte-se

Los campos obligatorios están marcados con un asterisco (*).


Precisa de um ID IBM?
Esqueceu seu ID IBM?


Esqueceu sua senha?
Alterar sua senha

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


A primeira vez que você entrar no developerWorks, um perfil é criado para você. Informações no seu perfil (seu nome, país / região, e nome da empresa) é apresentado ao público e vai acompanhar qualquer conteúdo que você postar, a menos que você opte por esconder o nome da empresa. Você pode atualizar sua conta IBM a qualquer momento.

Todas as informações enviadas são seguras.

Elija su nombre para mostrar



Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

Los campos obligatorios están marcados con un asterisco (*).

(Escolha um nome de exibição de 3 - 31 caracteres.)

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


Todas as informações enviadas são seguras.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=Linux, Software livre
ArticleID=813786
ArticleTitle=Administradores de Sistemas do Linux para Windows: Entenda como executar aplicativos do Linux
publish-date=05112012