前段時間由于個人原因長時間沒有更新,后面會繼續更新的。這都是我在學習linux時做的筆記,寫在這里方便大家也是方便自己。
用戶管理相關文件
- /etc/passwd
- /etc/group
- /etc/shadow
- /etc/gshadow
/etc/passwd文件格式:
root:x:0:0:root:/root:/bin/bash
1. 用戶名
2. 用戶的密碼占位符
3. UID
4. GID
5. 注釋信息
6. 用戶家目錄
7. 用戶默認的shell
/etc/group 文件格式:
www:x:1002:
1. 組名
2. 組密碼占位符
3. GID
4. 以此組為其附加組的用戶的用戶名列表,如果有多個用戶可以用逗號隔開
/etc/shadow文件格式:
www:!!:15836:0:99999:7:::
zhou:$1$zNXbcLE7$ANbOzBEBzSGWD.wy21.b31:16041:0:99999:7:::
1. 用戶的登陸名;
2. 加密過的密碼,如果為!!則表示此用戶已禁用;
加密方法是md5(Message Degist 消息摘要),這是一個單向加密算法。
單向加密的特點:
2.1 定長輸出 128bit。不管源數據多長,加密后的密文都一樣長;
2.2 雪崩效應,即:改變了一點,加密后的結果都不一樣;
2.3 源文一樣,加密后的密文都一樣;
常見的單向加密算法:sha1 = secure hash algorithm 安全的hash算法;
$1$zNXbcLE7$ANbOzBEBzSGWD.wy21.b31
第1和第2個$之間的那個”1”表示:加密的方法是md5;
第2和第3個$之間的那串字符表示:系統在給密碼加密的時候所添加的“鹽”,是為了防止相同的密碼加密后的密文一樣,造成信息的泄露,這一點是利用了md5的雪崩效應;
第3個$后面的字符串就是密碼+“鹽”后的密文;
3. 記錄從1970年1月1日開始到你最近一次修改密碼之間所經過的天數;也就是密碼的最近修改時間;
4. 密碼最短使用期限:單位天數,默認為0,表示不限制;
5. 密碼最長使用期限:單位天數,默認是99999,表示可以永久有效;
6. 在密碼過期N天之前,向用戶發出警告;默認是7天;
用戶帳號的非活動期,在此期間,用戶登陸后第一件事,就是修改自己的密碼;當錯過此時間后,此帳號會被禁用。只有找root來啟用;
7. 用戶帳號的有效期限;
8. 最后一段做保留;
創建用戶
useradd|adduser [options] username
/etc/default/useradd 該文件用來初始化一些參數的值。比如默認的shell,默認的家目錄的位置等;
/etc/skel/ 該目錄中的文件就是在創建新用戶時的模板文件,當創建好一個用戶時,就會把該目錄下的文件CP到該用戶的家目錄下面,一般該目錄都是隱藏的文件;
/etc/login.defs 該文件指定了用戶的UID和GID的最小值500和最大值60000,默認添加用戶的時候就從最小值開始;
-c 表示為當前要添加的用戶寫個注釋信息;
-u 表示指定用戶的UID;
-g 表示指定用戶的GID;
-G 表示指定用戶的附加組;
-d 表示指定用戶的家目錄位置;
-M 表示不為用戶創建家目錄;
-s 表示指定用戶的默認shell;選項都在/etc/shells中
-e 指定用戶的過期日期,格式MM/DD/YYYY
-o 表示可以創建一個與已知的UID相同的用戶,例如# useradd –o –u 0 xfzhou 表示創建了一個uid為0的xfzhou用戶,當然了這個用戶也是root。在Linux中是根據UID來識別用戶的級別的;
-r 創建一個程序用戶,UID范圍是 1-499,這些用戶是不能登陸系統的;
當用戶創建完成后,該用戶由于沒有密碼,所以是不能直接登陸系統的。可以先由root給該用戶先設置個初始密碼。當用戶登陸后就可以自己來改密碼了;
#passwd username
#passwd //不寫用戶名就是給當前用戶改密碼;
passwd –l 鎖定一個用戶
passwd –u 解鎖用戶
passwd –stdin < passwdfile
創建組:
groupadd [options] groupname
# groupadd -g num group1 創建組的同是為組設置gid
gpasswd命令:
gpasswd -a user1 group1 //把用戶user1添加到group1中去。
gpasswd -d user2 group2 //把user2從group2組中刪除;
gpasswd -M user1 user2 user3 group1 一次性把多個用戶添加到指定的組中;
查看用戶信息:
# id [options].. username
-u 顯示指定用戶的UID
-g 顯示用戶的GID
-G 顯示用戶附加組
-n 顯示用戶的用戶名
[root@Nginx ~]# id -u root
0
[root@Nginx ~]# id -g root
0
[root@Nginx ~]# id -G root
0 1 2 3 4 6 10
[root@Nginx ~]# id -G root -n
root bin daemon sys adm disk wheel
[root@Nginx ~]#
# finger username //user information lookup program
[root@Nginx /]# finger root
Login: root Name: root
Directory: /root Shell: /bin/bash
On since 一 12月 2 21:10 (CST) on pts/0 from 192.168.10.254
On since 一 12月 2 22:12 (CST) on pts/1 from 192.168.10.254
1 hour 35 minutes idle
New mail received 一 12月 2 22:19 2013 (CST)
Unread since 六 5月 11 14:07 2013 (CST)
No Plan.
[root@Nginx /]#
# who
[root@Nginx /]# who
root pts/0 2013-12-02 21:10 (192.168.10.254)
root pts/1 2013-12-02 22:12 (192.168.10.254)
[root@Nginx /]#
# w
[root@Nginx /]# w
23:49:47 up 2:42, 2 users, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.10.254 21:10 0.00s 0.48s 0.01s w
root pts/1 192.168.10.254 22:12 1:37m 0.06s 0.04s man useradd
[root@Nginx /]#
# whoami
[root@Nginx /]# whoami
root
[root@Nginx /]#
修改用戶屬性:
usermod
chage
chfn
chsh
chsh username 更改用戶的shell和passwd的用法有點像
chfn username 修改用戶的注釋信息。
usermod [options] username
-u 更改用戶的UID
-g 更改用戶的GID
-G 更改用戶的附加組,如果只有“-G”則是更換用戶的附加組。如果想給用戶增加一個附加組的話,可以使用“-G number -a”,加上“-a” 其實就是Append的意思,這樣就不會把原來的覆蓋掉;
-c 修改用戶的注釋信息;
-s 修改用戶的默認shell
-d 更改用戶的家目錄位置,要配全-m來使用即:”usermod –d /path/dir –m username”,-m:表示移動用戶的家目錄,因為用戶的家目錄下面還有可能有其他的文件;
-l 更改用戶的登陸名;
-L 鎖定用戶
-U 解鎖用戶
刪除用戶:
userdel [options] username
-r 表示在刪除用戶的時候同時把用戶的家目錄也刪除。默認是不刪除用戶的家目錄的。是為了能夠再找回用戶的資料;
創建用戶組:
groupadd [options] groupname
-g 指定組id
-r 創建系統組 1-499
修改用戶組信息:
groupmod [options] groupname
-g GID
-n 修改組名稱
刪除組:
groupdel groupname
給組加密碼:
在切換基本組的時候,需要輸入組的密碼;
netgrp grouname //會提示輸入密碼;
gpasswd -a USER GROUP //將用戶USER加入到GROUP組中,注意,這里是附加組;
gpasswd –d USER GROUP //將用戶USER從GROUP組中移除;也是附加組;
gpasswd –A USER1,USER2.... GROUP
gpasswd –M USER1,USER2.... GROUP //這兩個都是一次性向GROUP中添加多個用戶;
用戶切換命令:
su - switch user
su USERNAME //非登陸式切換;
su – USERNAME //登陸式切換;
su –l USERNAME //登陸式切換;
su – USERNAME –c ‘command’ 切換到指定用戶后,以用戶的shell執行command
su USERNAME -c ‘command’
- 文件權限管理:
Linux權限和八進制的對應關系:
Linux權限 |
二進制 |
八進制 |
--- |
000 |
0 |
--x |
001 |
1 |
-w- |
010 |
2 |
-wx |
011 |
3 |
r-- |
100 |
4 |
r-x |
101 |
5 |
rw- |
110 |
6 |
rwx |
111 |
7 |
例如:rwxr-xr-x 755
第一個3位對應 文件的屬主的權限;用u表示文件的屬主;
第二個3位對應 文件屬組的權限;用g表示文件屬組
第三個3位對應 其他人的權限;用o表示其他人;
用a表示所有人;
修改文件的權限:
chmod [options] perm file..
perm的指定方法:
chmod 777 /tmp/test.txt
chmod u=rwx,g=rwx /tmp/test.txt
chmod g=w /tmp/test.txt //注意這個g=w會直接覆蓋掉以前的權限;如果要想在原有的權限上增加一個權限,應該使用g+rwx,如果要取消用戶的某位的權限則要使用-rwx;
chmod g+x,o-rw /tmp/test.txt
chmod a-w /tmp/test.txt
在修改目錄的權限的時候,可以使用-R 來對目錄下的文件的權限也進行修改;
chmod –R 775 /tmp/test
在文件的權限中還有三個特殊的權限:SUID、SGID和t(粘滯位)
SUID、SGID通常叫作SET位權限,多用于對可執行腳本或程序來設置,例如/usr/bin/passwd 它就是被設置了SUID的程序;
SUID表示:對屬主添加SET位權限;SGID表示:對屬組設置SET位權限;當某個文件被設置了SUID或SGID后,任何用戶在執行該文件的時候,都會獲得該文件對應的屬主或屬組身份所擁有的權限!要注意的是:SUID、SGID只能對文件的屬主和屬組來設置;
SUID 對應八進制中的4,SGID對應八進制中的2;這兩個都可以使用”s”來表示;
方法:chmod u+s,g+s filename
chmod 4777 filename
chmod 6777 filename2
當一個文件被設置了SET位權限后,其對應的x就會變成”s”,如果該文件原本不具有執行權限,則會變成”S”
t(粘滯位):該權限一般用在一個開放的目錄中;在一個開放的目錄,會有很多個用戶的文件,每個用戶對這個開放的目錄都具有寫權限,所以對這個開放的目錄設置t權限可以防止,某個用戶刪除不屬于他的文件;注意粘滯位權限通常只對目錄設置,并且只能設置在權限的第三個3位上,也就是其他人的權限位上;t對應八進制中的1。
方法:
chmod o+t filename
chmod 1777 filename
改變文件的屬主和屬組:
chown [options] filename
chown USERNAME:GROUPNAME filename
chown –R USERNAME filename
chown –R .GROUPNAME filename
chgrp –R GROUPNAME filename
還有幾個特殊的權限:
chattr {+|-}{i|a} filename
如果是+i 則是鎖住文件的i節點,這樣所有用戶(包括root)都無法刪除和修改該文件。使用ls –lh只能看到正常的文件屬性。這時如果你有權限,但是卻刪除不了的時候,你就要檢查下文件的特殊權限了,使用lsattr來查看;
同樣的,chattr +a file 則是使用該文件只能以追加的方式向里面添加內容,不能直接使用其他文本編輯器打開添加;同樣所有的用戶也包括root是無法刪除的,這種屬性通常會用在日志文件上;
- 顏色
33 顏色控制符;
[3 設置字體顏色;
1~7 表示7種顏色;
[4 表示對背景色設置;
1~7 單獨數字表示對字體的顯示進行控制;5是閃爍;
上面的這幾個可以疊加在一起,之間用分號隔開:
33[0m 表示顏色控制結束;如果最后忘記加了則,以后你所輸入的字符都會是這個顏色;不過可以使用reset來重置下終端;
例如:
[root@Nginx ~]# echo -e "33[31m Bob.Zhou33[0m"
Bob.Zhou
[root@Nginx ~]# echo -e "33[5;31m Bob.Zhou33[0m"
Bob.Zhou //這個應該是閃爍的!
[root@Nginx ~]#