GNU/Linux >> Linux Esercitazione >  >> Linux

Come posso ottenere una configurazione oh-my-zsh sicura a livello di sistema?

A meno che io non abbia frainteso, la risposta contrassegnata da Caleb è solo la normale installazione per utente passaggi con l'aggiunta di un file .zshrc alla directory skel e la modifica della shell predefinita per i nuovi utenti, ma ​​in realtà non funziona o non risponde realmente alla domanda perché ogni utente ancora richiede la directory oh-my-zsh/richiede comunque a ciascun utente di clonare la directory oh-my-zsh nella propria cartella, il che significa che non è realmente installata a livello di sistema , fornisce loro automaticamente un file zshrc e cambia la shell predefinita in zsh, ma senza oh-my-zsh in ogni cartella utente si verificherà un errore.

Da quanto ho capito, la domanda chiede come installare oh-my-zsh a livello di sistema ovvero averlo installato in UN posto e non richiedere di scherzare manualmente su ogni nuovo utente/avere un clone git di oh-my-zsh su ogni directory utente. Supponendo che sia così, ecco cosa ho fatto sulla base del pacchetto AUR di Arch Linux che uso normalmente ma cercavo lo stesso su un server centos, tuttavia questo può essere fatto su qualsiasi distribuzione. Il merito va a MarcinWieczorek e agli altri manutentori , ho appena adattato quanto segue in modo da poter fare lo stesso su distribuzioni non arch.

Se hai già oh-my-zsh installato su root, vai al passaggio 3. Questo non è specifico per la distribuzione, utilizza solo il file di patch AUR per zshrc

Passaggio 1

Installa zsh ovviamente

Passaggio 2

Installa oh-my-zsh come root come di consueto (mostra il metodo wget, vedi la risposta di Caleb per l'alternativa)

sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"

Passaggio 3

Sposta l'installazione in /usr/share in modo che sia a livello di sistema

#Copy zsh files to /usr/share for all uer access 
mv /root/.oh-my-zsh /usr/share/oh-my-zsh
# Move into the dir and copy the zshrc template to zshrc (which will be the default for users)
cd /usr/share/oh-my-zsh/
cp templates/zshrc.zsh-template zshrc
# Nab the patch file from MarcinWieczorek's AUR Package and apply to the zshrc file
wget https://aur.archlinux.org/cgit/aur.git/plain/0001-zshrc.patch\?h\=oh-my-zsh-git -O zshrc.patch && patch -p1 < zshrc.patch

Ora oh-my-zsh è installato a livello globale e l'utente ha solo bisogno di quel file zshrc. quindi ORA è dove arriva la risposta di Caleb, anche se basta fare quanto segue poiché /etc/adduser.conf è solo su debian mentre quanto segue dovrebbe essere indipendente dalla distribuzione.

Passaggio 4

Impostalo come predefinito per i nuovi utenti

# Create hard link to the zshrc file so it creates an actual independent copy on new users
sudo ln /usr/share/oh-my-zsh/zshrc /etc/skel/.zshrc
# Set default shell to zsh
sudo adduser -D -s /bin/zsh

Questo è un vero installazione di oh-my-zsh con tutti i nuovi utenti che lo applicano automaticamente con le impostazioni /usr/share/oh-my-zsh/zshrc e non sono necessari altri passaggi.

Note varie

  • Per tutti gli utenti preesistenti con oh-my-zsh:

    cp /usr/share/oh-my-zsh/zshrc ~/.zshrc
    
  • Puoi impostare le impostazioni predefinite OMZ per i nuovi utenti in /usr/share/oh-my-zsh/zshrc
  • Gli aggiornamenti automatici sono disabilitati poiché i nuovi utenti non hanno i permessi per aggiornare i file /usr/share/oh-my-zsh
    • Per aggiornare oh-my-zsh cd su /usr/share/oh-my-zsh/ ed esegui 'sudo git pull'
  • La cache oh-my-zsh verrà gestita per utente all'interno di ciascuna directory utente in ~/.oh-my-zsh-cache/ (creata automaticamente)

Attenzione giusta:questo presuppone un Linux in stile Debian, ma dovrebbe funzionare anche su altre forme. Ciò presuppone anche che tu stia partendo da zero.

Parte 1 , install:

Dovrai installare zsh a livello di sistema e non solo per un utente. (potresti averlo già fatto, ma lo includerò solo per completezza)

assicurati di aver installato zsh, semplicemente:sudo apt-get install zsh

Segui la guida all'installazione di oh-my-zsh oppure puoi:

usa l'arricciatura

sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

usa wget

sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"

Parte 2 , Configurazione di zsh quando vengono aggiunti nuovi utenti:

Dovrai fare in modo che i nuovi utenti utilizzino zsh per impostazione predefinita. Nel tuo /etc/adduser.conf file modifica la riga che dice:

DSHELL=/bin/sh

a:

DSHELL=/bin/zsh

Dovresti cambiarlo anche per il /etc/default/useradd file, cambia la riga:

SHELL=/bin/sh

a:

SHELL=/bin/zsh

Parte 3 , imposta il tuo tema personalizzato.

Ho un file del tema personalizzato (qui) che volevo che tutti gli utenti del sistema avessero. Innanzitutto, dovresti aggiungere il file al tuo .oh-my-zsh/themes cartella:

cp your_custom_style.zsh-theme ~/.oh-my-zsh/themes

Successivamente, modifica il tuo .zshrc file nella tua home directory, cambia il ZSH_THEME="default" a ZSH_THEME="your_custom_style"

Quindi, ricarica il tuo .zshrc file con:. ~/.zshrc

Parte 4 , impostando le home directory del nuovo utente.

Dobbiamo inserire tutti i file che vogliamo che i nuovi utenti abbiano nel /etc/skel directory, perché questo è ciò che il sistema copia quando crea la home directory del nuovo utente. Consulta questa guida per l'amministratore di sistema per i dettagli.

Copia i file del tuo utente (potrebbe essere necessario sudo):

cp -r .oh-my-zsh /etc/skel/
cp .zshrc /etc/skel 

Ora sarai in grado di aggiungere nuovi utenti e avranno oh-my-zsh per impostazione predefinita con qualsiasi tema personalizzato desideri che abbiano.

Se vuoi cambiare la shell di tutti gli altri utenti esistenti in zsh, ti consiglio di leggere questa domanda sul serverfault.


Se desideri un'installazione a livello di sistema di Oh-My-Zsh, un approccio conveniente che sovrascrive il minor numero di file è:

sudo git clone https://github.com/robbyrussell/oh-my-zsh.git /etc/oh-my-zsh
sudo cp /etc/oh-my-zsh/templates/zshrc.zsh-template /etc/skel/.zshrc
sudo mkdir -p /etc/skel/.oh-my-zsh/cache

Modifica /etc/skel/.zshrc :

  • Modifica la riga export ZSH=$HOME/.oh-my-zsh (attualmente riga 5)
  • Cambia la riga in:
      export ZSH=/etc/oh-my-zsh
      export ZSH_CACHE_DIR=~/.oh-my-zsh/cache

Quindi modifica /etc/default/useradd e cambia la riga SHELL=... a SHELL=/bin/zsh .

Questo è fondamentalmente tutto (ovviamente, git e zsh devono essere già installati).

Per aggiornare un utente preesistente:accedi come loro e cp /etc/skel/.zshrc ~/.zshrc

Aggiornamento: Si prega di non modificarlo. Ho appena eseguito il rollback di una modifica che ha fatto un pasticcio completo!


Accedi come ROOT

Passaggio 1:installa ZSH

# Download and extract ZSH

wget https://github.com/zsh-users/zsh/archive/zsh-5.8.tar.gz -P /tmp/demo/zsh
cd /tmp/demo/zsh
tar -xvzf zsh-*
cd zsh-zsh-5.8

# configure and make

sudo ./Util/preconfig
sudo ./configure
sudo make && sudo make install


# Add ZSH to the list of shells

echo /usr/local/bin/zsh | sudo tee -a /etc/shells

Passaggio 2:installa oh-my-zsh

# If you're running the Oh My Zsh install script as part of an automated install, 
# you can pass the flag --unattended to the install.sh script.
# This will have the effect of not trying to change the default shell, and also won't
# run zsh when the installation has finished.

sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended

# Add oh-my-zsh to /usr/share
mv /root/.oh-my-zsh /usr/share
mv /usr/share/.oh-my-zsh /usr/share/oh-my-zsh
mv /root/.zshrc /usr/share/oh-my-zsh
mv /usr/share/oh-my-zsh/.zshrc /usr/share/oh-my-zsh/zshrc

# Modify zshrc to point to /usr/share/oh-my-zsh

sed -i 's|export ZSH="'"$HOME"'/.oh-my-zsh"|export ZSH="\/usr\/share\/oh-my-zsh"|g' /usr/share/oh-my-zsh/zshrc

Passaggio 3:aggiungi extra (facoltativo - Guarda in basso per funzionalità extra)

Passaggio 4:crea un collegamento simbolico

# Create Symbolic Links to /etc/skel
sudo ln /usr/share/oh-my-zsh/zshrc /etc/skel/.zshrc

Passaggio 5:aggiungi oh-my-zsh per root

# Change shell to ZSH for root
echo "$USER" | chsh -s /usr/local/bin/zsh

Passaggio 6:aggiungi oh-my-zsh per l'utente

# Change user
su - username

# Copy zshrc to $HOME for user
cp /usr/share/oh-my-zsh/zshrc ~/.zshrc

# Change shell to ZSH for user  
echo "$USER" | chsh -s /usr/local/bin/zsh

O

sudo -i -u username bash << EOF
cp /usr/share/oh-my-zsh/zshrc ~/.zshrc
echo username | chsh -s /usr/local/bin/zsh
EOF

EXTRA:

Cambia tema in powerlevel10k

git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-/usr/share/oh-my-zsh/custom}/themes/powerlevel10k

sed -i 's/ZSH_THEME="robbyrussell"/ZSH_THEME="powerlevel10k\/powerlevel10k"/g' /usr/share/oh-my-zsh/zshrc

Abilita la correzione automatica

sed -i 's/# ENABLE_CORRECTION="true"/ENABLE_CORRECTION="true"/g' /usr/share/oh-my-zsh/zshrc

Abilita i suggerimenti automatici e l'evidenziazione della sintassi

git clone --depth=1 https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-/usr/share/oh-my-zsh/custom}/plugins/zsh-autosuggestions

git clone --depth=1 https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-/usr/share/oh-my-zsh/custom}/plugins/zsh-syntax-highlighting

sed -i 's/plugins=(git)/plugins=(\n  git\n  zsh-autosuggestions\n  zsh-syntax-highlighting\n)/' /usr/share/oh-my-zsh/zshrc

sed -i 's/plugins=(git)/plugins=(git)\nZSH_DISABLE_COMPFIX=true/' /usr/share/oh-my-zsh/zshrc

Aggiungi colori nord dir

git clone --depth=1 https://github.com/arcticicestudio/nord-dircolors.git /tmp/demo/dircolors

mv /tmp/demo/dircolors/src/dir_colors /usr/share/
cd /usr/share/
mv /usr/share/dir_colors /usr/share/.dir_colors

tee -a /usr/share/oh-my-zsh/zshrc >/dev/null <<'EOF'
test -r "/usr/share/.dir_colors" && eval $(dircolors /usr/share/.dir_colors)
EOF

Linux
  1. Ubuntu 16.04 – Come posso disabilitare l'avvio protetto?

  2. Come posso ottenere un elenco di reti wireless disponibili su Linux?

  3. Come posso fare in modo che `find` ignori le directory .svn?

  4. Come posso fare in modo che CMake trovi la mia installazione Boost alternativa?

  5. Come posso ottenere valori univoci da un array in Bash?

Come installare OH-MY-ZSH in Ubuntu 20.04

Come ottenere i dettagli di configurazione dell'account e-mail in cPanel?

Come posso ottenere la cartella temporanea di una macchina che esegue Maven?

Come posso ottenere la lunghezza di un file video dalla console?

Come posso monitorare il disco io?

Come posso controllare la mia configurazione di prelazione del kernel?