GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie erhalte ich eine sichere systemweite oh-my-zsh-Konfiguration?

Sofern ich das nicht falsch verstehe, ist die markierte Antwort von Caleb nur die normale Installation pro Benutzer Schritte mit dem Hinzufügen einer .zshrc-Datei zum skel-Verzeichnis und dem Ändern der Standard-Shell für neue Benutzer, aber es funktioniert nicht wirklich oder beantwortet die Frage nicht wirklich weil jeder Benutzer noch erfordert das oh-my-zsh-Verzeichnis/würde immer noch verlangen, dass jeder Benutzer das oh-my-zsh-Verzeichnis in seinen eigenen Ordner klont, was bedeutet, dass es nicht wirklich systemweit installiert ist , es gibt ihnen einfach automatisch eine zshrc-Datei und ändert die Standard-Shell in zsh, aber ohne oh-my-zsh in jedem Benutzerordner wird es einen Fehler geben.

Soweit ich die Frage verstehe, wird gefragt, wie oh-my-zsh systemweit installiert wird aka es an EINEM Ort installiert haben und nicht manuell an jedem neuen Benutzer herumspielen müssen / einen Git-Klon von oh-my-zsh in jedem Benutzerverzeichnis haben müssen. Angenommen, das ist der Fall, habe ich Folgendes getan, basierend auf dem AUR-Paket von Arch Linux, das ich normalerweise verwende, aber auf einem Centos-Server nach demselben gesucht habe, dies kann jedoch auf jeder Distribution durchgeführt werden. Dank geht an MarcinWieczorek und die anderen Betreuer , ich habe gerade das Folgende angepasst, damit das Gleiche auf Nicht-Arch-Distributionen möglich ist.

Falls Sie oh-my-zsh bereits im Root-Verzeichnis installiert haben, fahren Sie einfach mit Schritt 3 fort. Dies ist nicht spezifisch für die Distribution, sondern verwendet nur die AUR-Patch-Datei für zshrc

Schritt 1

Installieren Sie natürlich zsh

Schritt 2

Installieren Sie oh-my-zsh wie gewohnt als root (zeigt die wget-Methode, siehe Calebs Antwort für Alternativen)

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

Schritt 3

Verschieben Sie die Installation nach /usr/share, damit sie systemweit gültig ist

#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

Jetzt ist oh-my-zsh global installiert und der Benutzer benötigt nur diese zshrc-Datei. also kommt JETZT Calebs Antwort ins Spiel, aber tun Sie einfach das Folgende, da /etc/adduser.conf nur auf Debian ist, während das Folgende distro-unabhängig sein sollte.

Schritt 4

Richten Sie es als Standard für neue Benutzer ein

# 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

Nun, das ist wahr Installation von oh-my-zsh, wobei alle neuen Benutzer es automatisch mit den /usr/share/oh-my-zsh/zshrc-Einstellungen anwenden und keine weiteren Schritte erforderlich sind.

Verschiedene Anmerkungen

  • Für alle bereits bestehenden Benutzer von oh-my-zsh:

    cp /usr/share/oh-my-zsh/zshrc ~/.zshrc
    
  • Sie können OMZ-Standardeinstellungen für neue Benutzer festlegen in /usr/share/oh-my-zsh/zshrc
  • Automatische Updates sind deaktiviert da neue Benutzer keine Berechtigung zum Aktualisieren der /usr/share/oh-my-zsh-Dateien
      haben
    • Um oh-my-zsh zu aktualisieren cd einfach nach /usr/share/oh-my-zsh/ und führe 'sudo git pull'
    • aus
  • Der oh-my-zsh-Cache wird pro Benutzer in jedem Benutzerverzeichnis unter ~/.oh-my-zsh-cache/ verwaltet (automatisch erstellt)

Fair Warning:Dies setzt ein Linux im Debian-Stil voraus, aber dies sollte auch auf anderen Formularen funktionieren. Dies setzt auch voraus, dass Sie bei Null anfangen.

Teil 1 , die Installation:

Sie müssen zsh systemweit installieren und nicht nur für einen Benutzer. (Möglicherweise haben Sie dies bereits getan, aber ich füge es nur der Vollständigkeit halber hinzu)

Stellen Sie sicher, dass Sie zsh installiert haben, einfach:sudo apt-get install zsh

Folgen Sie der oh-my-zsh-Installationsanleitung oder Sie können entweder:

Verwenden Sie curl

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

Verwenden Sie wget

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

Teil 2 , Einrichten von zsh, wenn neue Benutzer hinzugefügt werden:

Sie müssen es so einrichten, dass neue Benutzer standardmäßig zsh verwenden. In Ihrem /etc/adduser.conf Datei Bearbeiten Sie die Zeile, die besagt:

DSHELL=/bin/sh

zu:

DSHELL=/bin/zsh

Sie sollten es auch für /etc/default/useradd ändern Datei, ändern Sie die Zeile:

SHELL=/bin/sh

zu:

SHELL=/bin/zsh

Teil 3 , legen Sie Ihr benutzerdefiniertes Thema fest.

Ich habe eine benutzerdefinierte Themendatei (hier), die alle Benutzer auf dem System haben sollten. Zuerst sollten Sie die Datei zu Ihrem .oh-my-zsh/themes hinzufügen Ordner:

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

Als nächstes bearbeiten Sie Ihre .zshrc Datei in Ihrem Home-Verzeichnis, ändern Sie den ZSH_THEME="default" bis ZSH_THEME="your_custom_style"

Laden Sie dann Ihren .zshrc neu Datei mit:. ~/.zshrc

Teil 4 , Home-Verzeichnisse für neue Benutzer einrichten.

Wir müssen alle Dateien, die die neuen Benutzer haben sollen, im /etc/skel ablegen Verzeichnis, da dies das ist, was das System kopiert, wenn es das Home-Verzeichnis des neuen Benutzers erstellt. Weitere Informationen finden Sie in diesem Handbuch für Systemadministratoren.

Kopieren Sie die Dateien Ihres Benutzers (möglicherweise müssen Sie sudo ausführen):

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

Jetzt können Sie neue Benutzer hinzufügen und sie haben standardmäßig oh-my-zsh mit dem benutzerdefinierten Thema, das Sie haben möchten.

Wenn Sie die Shell aller anderen vorhandenen Benutzer auf zsh ändern möchten, würde ich empfehlen, diese Serverfehlerfrage zu lesen.


Wenn Sie eine systemweite Installation von Oh-My-Zsh wünschen, ist ein praktischer Ansatz, der die wenigsten Dateien überschreibt, folgender:

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

Bearbeiten Sie /etc/skel/.zshrc :

  • Bearbeiten Sie die Zeile export ZSH=$HOME/.oh-my-zsh (aktuell Zeile 5)
  • Ändern Sie die Zeile wie folgt:
      export ZSH=/etc/oh-my-zsh
      export ZSH_CACHE_DIR=~/.oh-my-zsh/cache

Bearbeiten Sie dann /etc/default/useradd und ändern Sie die Zeile SHELL=... bis SHELL=/bin/zsh .

Das ist im Grunde alles (natürlich müssen git und zsh bereits installiert sein).

Um einen bereits bestehenden Benutzer zu aktualisieren:Melden Sie sich als dieser an und cp /etc/skel/.zshrc ~/.zshrc

Aktualisierung: Bitte bearbeiten Sie diese nicht. Ich habe gerade eine Bearbeitung rückgängig gemacht, die sie komplett vermasselt hat!


Melden Sie sich als ROOT an

Schritt 1:ZSH installieren

# 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

Schritt 2:Installieren Sie 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

Schritt 3:Extra hinzufügen (Optional – siehe unten für zusätzliche Funktionen)

Schritt 4:Symbolischen Link erstellen

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

Schritt 5:oh-my-zsh für root hinzufügen

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

Schritt 6:oh-my-zsh für Benutzer hinzufügen

# 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

ODER

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

EXTRA:

Design zu powerlevel10k ändern

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

Automatische Korrektur aktivieren

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

Automatische Vorschläge und Syntaxhervorhebung aktivieren

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

Füge nord dircolors hinzu

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. Anfängerleitfaden für DNSSEC und wie es das Internet sichern kann

  2. Wie erhalte ich eine Liste der verfügbaren drahtlosen Netzwerke unter Linux?

  3. Wie kann ich `find` dazu bringen, .svn-Verzeichnisse zu ignorieren?

  4. Wie kann ich CMake dazu bringen, meine alternative Boost-Installation zu finden?

  5. Wie kann ich den Tastaturstatus unter Linux abrufen?

So installieren Sie OH-MY-ZSH in Ubuntu 20.04

Wie erhalte ich Konfigurationsdetails für E-Mail-Konten in cPanel?

Wie kann ich bekommen, was meine Hauptfunktion zurückgegeben hat?

So erhalten Sie die CPU-Auslastung

Wie kann ich die Länge einer Videodatei von der Konsole abrufen?

Wie kann ich eine Binärdatei aus einer .py-Datei erhalten?