Em que momento o arquivo ~ / .bashrc é criado?

21

Por exemplo, se eu executasse o comando adduser test, o .bashrc é criado automaticamente após a criação do diretório inicial do usuário test? Se não for criado na criação do usuário, em que condições é criado?

Além disso, se eu adicionar um arquivo .bashrc ao diretório inicial de um usuário, ele será substituído pelo sistema operacional?

Desde já, obrigado.

Michael
fonte
2
Se você apenas tentasse, descobriria muito mais rápido do que perguntando aqui.
Stig Hemmer #

Respostas:

30

Na maioria dos casos, os arquivos iniciais do usuário (inclusive .bashrc) são criados quando o usuário é criado. São cópias dos arquivos armazenados no diretório 'esquelético', com o nome /etc/skel. Existem dois comandos principais:

  • useradd é o comando de backend, se você o usar diretamente (sem nenhuma opção), apenas um usuário do sistema (e seu grupo) será criado:

    $ sudo useradd new-user
    $ ls -la /home/new-user/
    ls: cannot access '/home/new-user/': No such file or directory
    
    • useraddcriará um diretório inicial e o preencherá com uma cópia /etc/skelse a -m --create-homeopção for fornecida. Obrigado por este comentário para @jwodder.

    • A opção -s --shellalterará o nome do shell de login do novo usuário. Não importa qual seja o shell de login do novo usuário, todo o conteúdo do diretório 'esquelético' /etc/skelserá preenchido no diretório inicial do novo usuário.

    • Um diretório 'esquelético' diferente é definido com a -k --create-homeopção

    • O arquivo de configuração deste comando é /etc/default/useradd.

  • adduseré um front-end amigável e interativo useradd. Este comando copiará os arquivos do diretório /etc/skeldo usuário $HOMEpor padrão:

    $ sudo adduser new-user
    Adding user `new-user' ...
    Adding new group `new-user' (1002) ...
    Adding new user `new-user' (1002) with group `new-user' ...
    Creating home directory `/home/new-user' ...
    Copying files from `/etc/skel' ...
    Enter new UNIX password:
    Retype new UNIX password:
    passwd: password updated successfully
    Changing the user information for new-user
    Enter the new value, or press ENTER for the default
            Full Name []: New User
            Room Number []:
            Work Phone []:
            Home Phone []:
            Other []:
    Is the information correct? [Y/n]
    
    $ ls -a /home/new-user/
    .   ..   .bash_logout   .bashrc   .config   examples.desktop   .profile   .Xdefaults
    
    • O arquivo de configuração deste comando é /etc/adduser.conf.

    • O valor padrão para shell de login do novo usuário é deteminated pela variável DSHELL=. Pode ser especificado também através da opção --shell. Não importa qual seja o shell de login do novo usuário, todo o conteúdo do diretório 'esquelético' /etc/skelserá preenchido no diretório inicial do novo usuário.

    • A SKEL=variável neste arquivo especifica o diretório padrão que contém os arquivos de usuário 'esqueléticos'.

    • A opção --no-create-homeforçará o comando addusera não criar um diretório inicial do usuário, respectivamente, o conteúdo do diretório 'esquelético' não será copiado.

    • Se chamado com um argumento de não opção e a --systemopção, adduserirá adicionar um usuário do sistema ... Um diretório inicial é criado pelas mesmas regras que para usuários normais. O novo usuário do sistema terá o shell /bin/false(a menos que seja substituído pela --shellopção) e os logins desabilitados. Arquivos de configuração esquelética não são copiados. ... a partir da página de manual.


Além disso, quando o usuário é criado com qualquer ferramenta da GUI como User Accounts, o resultado é idêntico ao do comando adduser.


Referências:

pa4080
fonte
2
useraddtambém criará um diretório inicial e o preencherá com uma cópia /etc/skelse a -mopção for fornecida.
Jwodder #
4
Seu segundo bloco de código ainda usa useraddno comando; isso deveria ser adduser?
David Z
2
Além disso, as contas de usuário fazem uso adduser, não é?
Gunnar Hjalmarsson