GNU/Linux >> Znalost Linux >  >> Linux

Jak mohu získat bezpečnou konfiguraci oh-my-zsh pro celý systém?

Pokud tomu nerozumím, označená odpověď od Caleba je jen normální instalace pro uživatele kroky s přidáním souboru .zshrc do adresáře skel a změnou výchozího prostředí pro nového uživatele, ale ve skutečnosti to nefunguje ani neodpovídá na otázku protože každý uživatel stále vyžaduje adresář oh-my-zsh/by stále vyžadovat, aby každý uživatel naklonoval adresář oh-my-zsh do své vlastní složky, což znamená, že není nainstalovaný v celém systému , jen jim automaticky dá soubor zshrc a změní výchozí shell na zsh, ale bez oh-my-zsh v každé uživatelské složce dojde k chybě.

Z toho, co jsem pochopil, je otázka, jak nainstalovat oh-my-zsh v celém systému aka mít to nainstalované na JEDNOM místě a nevyžadovat ruční pohrávání si s každým novým uživatelem/mít git klon oh-my-zsh na každém uživatelském adresáři. Za předpokladu, že tomu tak je, zde je to, co jsem udělal na základě balíčku AUR od Arch Linuxu, který normálně používám, ale hledal jsem totéž na serveru centos, nicméně to lze provést na jakémkoli distribuci. Kredit dostává MarcinWieczorek a ostatní správci , Právě jsem upravil níže uvedené, takže mohu udělat totéž v distribucích bez archů.

Pokud již máte oh-my-zsh nainstalovaný v rootu, přejděte ke kroku 3. Toto není specifické pro distribuci, pouze používá soubor opravy AUR pro zshrc

Krok č. 1

Nainstalujte samozřejmě zsh

Krok č. 2

Nainstalujte oh-my-zsh jako root jako normálně (zobrazuje metodu wget, alternativu viz Calebsova odpověď)

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

Krok č. 3

Přesuňte instalaci do /usr/share, aby byla v celém systému

#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

Nyní je oh-my-zsh nainstalován globálně a uživatel potřebuje pouze tento soubor zshrc. takže TEĎ přichází Calebova odpověď, i když proveďte níže uvedené, protože /etc/adduser.conf je pouze na debianu, zatímco níže uvedené by mělo být nezávislé na distribuci.

Krok č. 4

Nastavte jej jako výchozí pro nové uživatele

# 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

Nyní je to pravda instalace oh-my-zsh se všemi novými uživateli, kteří jej automaticky použijí s nastavením /usr/share/oh-my-zsh/zshrc a nejsou potřeba žádné další kroky.

Různé poznámky

  • Pro všechny již existující uživatele s oh-my-zsh:

    cp /usr/share/oh-my-zsh/zshrc ~/.zshrc
    
  • Můžete nastavit nové uživatelské výchozí hodnoty OMZ v /usr/share/oh-my-zsh/zshrc
  • Automatické aktualizace jsou zakázány protože noví uživatelé nemají oprávnění aktualizovat soubory /usr/share/oh-my-zsh
    • Pro aktualizaci oh-my-zsh stačí cd do /usr/share/oh-my-zsh/ a spustit 'sudo git pull'
  • Cache oh-my-zsh bude zpracována pro každého uživatele v rámci každého uživatelského adresáře pod ~/.oh-my-zsh-cache/ (vytvořeno automaticky)

Spravedlivé varování:předpokládá se linux ve stylu Debianu, ale mělo by to fungovat i na jiných formách. To také předpokládá, že začínáte od nuly.

Část 1 , instalace:

Budete muset nainstalovat zsh celý systém a ne pouze pro jednoho uživatele. (možná jste to již udělali, ale zahrnu to jen proto, aby to bylo komplexní)

ujistěte se, že jste nainstalovali zsh, jednoduše:sudo apt-get install zsh

Postupujte podle instalačního průvodce oh-my-zsh nebo můžete:

použijte curl

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

použijte wget

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

Část 2 , Nastavení zsh při přidání nových uživatelů:

Budete to muset udělat tak, aby noví uživatelé jako výchozí měli zsh. Ve vašem /etc/adduser.conf soubor upravte řádek, který říká:

DSHELL=/bin/sh

komu:

DSHELL=/bin/zsh

Měli byste jej také změnit na /etc/default/useradd soubor, změňte řádek:

SHELL=/bin/sh

komu:

SHELL=/bin/zsh

Část 3 , nastavte si vlastní motiv.

Mám vlastní soubor motivu (zde), který jsem chtěl, aby měli všichni uživatelé v systému. Nejprve byste měli přidat soubor do .oh-my-zsh/themes složka:

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

Dále upravte .zshrc soubor ve vašem domovském adresáři, změňte ZSH_THEME="default" na ZSH_THEME="your_custom_style"

Poté znovu načtěte .zshrc soubor s:. ~/.zshrc

Část 4 , nastavení domovských adresářů nového uživatele.

Všechny soubory, které chceme, aby noví uživatelé měli, musíme umístit do /etc/skel adresář, protože to je to, co systém zkopíruje při vytváření domovského adresáře nového uživatele. Podrobnosti naleznete v této příručce správce systému.

Zkopírujte soubory svého uživatele (možná budete muset použít sudo):

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

Nyní budete moci přidávat nové uživatele a ve výchozím nastavení budou mít oh-my-zsh s libovolným vlastním motivem, který chcete, aby měli.

Pokud chcete změnit všechny ostatní existující uživatelské prostředí na zsh, doporučuji přečíst si tuto otázku o chybě serveru.


Pokud chcete instalaci Oh-My-Zsh pro celý systém, pohodlný přístup, který přepíše nejmenší počet souborů, je:

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

Upravit /etc/skel/.zshrc :

  • Upravte řádek export ZSH=$HOME/.oh-my-zsh (aktuálně řádek 5)
  • Změňte řádek na:
      export ZSH=/etc/oh-my-zsh
      export ZSH_CACHE_DIR=~/.oh-my-zsh/cache

Poté upravte /etc/default/useradd a změňte řádek SHELL=... na SHELL=/bin/zsh .

To je v podstatě vše (samozřejmě již musí být nainstalovány git a zsh).

Chcete-li aktualizovat již existujícího uživatele:přihlaste se jako oni a cp /etc/skel/.zshrc ~/.zshrc

Aktualizace: Toto prosím neupravujte. Právě jsem vrátil úpravu, která to úplně zpackala!


Přihlaste se jako ROOT

Krok 1:Nainstalujte 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

Krok 2:Nainstalujte 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

Krok 3:Přidejte další (volitelné – podívejte se dole na další funkce)

Krok 4:Vytvořte symbolický odkaz

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

Krok 5:Přidejte oh-my-zsh pro root

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

Krok 6:Přidejte oh-my-zsh pro uživatele

# 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

NEBO

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

EXTRA:

Změňte motiv na 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

Povolit automatickou opravu

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

Povolit automatické návrhy a zvýrazňování syntaxe

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

Přidejte nord dircolors

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. Jak mohu získat seznam dostupných bezdrátových sítí v systému Linux?

  2. Jak mohu dosáhnout toho, aby příkaz `najít` ignoroval adresáře .svn?

  3. Jak mohu přimět CMake, aby našel svou alternativní instalaci Boost?

  1. Jak mohu získat stav klávesnice v Linuxu?

  2. Jak zjistit využití CPU

  3. Jak dostat ps do tiskové skupiny?

  1. Jak mohu získat dočasnou složku počítače se systémem maven?

  2. Jak mohu získat svou externí IP adresu v shell skriptu?

  3. Jak mohu monitorovat disk io?