3.1 用戶配置文件和密碼配置文件html
3.2 用戶組管理linux
3.3 用戶管理shell
3.4 usermod命令vim
3.5 用戶密碼管理安全
3.6 mkpasswd命令app
3.7 su命令ssh
3.8 sudo命令ui
3.9 限制root遠程登陸加密
sudo高級配置http://www.jianshu.com/p/51338e41abb7spa
使用 chroot 監獄限制 SSH 用戶訪問指定目錄: https://linux.cn/article-8313-1.html
擴展
sudo與su比較 http://www.apelearn.com/bbs/thread-7467-1-1.html
sudo配置文件樣例 www.opensource.apple.com/source/sudo/sudo-16/sudo/sample.sudoers
sudo不錯的教程 http://www.jianshu.com/p/51338e41abb7
sudo -i 也能夠登陸到root嗎? http://www.apelearn.com/bbs/thread-6899-1-1.html
1、用戶配置文件和密碼配置文件
用戶配置文件:cat /etc/passwd
一行表明一個用戶,每一行用冒號分隔爲7段:
第一段:用戶名
第二段:早期爲用戶的密碼,後來由於安全問題將密碼保存在/etc/shadow文件裏
第三段:用戶的uid
第四段:用戶的gid
第五段:用戶的註釋描述信息,沒有實際做用
第六段:用戶的家目錄
第七段:用戶登陸的shell
密碼配置文件:cat /etc/shadow
head -n1 /etc/shadow; tail -n2 /etc/shadow 在一行中使用兩個命令,用 ;分號分割
跟/etc/passwd 對應,每一行一個用戶,用冒號分割爲九段
第一段:用戶名
第二段:用戶密碼
第三段:最近一次更改密碼距離1970年1月1曰總共多少天
第四段:表示多少天之後才能夠更改密碼,默認爲0不限制
第五段:表示多少天內必須更改密碼,不然密碼過時沒法登陸
第六段:警告,提示距離密碼過時還有幾天
第七段:帳號的失效期限
第八段:用戶距離1970年1月1曰多少天后過時
第九段:保留字段,沒有實際意義
2、用戶組管理
cat /etc/group
用戶組的配置文件分爲四段: 第一段:用戶組的名稱 第二段:用戶組的密碼,實際保存在/etc/gshadow文件中 第三段:用戶組的GID。 第四段:用戶組的成員。
cat /etc/gshadow 組密碼的配置文件 與/etc/shadow對應
/etc/gshadow用戶組的密碼配置文件
此文件與/etc/group文件中的行一一對應,也有四段:
第一段:用戶組名
第二段:加密碼後的密碼
第三段:組管理員(多個用,分隔)
第四段:組成員(多個用,分隔)
帶 - 號的文件是系統自動備份的文件
groupadd grp1 使用groupadd建立組grp1
tail -n1 /etc/group 查看最後一行的組
groupadd -g 1005 grp2 -g 在建立組grp2的時候,指定gid爲1005
修改用戶組:
groupmod 選項 組名 #用法和usermod相似 -g選項:#改變組的ID號 groupmod -g 1122 user2 #將用戶組user2的gid改成 1122
-n選項:改變用戶組組名
使用groupdel 刪掉組grp1 ,刪除組以前,這個組裏面不能有用戶
3、用戶管理
查看用戶gid和uid: id命令
id命令能夠査看用戶的UID, GID,和附加組的GID
id 不帶參數直接使用id命令是查看當前用戶, id userl #帶用戶名參數能夠查看指定用戶。 括號裏面的爲用戶名和組名
-u選項:只顯示用戶的uid -g選項:只顯示用戶的gid -G選項:只顯示用戶的附加組的gid -n選項:配合-u、-g、-G選項使用,只顯示用戶名,所屬組名,和附加組名。#-n只能配合任意一個選項
建立用戶user4時,指定uid爲1004指定user4所屬的組爲grp2:
useradd -u 1004 -g grp2 user4
-u選項:指定uid。root用戶的uid爲0 , CentOS7的普通用戶UID是從1000開始使用 -g選項:指定gid gid必須是已經存在的 -d選項:指定用戶的家目錄 : useradd -d /home/test2 testuser4 testuser4的家目錄爲 /home/test2 -s選項:指定用戶登錄的shell 通常不須要指定,指定不能登錄的用戶爲/sbin/nologin : useradd -s /sbin/nologin testuser5 -M選項:建立用戶的同時不建立家目錄。一個用戶沒有家目錄會出現不少問題,因此通常只在建立不可登錄的用戶時使用。
useradd -u 1007 -g grp2 -d /home/to/ -s /sbin/nologin user6 設置用戶uid爲1007,組爲grp2,使用-d指定家目錄爲/home/to/
-M在建立用戶的同時,不建立家目錄
uid是自增的,若是指定了uid爲1005,下一個會從1006開始,gid會根據uid增長
刪除用戶:
userdel + 用戶名 直接刪除用戶,不刪除家目錄
userdel -r 用戶名 刪除用戶而且把用戶的家目錄也刪除,使用-r
4、usermod命令
更改用戶屬性的命令
命令格式:usermod 選項 user_name #注:使用usermod命令至少須要一個選項。
usermod -u 2222 user1 把用戶user1的uid改成2222 -u選項:更改用戶的uid
tail -n2 /etc/passwd 查看passwd最後兩行user3的gid是2224,
usermod -g 2224 user1 使用-g把user1的gid更改爲2224 usermod -g user2 user1 也可使用-g 加user2 (組名) user1(用戶名),把用戶user1的gid改爲user2的2223 -g選項:更改用戶gid 可使用組名也能夠用gid
usermod -d /home/user2 user1 使用-d更改用戶user1的家目錄爲/home/user2 -d選項:更改用戶的家目錄,若是更改用戶的家目錄不存在,須要將用戶原有的家目錄重命名爲更改的家目錄。或者複製系統的家目錄模板到指定的路徑下
usermod -s /sbin/nologin user3 -s選項:更改用戶的shell,將 user3更改成不能登陸的shell
-G選項:擴展組,一個用戶能夠屬於多個組,可是gid只有一個,除了gid以外的都叫作擴展組。 給用戶指定多個組的格式: usermod -G usermod -G user1,user3 user1 user1(用戶名)
-L選項:鎖定用戶。 #注:鎖定用戶後,ROOT用戶可使用數su命令切換到該用戶。 #可是,該用戶沒法直接登陸,在普通用戶下也不能使用su命令登陸被鎖定的用戶。 #鎖定後的用戶在/etc/shadow文件中的密碼最前面加上了一個感嘆號。此時這個用戶就沒法登陸了。
-U選項:解鎖用戶 #將user2用戶解鎖: cat /etc/shadow |grep user2 #/etc/shadow文件中該用戶的密碼最前面的感嘆號已經不在了,這個用戶就能夠正常登陸了。
5、用戶密碼管理
使用 passwd user1 給user1修改密碼,會多一個加密的字符串,若是用戶沒有密碼是 兩個 !!,空密碼用戶不能登陸,*號,表示該用戶的密碼是被鎖定的,也不能登陸
passwd -l user1 使用 -l選項鎖定用戶,用戶鎖定後出現兩個!! passwd -u user1 使用-u選項解鎖用戶,兩個!!取消
usermod -L user1 使用 -L 選項也是鎖定用戶,配合usermod使用,用戶鎖定後,有一個!,只要有!號就沒法登陸 usermod -U user1 使用-U 解鎖用戶,配合usermod使用。
passwd --stdin user2 使用 --stdin 設置密碼:123456 -stdin選項:更改用戶密碼的另外一種方式,能夠echo password| passwd -stdin user_name 也能夠passwd -stdin user_name,而後輸入一個密碼,此方法會以明文顯示密碼
shell腳本中使用 |把前面命令的結果傳遞給後面的命令
echo "123456" | passwd --stdin user2 |管道符把前面命令的結果(123456)傳遞給後面的命令,直接更改用戶密碼
echo -e "abc123456\nnnn123456" | passwd user2 ******
-e 能夠在一行命令中出現換行符 \n 換行
6、mkpasswd命令 :
make password 能夠生成隨機的字符串,能夠當作密碼使用
使用前先安裝:yum install -y expect mkpasswd 不帶選項默認生成9位的隨機字符串。 mkpasswd -l 12 生成12位隨機字符串 mkpasswd -l 12 -s 3 -s 生成的字符串有三個特殊字符 mkpasswd -l 12 -s 0 生成的字符串沒有特殊字符 ,0個
7、su命令 切換用戶
su - user1 切換到用戶user1 使用 - 能夠完全切換到user1用戶
su - -c "touch /tmp/uu.txt" user1 -c選項:使用指定用戶執行一條命令,用user1用戶的身份去執行touch .tmp/uu.txt文件的組根據用戶的主組來決定
8、sudo命令
sudo:受權命令:
sudo命令用來以其餘身份來執行命令,預設的身份爲root。 在/etc/sudoers中設置了可執行sudo指令的用戶。若其它未經受權的用戶企圖使用sudo,則會發岀警告的郵件給管理員。 用戶使用sudo時,必須先輸入密碼,以後有5分鐘的有效期限,超過時限則必須從新輸入密碼。 sudo的配置文件: /etc/sudoers 也可使用visudo訪問 /etc/sudoers文件爲sudo的配置文件,能夠設置用戶能以什麼身份執行哪些命令 visudo命令: 使用visudo命令能夠編輯配置sudoers文件,保存時會自動檢查是否有語法錯誤
執行visudo命令後,找到:
而後在找到的內容下面添加如下內容:
添加這一行的意思是user1用戶能夠在全部終端上以root權限運行全部命令
編輯完成後,保存退出,切換到user1用戶,看看是否能夠用sudo命令執行一些root用戶才能夠執行的命令,
sudo /usr/bin/ls /root/ 須要輸入密碼才能夠
寫成絕對路徑/usr/bin/ls,能夠用which查看
sudoers文件配置格式說明:
配置格式:用戶名 ALL=(ALL) [NOPASSWD:] Command
用戶名:授予哪一個用戶或用戶別名(多個用戶創建一個別名,User_Alias)
ALL=(ALL):其中等號左邊的ALL表示主機IP或者主機名,通常都爲All,等號右邊的ALL爲前面的用戶名將授予那個用戶的權限,ALL表示root或者說是全部用戶。
NOPASSWD:添加這個字符串後,用戶使用sudo受權的時候不需輸入用戶密碼。
Command:表示什麼命令可使用sudo受權。命令必須以絕對路徑表示。多個命令使用逗號隔開。當Command是ALL 的時候,表示全部命令均可以使用sudo受權。還能夠配置命令組別名。
編輯配置文件visudo給命令加別名:Cmnd_Alias USER1_CMD=/usr/bin/ls, /usr/bin/mv
在上面定義別名的名稱爲USER1_CMD
在下面使用別名名稱USER1_CMD,便可使用別名中的命令
9、限制root遠程登陸
生產環境中,咱們爲了安全起見,是應該禁止root用戶遠程登陸的。若是有需求要用到root權限,能夠用sudo設置,受權給普通用戶
限制root遠程登錄後,只有使用普通用戶登錄後,再使用su-切換到root,前提是必須知道root用戶的密碼。還有一個辦法就是經過sudo受權su命令,讓su命令不須要密碼就能夠切換到root用戶。在visudo裏面添加如下內容:
給幾個用戶設置別名,名稱爲USERS,User_Alias USERS = user1, user2, user3
給用戶設置別名:USERS
並在使用/usr/bin/su命令時 不須要輸入密碼
先切換到user1,使用sudo su - root 切換到root,沒有使用密碼
限制root遠程登錄:
vim /etc/ssh/sshd_config
去掉PermitRootLogin前的 # 號 把yes改爲no,若是是yes即容許root用戶遠程登錄 而後保存退出,重啓sshd服務:systemctl restart sshd.service 設置完成,root用戶退出後,沒法遠程登錄
能夠先登錄普通用戶,根據在配置文件中的設置,在使用sudo su - root 時不須要使用密碼,來實現登錄root 用戶