與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都是我們指定的了。