1. 程式人生 > >文件互傳,用戶配置文件和密碼配置文件,用戶以及用戶組管理

文件互傳,用戶配置文件和密碼配置文件,用戶以及用戶組管理

不同的 ssl 註釋 cal ger 生命周期 remove 安裝 aaa

與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
root:$6$/qUNx3Dm$oVq/XUaOftBgd4XxzCAAaahh3Za4.O.xJBjol1G0pX0.A0UQjEJFDkkh43F29WZUOMvJ75z/jGfE6bebpgQ1k/:17534:0:99999:7:::
bin::17110:0:99999:7:::
daemon:
:17110:0:99999:7:::
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
[root@localhost ~]# tail -n1 /etc/group
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
user1:x:1001:1001::/home/user1:/bin/bash
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
user1:x:1001:1001::/home/user1:/bin/bash
user2:x:1002:1002::/home/user2:/bin/bash
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
user1:x:1001:1001::/home/user1:/bin/bash
user2:x:1002:1002::/home/user2:/bin/bash
user8:x:1008:1002::/home/user8:/bin/bash
user4:x:1006:1002::/home/aming111:/sbin/nologin
這樣我們可以看到新建的user4這個用戶的家目錄和shall都是我們指定的了。

如果我們不想在創建用戶的時候創建家目錄,我們可以加參數-M
現在我們新建一個用戶user5
[root@localhost ~]# useradd -M user5
[root@localhost ~]# tail -n3 /etc/passwd
user8:x:1008:1002::/home/user8:/bin/bash
user4:x:1006:1002::/home/aming111:/sbin/nologin
user5:x:1009:1009::/home/user5:/bin/bash
然後我們查詢一下
[root@localhost ~]# ls /home
aming aming111 lin user1 user2 user8
我們在建立了user5的用戶,雖然離裏面出現了home的字符段,但是我們在查詢的時候卻沒有出現user5的家目錄,所以,只要我們不想建立用戶的家目錄,就加一個參數-M。

我們不僅可以增加用戶和組,也可以刪除用戶和組。只要把add改成del,就是userdel刪除用戶和groupdel刪除用戶組。
比如我們現在要刪除user8
[root@localhost ~]# tail -n3 /etc/passwd
user8:x:1008:1002::/home/user8:/bin/bash
user4:x:1006:1002::/home/aming111:/sbin/nologin
user5:x:1009:1009::/home/user5:/bin/bash
[root@localhost ~]# userdel user8
[root@localhost ~]# tail -n3 /etc/passwd
user2:x:1002:1002::/home/user2:/bin/bash
user4:x:1006:1002::/home/aming111:/sbin/nologin
user5:x:1009:1009::/home/user5:/bin/bash
通過查詢,user5已經被成功的刪除了。但是不能刪除用戶的家目錄,因為系統怕這個用戶的文件誤刪除,所以留給了管理員,如果管理員覺得這個家目錄沒用,那就可以刪除,我們也可以在刪除用戶的時候直接刪除家目錄,只要加參數-r,這就是刪除用戶的命令。

更改用戶屬性usermod,比如我們要改變一個用戶的uid
usermod -u 111 username
我們也可以改變一個組名
usermod -g (組名或者gid) username
我們也可以指定他的家目錄
usermod -d /home/XX username
也可以指定shall
usermod -s /sbin/nologin username
我們也可以指定他的擴展組
usermod -G

文件互傳,用戶配置文件和密碼配置文件,用戶以及用戶組管理