天天看點

檔案互傳,使用者配置檔案和密碼配置檔案,使用者以及使用者組管理

與windows互傳檔案

如果我們要互傳檔案,先要安裝一個工具,lrzsz。rz是從windiws中下載下傳檔案到linux,sz是從linux中上傳檔案到windows的。

linux隻一個多使用者的作業系統,是以我們要對每個使用者賬号的作用要了解,因為這涉及到安全問題。           

首先我們先來了解和認識兩個檔案,/etc/passwd和/etc/shadow。

/etc/passwd。通常在Linux系統中,使用者的關鍵資訊被存放在系統的/etc/passwd檔案中。如果要檢視這個檔案,我們要輸入cat /etc、passwd。

[root@localhost ~]# cat /etc/passwd | head -3(| head -3這是一個管道指令)

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

從這裡我們可以看出一個賬戶的資訊,它被:分割成7段,每段都有不同的意義。

第一段:使用者名

第二段:使用者密碼,在以前的unix系統中,這裡确實是存放在這裡,但基于安全因素,後來就将其存放到 ‘/etc/shadow’ 中了,在這裡隻用一個 ‘x’ 代替。

第三段:這是使用者的辨別,也叫uid。root的辨別是0,前1~499号的辨別被系統保留,普通使用者的辨別是從500開始的,如果我們自定義一個普通使用者,那麼你會看到他的辨別号是大于或者等于500的。

第四段:這是使用者組的辨別,也叫gid,這個字段對應着etc/group中的一條記錄,與/etc/passwd基本相似。

第五段: 注釋說明,該字段沒有實際意義,通常記錄該使用者的一些屬性,例如姓名、電話、位址等等。不過,當你使用finger的功能時就會顯示這些資訊的.

第六段:使用者的家目錄。

第七段:shell, 使用者登入後要啟動一個程序,用來将使用者下達的指令傳給核心,這就是shell, 檢視/etc/passwd檔案,該字段中除了/bin/bash外還有/sbin/nologin比較多,它表示不允許該賬号登入。如果你想建立一個賬号不讓他登入,那麼就可以把該字段改成/sbin/nologin,預設是/bin/bash。

/etc/shadow。這是一個儲存使用者密碼的檔案,如果要檢視,我們要輸入cat /etc/shadow | head -3            

[root@localhost ~]# cat /etc/shadow | head -3

root:$6$/qUNx3Dm$oVq/XUaOftBgd4XxzCAAaahh3Za4.O.xJBjol1G0pX0.A0UQjEJFDkkh43F29WZUOMvJ75z/jGfE6bebpgQ1k/:17534:0:99999:7:::

bin::17110:0:99999:7:::

daemon::17110:0:99999:7:::

我們可以看出,它也是被:分割,一共有9個字段。

第二段:這才是真正的密碼,經過特殊加密,是以很長。

第三段: 上次更改密碼的日期,這個數字是這樣計算得來的,距離1970年1月1日到上次更改密碼的日期,例如上次更改密碼的日期為2012年1月1日,則這個值就是 ‘365 x (2012-1970) + (2012-1970)/4 + 1 = 15341’. 因為如果是閏年,則有366天

第四段:要經過多少天改密碼,如果是0,則不用更改。

第五段: 密碼多少天後到期。即在多少天内必須更改密碼,例如這裡設定成x,則x天内必須更改一次密碼,否則将不能登入系統,預設是99999,可以了解為永遠不需要改。

第六段: 密碼到期前的警告期限,若這個值設定成x,則表示當x天後密碼過期時,系統就發出警告告訴使用者,提醒使用者他的密碼将在x天後到期。

第七段: 賬号失效期限。你可以這樣了解,如果設定這個值為x,則表示:密碼已經到期,然而使用者并沒有在到期前修改密碼,那麼再過x天,則這個賬号就失效了,即鎖定了

第八段: 賬号的生命周期,跟第三段一樣,是按距離1970年1月1日多少天算的。它表示的含義是,賬号在這個日期前可以使用,到期後賬号廢棄

第九段: 作為保留用的,沒有什麼意義。

passwd是更改使用者密碼的檔案,如果在root下,我們可以直接輸入這個指令更改密碼           

[root@localhost ~]# passwd

更改使用者 root 的密碼 。

新的 密碼:

如果想更改其他使用者的密碼,則要則要passwd後面加上使用者名

[root@localhost ~]# passwd user1

更改使用者 user1 的密碼 。

更改完密碼我們可以發現在/etc/shadow下,user1這行中出現了一個很長的字元串,這就是我們新更改的密碼

[root@localhost ~]# tail -n5 /etc/shadow

chrony:!!:17514::::::

user1:$6$0DixvaM8$3Q/d2IFN8jOvyma9By8UZPkRNVLaqDj.AQwOTFaRxiRZ3d.JDv7dHh7QR9fnlUpiQT8ALuQP.461OzckySSLo.:17548:0:99999:7:::

user2:!!:17547:0:99999:7:::

user8:!!:17547:0:99999:7:::

user4:!!:17548:0:99999:7:::

如果沒有密碼,則是兩個!

[root@localhost ~]# head -n5 /etc/shadow

adm::17110:0:99999:7:::

lp::17110:0:99999:7:::

我們還發現,有的使用者 的密碼位是*号,這表示這個使用者的密碼是被鎖定的,不能登入,他的密碼是有問題的。

passwd -l這個指令是可以鎖定使用者的,usermod -L也可以鎖定使用者,如果想解鎖,指令是passwd -u,usermod -U。

我們也可以給使用者設定密碼,passwd --stdin

比如我們現在要給user2設定密碼

[root@localhost ~]# passwd --stdin user2

更改使用者 user2 的密碼 。

19860127

passwd:所有的身份驗證令牌已經成功更新。

這時我們發現隻要輸入一次就可以,不用驗證,而且是直接顯示,這會在以後shall腳本中使用。比如,echo “111222”| passwd --stdin user2

這裡講一個echo的參數,-e這時一個換行參數。

mkpasswd這是用來生成密碼的工具,首先我們來安裝這個工具包

[root@localhost ~]# yum install -y expect

然後輸入指令,就可以産生一個随機的密碼

[root@localhost ~]# mkpasswd

|br34BMxo

我們也可以自定義它的長度和密碼内的字元結構(包括特殊符号,數字等)

mkpasswd -l設定密碼長度,mkpasswd -s設定特殊符号,兩者可以一起用

[root@localhost ~]# mkpasswd -l 10 -s 4

H:7a',?4zJ

通常我們寫腳本的時候會用到這個,比如我們要建立100個使用者,生成100個密碼,而且密碼不能相同。然後存到一個文本文檔中。就會用到這個指令。

在搜尋passwd和shadow時我們會發現這樣一個現象           

[root@localhost ~]# ls /etc/passwd

passwd passwd-

[root@localhost ~]# ls /etc/shadow

shadow shadow-

[root@localhost ~]# ls /etc/gshadow

gshadow gshadow-

它們的後面都有一個帶-号的檔案,這些帶-号的檔案是系統自動幫我們拷貝的檔案,如果我們不小心删除,我們可以從這裡拷貝恢複。他們也是有差別的,如果我們沒來得及更新,那麼我們建立的使用者或者組就不會儲存在這裡了。

groupadd,這是增加組的指令。

[root@localhost ~]# groupadd grp1

[root@localhost ~]# tail -n1 /etc/group

grp1:x:1000:

這就是我們新增加的組,我們可以看到,這個新增的組的ID是1000,我們也可以給他自定義組ID,隻要在後面加參數 -g

[root@localhost ~]# groupadd -g 1002 grp4

grp4:x:1002:

這樣我們可以看出,新增的grp4的組ID就是1002。

既然我們能建立,那麼我們就能删除。輸入指令groupdel。

該指令沒有特殊選項,但有一種情況不能删除組:

[root@localhost ~]# groupdel user1

groupdel: cannot remove the primary group of user 'user1'

這是因為user1組中包含user1賬戶,隻有删除user1賬戶後才可以删除該組。

useradd,這是增加使用者的指令。

[root@localhost ~]# useradd user1

[root@localhost ~] tail -n1 /etc/passwd

user1:x:1001:1001::/home/user1:/bin/bash

[root@localhost ~]# useradd user2

[root@localhost ~]# tail -n2 /etc/passwd

user2:x:1002:1002::/home/user2:/bin/bash

我們也可以給他自定義uid和gid,在後面加參數-u和-g。

[root@localhost ~]# useradd -u 1008 -g 1002 user8

[root@localhost ~]# tail -n3 /etc/passwd

user8:x:1008:1002::/home/user8:/bin/bash

這樣在gup4的組中就有user2和user8這兩位使用者了。

我們還可以指定自定義使用者的家目錄,和指定的shall,指定家目錄的參數是-d,指定shall的參數是-s。

比如我們現在要建立一個使用者user4,家目錄設定為aming111,shall設定為/sbin/nologin

useradd -u 1006 -g 1002 -d /home/aming111 -s /sbin/nologin user4

然後我們查詢一下

[root@localhost ~]# tail -n5 /etc/passwd

chrony:x:998:996::/var/lib/chrony:/sbin/nologin

user4:x:1006:1002::/home/aming111:/sbin/nologin

這樣我們可以看到建立的user4這個使用者的家目錄和shall都是我們指定的了。

繼續閱讀