Solicitar senha quando for necessário root

3

Existe alguma maneira de fazer programas pedirem senha quando o root é necessário? Por exemplo, eu quero extrair alguns arquivos com File Roller em /usr/share/ , onde, aparentemente, o root é necessário, mas em vez do erro que ele me dá, eu gostaria de um prompt de senha.

    
por abruski 30.10.2011 / 09:14

4 respostas

5

Para responder diretamente à sua pergunta: Não, não há como (até onde eu sei) criar um programa para solicitar uma senha em vez de falhar quando não houver permissões suficientes para executar uma operação. Existem duas opções:

  • Alguns programas estão cientes de que precisam de privilégios administrativos para algumas operações e solicitam uma senha antes de fazer algo (por exemplo, o Software Center solicita uma senha antes de instalar programas).

  • A maioria dos outros programas precisa ser iniciada com os privilégios necessários. Como já foi mencionado, você precisa usar sudo [command] (no terminal), gksu [command] (no Gnome / Unity) ou kdesu [command] (no KDE) para isso.

por Sergey 30.10.2011 / 11:15
1

A maneira usual é entrar no modo de linha de comando ( alt + F2 xterm , ou terminal de traço), então use gksudo file-roller e digite sua senha.

sudo e gksudo lhe darão privilégios de root.

    
por user27103 30.10.2011 / 09:44
1

Você teria que iniciar o File Roller usando gksu , conforme mencionado pelo usuário anterior. Quando você adiciona itens à sua barra de inicialização, você pode usar um comando como faxanswer que requer privilégios:

gksu faxanswer ttyS4

Se você estiver usando o File Roller uma vez para atualizar o material em /usr/share , é melhor usar apenas o comando Executar do que criar um ícone permanente.

    
por Alexis Wilke 30.10.2011 / 11:06
1

Existe alguma maneira de fazer com que os programas solicitem senha quando o root é necessário?

Sim - com os scripts de ajuda.

Aqui está um exemplo com a cópia bash (cp). A cópia (backup) é incluída no script perl para verificar o proprietário do arquivo. O script está usando o comando perl stat / 1 /. Aqui o script é chamado no menu de serviço do KDE / 2 /. Se o arquivo é de propriedade da raiz / 3 / então o frontend do KDE para o sudo é usado / 4 /, / 5 /.

backup.pl:

uso: "backup.pl nome do arquivo"

#!/usr/bin/perl -w

$FILENAME = $ARGV[0];

$MARKER = "_Backup_";

($DAY,$MONTH,$YEAR) = (localtime)[3,4,5];
$DAY_STAMP = sprintf '%04d%02d%02d', $YEAR+1900, $MONTH+1, $DAY;

for ( $I=0; $I<101; $I++ ) {
   if ( $I > 99 ) { die system ("kdialog --sorry '...too many copies'"); }
   $INDEX = sprintf '%02d', $I;
   $NEW_NAME = $FILENAME . $MARKER . $DAY_STAMP . $INDEX;
   last unless (-e $NEW_NAME);
}

$UID = (stat("$FILENAME"))[4];

@Q_COPY_COMMAND = ("\"", "cp", "$FILENAME", "$NEW_NAME", "\"");
@COPY_COMMAND = ("cp", "$FILENAME", "$NEW_NAME");

if ( $UID == 0 ) {
   system ("kdesudo bash -c @Q_COPY_COMMAND");
} else {
   system ("@COPY_COMMAND");
}

Links:

  1. link
  2. link
  3. link
  4. link
  5. link
por user26687 30.10.2011 / 14:24