Yapılandırma dosyalarını nasıl geri yükleyebilirim?

85

LightDM'yi varsayılan durumuna geri yüklemek istiyorum, çünkü bir sebepten dolayı /etc/lightdm/unity-greeter.conf artık boş bir dosya.

/etc/lightdm/unity-greeter.conf 'sini silme ve sudo apt-get install --reinstall unity-greeter ' yi çalıştırma, beklediğiniz gibi yeni bir yapılandırma dosyası oluşturmuyor.

Eksik bir yapılandırma dosyasını nasıl geri yükleyebilirim?

    
sordu Isaiah 15.10.2011 01:42

7 cevap

123
  1. yapılandırma paketini hangi pakette yüklediğini öğrenin :

    $ dpkg -S unity-greeter.conf
    unity-greeter: /etc/lightdm/unity-greeter.conf
    

    Gördüğünüz gibi, paketin adı unity-greeter .

    /etc/pam.d gibi bir dizini sildiyseniz, dizin yolunu kullanarak ona eklenen her paketi listeleyebilirsiniz:

    $ dpkg -S /etc/pam.d
     login, sudo, libpam-runtime, cups-daemon, openssh-server, cron, policykit-1, at, samba-common, ppp, accountsservice, dovecot-core, passwd: /etc/pam.d
    
  2. Geri yüklemek istediğiniz yapılandırma dosyasını yeniden adlandırın (veya silin):

    sudo mv -i /etc/lightdm/unity-greeter.conf /etc/lightdm/unity-greeter.conf.bak 
    
  3. <package-name> 'yi paketin adıyla değiştirerek aşağıdaki komutu çalıştırın:

    sudo apt-get -o Dpkg::Options::="--force-confmiss" install --reinstall <package-name>
    

    Ve dizini geri yüklemek için:

    sudo apt-get -o Dpkg::Options::="--force-confmiss" install --reinstall $(dpkg -S /etc/some/directory | sed 's/,//g; s/:.*//')
    
  4. Her şey beklendiği gibi çalıştıysa, şu iletiyi almalısınız:

    Configuration file '/etc/lightdm/unity-greeter.conf', does not exist on system. 
    Installing new config file as you requested.
    
  5. PulseAudio yapılandırma dosyalarının tümünü yeniden yüklemeniz gerektiğinde pratik bir örnek:

    apt-cache pkgnames pulse |xargs -n 1 apt-get -o Dpkg::Options::="--force-confmiss" install --reinstall 
    
verilen cevap Isaiah 15.10.2011 20:43
20

Birçok durumda, varsayılan yapılandırma dosyası doğrudan bir paket tarafından sağlanır. Bu gibi durumlarda, belirli bir dosyayı paketten ayıklayabilir, böylece dosyayı kolayca kurtarabilirsiniz.

Bir paketin dosyayı sağlayıp sağlamadığını kontrol etmek için, dosyanın tam yolunda dpkg -S dosyasını çalıştırın. Örneğin:

$ dpkg -S /etc/ssh/sshd_config /etc/ssh/ssh_config /etc/sudoers
dpkg-query: no path found matching pattern /etc/ssh/sshd_config
openssh-client: /etc/ssh/ssh_config
sudo: /etc/sudoers

Bir paket tarafından sağlandı

Görebildiğimiz gibi, /etc/ssh/sshd_config doğrudan herhangi bir paket tarafından sağlanmaz, ancak diğer ikisi sırasıyla openssh-client ve sudo tarafından sağlanır. Yani, /etc/ssh/ssh_config 'i geri kazanmak isterseniz, önce paketi edinin:

apt-get download openssh-client

Şimdi, karşılaştırma yapmak ve karşılaştırmak isterseniz veya manuel olarak dosyayı% Co_de% yerine geçerli dizine göreli hedeflenen konuma veya istediğiniz yere doğrudan aktarabilirsiniz. Onları birleştirin ya da bir şey. Eski için:

dpkg-deb --fsys-tarfile openssh-client_*.deb | sudo tar x ./etc/ssh/ssh_config -C /

/ , -C / değerine geçtikten sonra çıkarılacak tar değerini belirtir; bu, hedef dosyanın değiştirileceği anlamına gelir. Bunu kaldırırsanız, / geçerli dizine çıkar, yani geçerli dizinde tar bulunur.

Bazı nedenlerden dolayı ./etc/ssh/ssh_config çalışmıyorsa, bunun yerine sudo kullanın. % Co_de% işlevi çalışmıyorsa, kurtarma moduna yeniden başlayın, pkexec pkexec olarak yerleştirin. Bu çalışmıyorsa ...

Bir paket tarafından oluşturuldu

/ hakkında ne var? Herhangi bir paket tarafından sağlanmıyor gibi görünüyor, nasıl göründü?

Bu durumda (ve diğer birçok örnekte, rw başka bir örnek), dosya bir paket sürdürme komut dosyası yükleme sırasında. Bu genellikle, yapılandırma dosyasının kullanıcılara sorulan yanıtlara bağlı olarak değiştirilmesi gerektiğinde yapılır. OpenSSH, örneğin, /etc/ssh/sshd_config öğesinin diğerlerinin yanı sıra daha yeni sürümlerde /etc/modules olarak değiştirilip değiştirilmeyeceğini sorar.

Bu gibi durumları tanımlamak için, sürdürücü komut dosyalarından kaçınmayı deneyin. Genellikle PermitRootLogin dosyasına bakmanız gerekir, ancak no ile hiç şansınız yoksa, postinst değerini de deneyin:

grep -l /etc/ssh/sshd_config /var/lib/dpkg/info/*.postinst

Bu durumda, şanslıyız:

$ grep /etc/ssh/sshd_config /var/lib/dpkg/info/*.postinst -l
/var/lib/dpkg/info/openssh-server.postinst

Yalnızca bir dosya eşleşti ve şansın olduğu gibi, bir default yapılandırma dosyası :

    cat <<EOF > /etc/ssh/sshd_config
# Package generated configuration file
# See the sshd_config(5) manpage for details

# What ports, IPs and protocols we listen for
Port 22
# Use these options to restrict which interfaces/protocols sshd will bind to
#ListenAddress ::
#ListenAddress 0.0.0.0
Protocol 2
# HostKeys for protocol version 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
#Privilege Separation is turned on for security
UsePrivilegeSeparation yes

# Lifetime and size of ephemeral version 1 server key
KeyRegenerationInterval 3600
ServerKeyBits 768

# Logging
SyslogFacility AUTH
LogLevel INFO

# Authentication:
LoginGraceTime 120
PermitRootLogin yes
StrictModes yes

RSAAuthentication yes
PubkeyAuthentication yes
#AuthorizedKeysFile %h/.ssh/authorized_keys

# Don't read the user's ~/.rhosts and ~/.shosts files
IgnoreRhosts yes
# For this to work you will also need host keys in /etc/ssh_known_hosts
RhostsRSAAuthentication no
# similar for protocol version 2
HostbasedAuthentication no
# Uncomment if you don't trust ~/.ssh/known_hosts for RhostsRSAAuthentication
#IgnoreUserKnownHosts yes

# To enable empty passwords, change to yes (NOT RECOMMENDED)
PermitEmptyPasswords no

# Change to yes to enable challenge-response passwords (beware issues with
# some PAM modules and threads)
ChallengeResponseAuthentication no

# Change to no to disable tunnelled clear text passwords
#PasswordAuthentication yes

# Kerberos options
#KerberosAuthentication no
#KerberosGetAFSToken no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes

# GSSAPI options
#GSSAPIAuthentication no
#GSSAPICleanupCredentials yes

X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
#UseLogin no

#MaxStartups 10:30:60
#Banner /etc/issue.net

# Allow client to pass locale environment variables
AcceptEnv LANG LC_*

Subsystem sftp /usr/lib/openssh/sftp-server

# Set this to 'yes' to enable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication.  Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# the setting of "PermitRootLogin without-password".
# If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.
UsePAM yes
EOF

Genelde, göreceğiniz şey budur (başka bir örnek, postinst 'dan preinst ):

cat > /path/to/the/file <<EOF
# default contents
EOF

Yani, bu kodu arayabilir ve içeriği doğrudan komut dosyasından alabilirsiniz.

Böyle bir senaryo yok mu? Yine de, herhangi bir şeyin isabet edip etmediğini görmek için ilgili paketlerin dosya listelerini karıştırmayı deneyebilirsiniz, ancak bu noktada, kolayca genellenebilir bir yöntem görmüyorum (bir chroot veya bir VM veya canlı bir USB gibi geçici ortamlarda yeniden kurulumdan kısa bir süre).

Uzun vadede yapılandırmanızı sürüm kontrolü altında tutun. Tuzuna değecek herhangi bir VCS, buradaki gününü kurtarabilir ve /etc/modules yardımcı programı görevini önemli ölçüde basitleştirir VCS'de kmod tutuluyor.

    
verilen cevap muru 22.05.2015 16:31
3

Ubuntu Forumları’ndaki bu ileti dizisine göre, terminalde aşağıdakileri çalıştırmak kadar basittir:

sudo dpkg-reconfigure lightdm
    
verilen cevap Nathan Osman 15.10.2011 01:45
2

Yapılandırma dosyasının sahibi olan paketi bulun:

dpkg --search /etc/path/to/config

şuna benzer bir şey çıkartacak:

unity-greeter: /etc/lightdm/unity-greeter.conf

Yani paket adı "birlik-selamlayıcı", paketi indirin:

apt-get download unity-greeter

sonra dosya sistemi ağaç verilerini tar dosyasına kopyalayın:

dpkg-deb --fsys-tarfile unity-greeter_version-0ubuntu1_amd64.deb > pkg.tar

Sonunda olmasını istediğiniz her yerde yalnızca tam yapılandırmayı ayıklayın:

tar -Oxf pkg.tar ./etc/lightdm/unity-greeter.conf |
sudo tee /etc/lightdm/unity-greeter.conf 
  • Arşivimizde ./etc/lightdm/unity-greeter.conf dosya adıdır.
  • /etc/lightdm/unity-greeter.conf depolanmak üzere gönderdiğim yerdir.

Ya da @Muru'nun önerdiği gibi, bunu tek bir astarda yapabiliriz:

dpkg-deb --fsys-tarfile unity-greeter_version-0ubuntu1_amd64.deb |
sudo tar -x -C / ./etc/lightdm/unity-greeter.conf
    
verilen cevap Ravexina 06.08.2017 22:56
1

Ubuntu 17.04'te aynı sorunu yaşadım. Yükleme, /usr/share/openssh/ öğesinden bir şablon kullanıyor. Rootlogin etkin olup olmadığını kontrol eder, bu seçeneği ayarlar ve /etc/ssh kopyalar. Bundan sonra bazı ucf ve ucfr çağrıları yapar (bunun ne için olduğunu bilmiyorum).

% /usr/share/openssh/sshd_config 'sini /etc/ssh/sshd_config ' ye kopyala:

sudo cp /usr/share/openssh/sshd_config /etc/ssh/sshd_config

Şimdi sshd_config 'nizi istediğiniz gibi ayarlayın.

    
verilen cevap user2162968 27.07.2017 14:49
0

Bu, tüm yapılandırma dosyalarını çalışmaz. % Co_de% için bkz. Nasıl geri yüklenir / yeniden oluşturun etc / nsswitch.conf dosyalar. Bu dosyayı /etc/nsswitch.conf ile yeniden oluşturmak mümkün görünmüyor.

    
verilen cevap Bram Geron 01.11.2017 17:35
-1

Dosyayı silin (geri alın) ve unity-greeter 'yi apt-get install --reinstall unity-greeter ile yeniden yükleyin.

    
verilen cevap RolandiXor 15.10.2011 05:54

Etiketlerdeki diğer soruları oku