Eu estava escrevendo algumas instruções sobre como instalar algo (relacionado ao TeX - se você não perguntar, não vou estragar o seu dia fornecendo mais detalhes) e usado sudo
para instalar em todo o sistema. Alguém comentou que achava que não sudo
estava disponível em todas as distribuições Linux (ou Unix).
Existem distribuições Unix que não possuem sudo
e, em caso afirmativo, quais são? Existe um comando universalmente reconhecido "Get me superusuário privilégios" que é em todos os sistemas?
fonte
sudo
pode ser agrupado na maioria das distribuições, mas nem todas configuram todos os usuários como capazes de executá-las.A distribuição mais usada, o Ubuntu, usa
sudo
como o método recomendado para se tornar root (ao usar a linha de comando - os usuários que aderem à GUI receberão uma solicitação de senha sem entender ou se preocupar com o que acontece sob o capô). Outras distribuições podem ou não incentivar a instalação do sudo e podem ou não ser enviadas. Por outro lado,su
está disponível em qualquer lugar e pode ser usado na maioria dos sistemas, exceto naqueles em que apenassudo
está disponível porque o usuário não terá a senha de root.Entre
su
esudo
, você cobrirá quase todos os seus usuários. O exótico poucos que precisamcalife
ouop
oupfexec
saber o que fazer já. Mesmo se não o fizerem, um sistema que usa nemsu
nemsudo
é provável que tenha arquivos em lugares desconhecidos e bastante coisas que você não tenha pensado que as instruções provavelmente não vai funcionar de qualquer maneira.fonte
Para responder à sua pergunta, com mais precisão, não
sudo
é considerado universal. Na verdade, todo o conceito de "universal" é frequentemente um arenque vermelho. Isso é especialmente verdade no que diz respeito à compatibilidade entre distros. Uma vez que você joga na multiplicidade de versões diferentes de software, a universalidade se torna semi-irrealista. Script por natureza é pragmático, se fosse pedante, escrever scripts portáteis seria praticamente impossível.Normalmente, avalio meu ambiente de execução pretendido, uma distribuição Linux semi-moderna, espero um shell POSIX com o GNU Utils comum. Para scripts que podem ser executados fora do Linux, espero apenas o padrão POSIX completo. Obviamente, muitos scripts são específicos para Linux, ou específicos para distribuição, de modo que muitas vezes diminuem o escopo da portabilidade.
Para abordar seu caso de script específico,
esse script colado é um elogio do shell POSIX, eu sempre escrevo compatível com Dash.
fonte
sudo
ser instalado. Requer execução de superusuário e pode ser usadosudo
se estiver disponível. Sesudo
não estiver disponível, o script deverá ser executado como usuário root ou serádie
.sudo -l
. Infelizmente, é inutilizável nessa situação, pois pode exigir entrada de senha. Pensando nisso com mais cuidado, acho que todo o conceito pode ser melhor alcançado através de um teste por distribuição. Usando, asu -c
menos que esteja executando umasu
distribuição padrão desativada; nesse caso, usandosudo su -c
. Como outros já mencionaram, é melhor deixar a elevação do superusuário para o usuário, eu consideraria qualquer script em torno de uma conveniência.sudo
. Isso deve ser executado corretamente na maioria das distros, assumindo as configuraçõessu
/ padrãosudo
. Eu sei que um Ubuntu desatualizado, prélsb_release
, precisaria ser resolvido ... Mas isso realmente é apenas um exemplo, e obviamente poderia ser estendido.