1.使用者管理:
相關的兩個配置檔案: /etc/passwd /etc/shadow
/etc/passwd 儲存使用者詳細資訊(掌握每一列代表的含義)
第一列 使用者名
第二列 密碼控位符,以 x 表示
第三列 uid
第四列 gid
第五列 使用者的描述資訊(姓名、辦公室、手機号等資訊)
第六列 使用者家目錄
第七列 使用者 shell,兩種 /bin/bash 使用者可登入 /sbin/nologin 使用者不可登入
/etc/shadow 儲存使用者密碼資訊(了解每一列代表的含義)
第一列 使用者名
第二列 加密後的密碼,三種加密格式:
$1 開頭 MD5加密
$5 開頭 SHA-256加密
$6 開頭 SHA-512加密
!! 表示使用者還未被設定密碼
* 表示使用者被鎖定
第三列 密碼更改時距1970年1月1日有多少天
第四列 表示要過多久才能修改密碼,0表示随時可以修改
第五列 密碼失效的時間預設 99999
第六列 密碼到期前提醒的時間
第七列 密碼到期後的鎖定時間,預設為空
第八列 賬号的生命周期,預設為空
第九列 保留字段
常用指令: useradd usermod userdel passwd
useradd lucy //添加 lucy 使用者
useradd –u 666 lucy //添加 lucy 使用者,并手動指定uid
useradd –g 666 lucy //添加 lucy 使用者,并手動指定 gid,前提是該 gid 已存在
useradd –G 667,668 lucy //手動指定附屬組,即将 lucy加入多個組中
useradd –d /home/lily lucy //手動指定使用者家目錄
useradd –M lucy //添加使用者 lucy,不建立其家目錄,此時在 /etc/passwd 中第六列仍有内容,但 /home 下不存在 lucy/目錄
如果此時 su – lucy ,可以成功切換,但會警告無法切換到使用者家目錄:
-bash-4.1$ 為其 shell 形式,而非 [lucy@localhost ~]$
如何解決這個問題:
[root@localhost ~]# mkdir /home/lucy
[root@localhost ~]# cp /etc/skel/.b*
[root@localhost~]# chown –R songwei:songwei /home/songwei
注: /etc/skel 目錄下為使用者登入初始化所需要的檔案,如 .bashrc 、 .bash_profile 和 .bash_logout。
useradd –s /sbin/nologinlucy //手動指定使用者 shell
usermod 修改使用者配置資訊,參數與添加使用者時的絕大多數相同,注意兩個有差別的參數:
usermod –L lucy //鎖定 lucy 使用者,使其不能登入
usermod –U lucy //解鎖 lucy 使用者
鎖定/解鎖使用者還有一種方式:
pass -l lucy //鎖定 lucy 使用者,使其不能登入
passwd -u lucy //解鎖 lucy 使用者
chfn lucy //修改使用者的描述資訊
passwd lucy //修改 lucy 使用者的密碼,需要重複輸入以确認
注:useradd 後的使用者在設定密碼前不能登入,即空密碼使用者不能登入,但可以在其他使用者登入以後使用 su 切換來登入。
如果在使用 passwd 指令設定密碼時不想重複輸入兩次,有如下幾種方法:
passwd --stdin lucy //或者
echo "shiyanmima" | passwd –stdin lucy //或者
echo –e "shiyanmima\nshiyanmima\n" | passwd lucy // \n 為Linux中的換行符, echo –e 參數可以解
//析特殊字元
passwd -d lucy //使用 -d 參數,删除 lucy 使用者的密碼
userdel 删除使用者,想要在删除使用者的同時删除使用者家目錄及郵箱位址,需要使用 –r 參數:
userdel lucy //删除使用者,不會删除使用者家目錄和郵箱位址(位于 /var/spool/mail下)
userdel –r lucy //删除使用者及其家目錄和郵箱位址
2.使用者組管理:
常用的兩個配置檔案: /etc/group /etc/gshadow
/etc/group 使用者組資訊
第一列 使用者組名稱
第二列 組密碼控位符
第三列 gid
第四列 附屬組
/etc/gshadow 使用者組密碼資訊,一般不去操作,作為了解
常用指令: groupadd groupdel groupmod
groupadd songwei //添加 songwei 組
groupadd –g 1000 songwei //添加 songwei 組,并手動指定gid
groupdel songwei //删除 songwei 組,如果其中有使用者,必須先清空,否則删除失敗
3. 切換登入使用者:
3.1 su 指令:
用于切換目前登入的使用者,直接使用不會切換到使用者家目錄,PATH變量也不會改變:
[root@localhost ~]# susongwei
[songwei@localhost root]#
如果想要徹底切換,添加 – 參數:
[root@localhost ~]# su – songwei
[songwei@localhost ~]#
使用–c 參數,可以以特定使用者的身份執行指令:(常用于腳本中)
// 以 songwei 使用者的身份執行 touch 指令
[root@localhost ~]# su –c “touch/tmp/songwei.log” songwei
[root@localhost ~]# ll /tmp/songwei.log
-rw-r--r--. 1 songwei songwei 0 Mar 2223:00 /tmp/songwei.log
3.2 sudo 指令:
sudo 的作用是讓一個使用者擁有其他使用者的權限(一般用于讓普通使用者擁有 root 權限)去執行一些指令,如何授予這種權限:
[root@localhost ~]# visudo
## Allow root to run anycommandsanywhere
root ALL=(ALL) ALL
songwei ALL=(root) NOPASSWD: /bin/ls //新添加的一行
解釋一下新添加的這一行的作用,第一列為指定的使用者,如果有多個使用者,以逗号隔開,ALL 代表以所有IP登入的使用者均可享受權限,=(root)代表執行指令時擁有哪個使用者的權限, /bin/ls 為執行的具體指令,如果有多條,以逗号隔開(這裡的指令必須寫絕對路徑)。其中,使用 NOPASSWD:可以讓使用者在執行 sudo ls 時不用輸入自己的密碼。
不僅可以為一個或多個使用者配置設定權限,也可以同時為一組使用者配置設定權限,組名前加 %:
%aming ALL=(root) /bin/ls
這樣就可以為使用者組為 aming 的使用者授予權限。
執行個體:
公司為安全起見,不允許遠端登入 root 使用者,即便輸入的 root 密碼是正确的,現在需要授予 songwei 和aming 兩個使用者可以在登入後切換到 root 使用者使用 root 權限,該如何做呢?
[root@localhost ~]# visudo
songwei, aming ALL=(root) NOPASSWD: /bin/su
[root@localhost ~]# su – songwei
[songwei@localhost ~]# sudo su –
[root@localhost ~]#
如此即可完美解決該問題。那麼,如何禁止 root 使用者遠端登入:
[root@localhost ~]# vim /etc/ssh/sshd_config
PermitRootLogin no //由 yes 修改為 no
儲存退出後,重新開機 sshd 服務即可:
service sshd restart
補充: