GNU/Linux >> Belajar Linux >  >> Linux

Mengapa nama pengguna Linux tidak boleh dimulai dengan angka?

Beberapa perintah (misalnya chown ) dapat menerima nama pengguna atau ID pengguna numerik, sehingga mengizinkan semua nama pengguna numerik akan merusaknya.

Aturan untuk mengizinkan nama yang dimulai dengan angka dan mengandung beberapa alfa mungkin dianggap tidak sepadan; sebaliknya hanya ada persyaratan untuk memulai dengan karakter alfa.

Edit:

Tampaknya dari tanggapan lain bahwa beberapa distro telah merusak batasan ini; dalam hal ini, menurut dokumentasi GNU Core Utils:

POSIX mengharuskan perintah ini terlebih dahulu mencoba menyelesaikan string yang ditentukan sebagai nama, dan hanya sekali yang gagal, lalu mencoba menafsirkannya sebagai ID.

$ useradd 1000   # on most systems this will fail with:
                 # useradd: invalid user name '1000'
$ mkdir /home/1000
$ chown -R 1000 /home/1000   # This will first try to map
    # to username "1000", but this may easily be misinterpreted.

Menambahkan pengguna bernama '0' hanya akan meminta masalah (UID 0 ==pengguna root). Namun, perhatikan bahwa argumen ID grup/pengguna dapat diawali dengan '+' untuk memaksa interpretasinya sebagai bilangan bulat.


ini adalah tes di ubuntu 14.04 menggunakan angka:

[email protected]:~# useradd 232
[email protected]:~# mkdir /home/232
[email protected]:~# chown 232.232 /home/232
[email protected]:~# passwd 232
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully
[email protected]:~# login
c2 login: 232
Password: 
Welcome to Ubuntu 14.04.4 LTS (GNU/Linux 4.4.0-22-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

 System information disabled due to load higher than 2.0

  Get cloud support with Ubuntu Advantage Cloud Guest:
    http://www.ubuntu.com/business/services/cloud

0 packages can be updated.
0 updates are security updates.



The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.


$ 
$ whoami
232

dan satu menggunakan unicode U+1F600 -

[email protected]:~# useradd 
[email protected]:~# mkdir /home/
[email protected]:~# chown . /home/
[email protected]:~# passwd 
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully
[email protected]:~# login
c2 login: 
Password: 
Welcome to Ubuntu 14.04.4 LTS (GNU/Linux 4.4.0-22-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

 System information disabled due to load higher than 2.0

  Get cloud support with Ubuntu Advantage Cloud Guest:
    http://www.ubuntu.com/business/services/cloud

0 packages can be updated.
0 updates are security updates.



The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.

$ whoami

Ini mungkin ide terburuk yang saya miliki:

[email protected]:~# useradd '&#%^()[email protected]~*?<>=|'
[email protected]:~# passwd '&#%^()[email protected]~*?<>=|'
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully
[email protected]:~# mkdir '/home/&#%^()[email protected]~*?<>=|'
[email protected]:~# chown '&#%^()[email protected]~*?<>=|.&#%^()[email protected]~*?<>=|' '/home/&#%^()[email protected]~*?<>=|'
[email protected]:~# login
c2 login: &#%^()[email protected]~*?<>=|     
Password: 
Welcome to Ubuntu 14.04.4 LTS (GNU/Linux 4.4.0-22-generic x86_64)
**** text removed ****
applicable law.

$ whoami
&#%^()[email protected]~*?<>=|

Jelas Anda dapat menambahkan pengguna seperti itu, meskipun saya tidak yakin ini adalah ide yang bagus dalam jangka panjang.


Nama pengguna *Nix biasanya berupa string sepanjang 32 karakter yang dibuat oleh utilitas useradd . Ini, seperti yang Anda katakan, adalah akibat langsung dari standar awal Unix (BSD secara teknis). Menurut Halaman Man FreeBSD passwd(5) :

Nama login tidak boleh diawali dengan tanda hubung (`-'), dan tidak boleh berisi karakter 8-bit, tab atau spasi, atau salah satu dari simbol berikut:`,:+&#%^()[email protected]~*? <>=|/"'. Simbol dolar (`$') hanya diperbolehkan sebagai karakter terakhir untuk digunakan dengan Samba. Tidak boleh ada bidang yang berisi titik dua (`:') karena ini telah digunakan secara historis untuk memisahkan bidang di pengguna basis data.

Sistem *Nix tertentu digunakan untuk membuang kesalahan yang tidak jelas saat disajikan dengan karakter khusus di nama pengguna, sehingga akhirnya, karakter khusus tersebut dilarang. Di sebagian besar sistem *Nix modern, relatif mudah untuk mengubah passwd /useradd utilitas untuk mendukung nama pengguna karakter khusus, tetapi kebanyakan orang ragu-ragu untuk mengubah hal yang tidak penting seperti itu, karena akan berdampak kecil dan akan menyebabkan ketidakcocokan mundur.

EDIT:
Seperti yang dikatakan Adonis, sebenarnya hal ini dapat dilakukan dalam distribusi Linux modern, namun ini tidak disarankan (terutama saat menghadapi program standar atau lama).


Linux
  1. Bagaimana Mengevaluasi String sebagai Angka di Bash

  2. Bisakah Anda mengembangkan aplikasi Linux dengan Xamarin?

  3. Pengeditan jarak jauh dengan editor lokal (Linux)

  1. Mainkan game matematika yang menyenangkan dengan perintah Linux

  2. Bagaimana saya bisa memindahkan file dengan xargs di Linux?

  3. Mengapa mv tidak dapat menangani keberadaan direktori dengan nama yang sama di tujuan?

  1. Mengapa saya tetap menggunakan xterm

  2. Mengapa saya jatuh cinta dengan Antergos Linux

  3. Mengapa Saya Bisa Masuk Dengan Kata Sandi Sebagian??