Linux使用者和組管理命令
阿新 • • 發佈:2022-04-10
使用者管理命令
- useradd
- 作用:建立新的Linux使用者
- 格式:
useradd [OPTION]... USERNAME
- 常見選項:
-u UID -o 配合-u 選項,不檢查UID的唯一性 -g GID 指明使用者所屬基本組,可為組名,也可以GID -c "COMMENT" 使用者的註釋資訊 -d HOME_DIR 以指定的路徑(不存在)為家目錄 -s SHELL 指明使用者的預設shell程式,可用列表在/etc/shells檔案中 -G GROUP1[,GROUP2,...] 為使用者指明附加組,組須事先存在 -N 不建立私用組做主組,使用users組做主組 -r 建立系統使用者 CentOS 6之前: ID<500,CentOS7 以後: ID<1000 -m 建立家目錄,用於系統使用者 -M 不建立家目錄,用於非系統使用者 -p 指定加密的密碼
- 範例:
useradd -r -u 48 -g apache -s /sbin/nologin -d /var/www -c "Apache" apache
- useradd命令的預設值由/etc/default/useradd定義
[root@centos8 ~]#cat /etc/default/useradd # useradd defaults file GROUP=100 HOME=/home INACTIVE=-1 #對應/etc/shadow檔案第7列,即使用者密碼過期的寬限期 EXPIRE= #對應/etc/shadow檔案第8列,即使用者帳號的有效期 SHELL=/bin/bash SKEL=/etc/skel CREATE_MAIL_SPOOL=yes
- 顯示並更改預設設定
useradd -D useradd –D -s SHELL useradd –D –b BASE_DIR useradd –D –g GROUP
- 新建使用者的相關檔案
/etc/default/useradd /etc/skel/* #系統會將該目錄下的檔案拷貝到新建使用者的家目錄 /etc/login.defs
- usermod
- 作用:修改使用者屬性
- 格式:
usermod [OPTION]... USERNAME
- 常見選項:
-u UID: 新UID -g GID: 新主組 -G GROUP1[,GROUP2,...[,GROUPN]]]:新附加組,原來的附加組將會被覆蓋;若保留原有,則要同時使用-a選項 -s SHELL:新的預設SHELL -c 'COMMENT':新的註釋資訊 -d HOME: 新家目錄不會自動建立;若要建立新家目錄並移動原家資料,同時使用-m選項 -l login_name: 新的名字 -L: lock指定使用者,在/etc/shadow 密碼欄的增加 ! -U: unlock指定使用者,將 /etc/shadow 密碼欄的 ! 拿掉 -e YYYY-MM-DD: 指明使用者賬號過期日期 -f INACTIVE: 設定非活動期限,即寬限期
- userdel
- 作用:刪除Linux使用者
- 格式:
userdel [OPTION]... USERNAME
- 常見選項:
-f, --force 強制刪除使用者 -r, --remove 刪除使用者家目錄和郵箱
- 範例:強制刪除使用者和資料
[root@centos8 ~]#useradd test [root@centos8 ~]#id test uid=1001(test) gid=1001(test) groups=1001(test) #在另一終端用test登入 [root@centos8 ~]#su - test [test@centos8 ~]$ #刪除正在登入的使用者失敗 [root@centos8 ~]#userdel -r test userdel: user test is currently used by process 29909 [root@centos8 ~]#id test uid=1001(test) gid=1001(test) groups=1001(test) #強制刪除使用者 [root@centos8 ~]#userdel -rf test userdel: user test is currently used by process 29909 [root@centos8 ~]#id test id: ‘test’: no such user
組賬號管理命令
-
groupadd
- 作用:建立組
- 格式:
groupadd [OPTION]... group_name
- 常見選項:
-g GID 指明GID號;[GID_MIN, GID_MAX] -r 建立系統組,CentOS 6之前: ID<500,CentOS 7以後: ID<1000
- 範例:
groupadd -g 48 -r apache
-
groupmod
- 作用:修改組屬性
- 格式:
groupmod [OPTION]... GROUP
- 常見選項
-n group_name: 新名字 -g GID: 新的GID
-
groupdel
- 作用:刪除組
- 格式:
groupdel [options] GROUP
- 常見選項:
-f, --force 強制刪除,即使是使用者的主組也強制刪除組,但會導致無主組的使用者不可用無法登入
示例
-
請總結描述使用者和組管理類命令的使用方法並完成以下練習:
(1)、建立組distro,其GID為2019; [root@centos8 ~]# groupadd -g 2019 distro [root@centos8 ~]# getent group distro #檢視修改結果 distro:x:2019: (2)、建立使用者mandriva, 其ID號為1005;基本組為distro; [root@centos8 ~]# useradd -u 1005 -g distro mandriva [root@centos8 ~]# id mandriva #檢視修改結果 uid=1005(mandriva) gid=2019(distro) groups=2019(distro) (3)、建立使用者mageia,其ID號為1100,家目錄為/home/linux; [root@centos8 ~]# useradd -u 1100 -d /home/linux mageia [root@centos8 ~]# id mageia #檢視uid uid=1100(mageia) gid=1100(mageia) groups=1100(mageia) [root@centos8 ~]# getent passwd mageia #檢視家目錄 mageia:x:1100:1100::/home/linux:/bin/bash (4)、給使用者mageia新增密碼,密碼為mageedu,並設定使用者密碼7天后過期 [root@centos8 ~]# echo 'mageedu' | passwd mageia --stdin #修改密碼 Changing password for user mageia. passwd: all authentication tokens updated successfully. [root@centos8 ~]# chage -E `date +%F -d '7 days'` mageia #修改賬戶過期時間 [root@centos8 ~]# chage -l mageia #檢視賬戶資訊 Last password change : Apr 10, 2022 Password expires : never Password inactive : never Account expires : Apr 17, 2022 #賬戶過期時間 Minimum number of days between password change : 0 Maximum number of days between password change : 99999 Number of days of warning before password expires : 7 [root@centos8 ~]# [root@centos8 ~]# date +%F #當前系統時間 2022-04-10 (5)、刪除mandriva,但保留其家目錄; [root@centos8 ~]# userdel mandriva #刪除使用者(預設保留家目錄) [root@centos8 ~]# ls /home/ | grep mandriva #家目錄仍存在 mandriva (6)、建立使用者slackware,其ID號為2002,基本組為distro,附加組peguin; [root@centos8 ~]# groupadd peguin #建立組 [root@centos8 ~]# useradd slackware -u 2002 -g distro -G peguin #建立使用者並指定基本組和附加組 [root@centos8 ~]# id slackware #檢視結果 uid=2002(slackware) gid=2019(distro) groups=2019(distro),2020(peguin) (7)、修改slackware的預設shell為/bin/tcsh; [root@centos8 ~]# usermod -s /bin/tcsh slackware [root@centos8 ~]# getent passwd slackware slackware:x:2002:2019::/home/slackware:/bin/tcsh (8)、為使用者slackware新增附加組admins,並設定不可登陸。 [root@centos8 ~]# groupadd admins #建立組 [root@centos8 ~]# usermod -s /bin/nologin -G admins slackware [root@centos8 ~]# getent passwd slackware #檢視賬號資訊 slackware:x:2002:2019::/home/slackware:/bin/nologin [root@centos8 ~]# su salckware #使用者不可登入 su: user salckware does not exist
-
建立使用者user1、user2、user3。在/data/下建立目錄test
[root@centos8 ~]# useradd user1; useradd user2; useradd user3 #新增使用者 (1)、目錄/data/test屬主、屬組為user1 [root@centos8 ~]# mkdir /data/test #建立目錄 [root@centos8 ~]# chown user1.user1 /data/test/ #修改屬主和屬組 [root@centos8 ~]# ll -d /data/test/ #檢視結果 drwxr-xr-x. 2 user1 user1 6 Apr 10 14:33 /data/test/ (2)、在目錄屬主、屬組不變的情況下,user2對檔案有讀寫許可權 [root@centos8 ~]# ll -d /data/test/ #觀察發現,/data/test目錄其他人許可權為r-x,因此user2預設可以檢視並修改該目錄下的檔案 drwxr-xr-x. 2 user1 user1 6 Apr 10 14:33 /data/test (3)、user1在/data/test目錄下建立檔案a1.sh, a2.sh, a3.sh, a4.sh,設定所有使用者都不可刪除1.sh,2.sh檔案、除了user1及root之外,所有使用者都不可刪除a3.sh, a4.sh [root@centos8 ~]# chattr +i /data/test/a{1,2}.sh #新增特殊許可權i(非檔案所有者,不可以刪除對應的檔案) [root@centos8 ~]# lsattr /data/test/a{1,2}.sh #檢視修改結果 ----i--------------- /data/test/a1.sh ----i--------------- /data/test/a2.sh [root@centos8 ~]# ll /data/test/a{1,2}.sh 檢視檔案屬性 -rw-r--r--. 1 root root 0 Apr 10 14:43 /data/test/a1.sh -rw-r--r--. 1 root root 0 Apr 10 14:43 /data/test/a2.sh [root@centos8 ~]# rm -rf /data/test/a{1,2}.sh #檔案屬主和陣列均為root,但是root不可以刪除目標檔案 rm: cannot remove '/data/test/a1.sh': Operation not permitted rm: cannot remove '/data/test/a2.sh': Operation not permitted [root@centos8 ~]# ll -d /data/test/a{3,4}.sh #檢視檔案屬性 -rw-r--r--. 1 root root 0 Apr 10 14:43 /data/test/a3.sh -rw-r--r--. 1 root root 0 Apr 10 14:43 /data/test/a4.sh [root@centos8 ~]# chmod o+t /data/test/a{3,4}.sh #新增特殊許可權sticky [root@centos8 ~]# ll -d /data/test/a{3,4}.sh 檢視檔案特殊許可權(顯示為 T ) -rw-r--r-T. 1 root root 0 Apr 10 14:43 /data/test/a3.sh -rw-r--r-T. 1 root root 0 Apr 10 14:43 /data/test/a4.sh [user3@centos8 root]$ exit #切換為root使用者 [root@centos8 ~]# chown user1 /data/test/a{3,4}.sh #更改檔案所有者為user1 [root@centos8 ~]# ll -d /data/test/a{3,4}.sh #檢視檔案屬性 -rw-r--r-T. 1 user1 root 0 Apr 10 14:43 /data/test/a3.sh -rw-r--r-T. 1 user1 root 0 Apr 10 14:43 /data/test/a4.sh [root@centos8 ~]# su user3 #切換任一使用者(其他人) [user3@centos8 root]$ rm -rf /data/test/a3.sh #沒有刪除許可權 rm: cannot remove '/data/test/a3.sh': Permission denied [root@centos8 ~]# su user1 #切換使用者為user1(檔案所有者) [user1@centos8 root]$ rm -rf /data/test/a3.sh #可以刪除目標檔案 [user1@centos8 root]$ exit #切換root使用者 [root@centos8 ~]# rm -rf /data/test/a4.sh #可以刪除目標檔案 (4)、user3增加附加組user1,同時要求user1不能訪問/data/test目錄及其下所有檔案 [root@centos8 ~]# usermod -G user1 user3 #新增附加組 [root@centos8 ~]# id user3 uid=2005(user3) gid=2005(user3) groups=2005(user3),2003(user1) [root@centos8 ~]# ll -d /data/test/ 檢視目錄屬性 d---------+ 2 user1 user1 32 Apr 10 15:06 /data/test/ [root@centos8 ~]# chown root /data/test/ #更改目錄所有者為root [root@centos8 ~]# ll -d /data/test/ #檢視更改結果 d---------+ 2 root user1 32 Apr 10 15:06 /data/test/ [root@centos8 ~]# su user1 #切換使用者為user1 [user1@centos8 root]$ ls /data/test/ #user1無檢視許可權 ls: cannot open directory '/data/test/': Permission denied [user1@centos8 root]$ vim /data/test/ #user1無編輯許可權 bash: vim: command not found [user1@centos8 root]$ cd /data/test/ #user1無進入目錄的許可權 bash: cd: /data/test/: Permission denied [user1@centos8 root]$ [user1@centos8 root]$ (5)、清理/data/test目錄及其下所有檔案的acl許可權 [user3@centos8 root]$ setfacl -R -b /data/test/ [user3@centos8 root]$ getfacl -R /data/test/ #檢視結果 getfacl: Removing leading '/' from absolute path names # file: data/test/ # owner: user1 # group: user1 # flags: --t user::rwx group::r-x other::r-x ...
-
統計出/etc/passwd檔案中其預設shell為非/sbin/nologin的使用者個數,並將使用者都顯示出來
[root@centos8 ~]# cat /etc/passwd | grep -v '/sbin/nologin' | cut -d ':' -f 1 root sync shutdown halt mageia slackware user1 user2 user3 [root@centos8 ~]#
-
查出使用者UID最大值的使用者名稱、UID及shell型別
參考連結 https://www.jianshu.com/p/f010af661ba0[root@centos8 ~]# getent passwd | sort -t: -k3 -n | tail -1 | cut -d: -f1,3,7 nobody:65534:/sbin/nologin
-
統計當前連線本機的每個遠端主機IP的連線數,並按從大到小排序
[root@centos8 ~]# ss -nt|tail -n 2|tr -s ' ' :|cut -d: -f6|sort|uniq -c|sort -n 2 10.0.0.1
-
編寫指令碼disk.sh,顯示當前硬碟分割槽中空間利用率最大的值
[root@centos8 ~]# cat disk.sh #指令碼內容 #!/bin/bash # maxvalue=`df -h | tr -s ' ' | cut -d' ' -f5 | sort -rn | head -1` echo -e "The value of the maximum space utilization in the current hard disk partition is:\033[1;4;31m$maxvalue\033[0m" [root@centos8 ~]# ./disk.sh #指令碼執行結果 The value of the maximum space utilization in the current hard disk partition is:17%
-
編寫指令碼 systeminfo.sh,顯示當前主機系統資訊,包括:主機名,IPv4地址,作業系統版本,核心版本,CPU型號,記憶體大小,硬碟大小
參考連結 https://www.cnblogs.com/Gao-Wen/p/15060029.html點選檢視程式碼
[root@centos8 ~]# cat systeminfo.sh #!/bin/bash # HOSTNAME=`hostname` IP=`ip a s | grep "inet" | grep -v "inet6" | grep -v "inet 127.0.0.1" | awk '{print $2}' | cut -d'/' -f1 | tr '\n' " "` SYSTEM=`cat /etc/centos-release` CORE=`uname -r` CPU=`cat /proc/cpuinfo | grep 'model name' |uniq | cut -d: -f2` MEMORY=`free -mh | grep -i "mem" | awk '{print$2}'` DISKNUM=`fdisk -l | grep -i "/dev" | grep -i "disk" | wc -l` systemname=("HOSTNAME" "IP" "SYSTEM VERSION" "CORE VERSION" "CPU" "MEMORY SIZE") systeminfo=("$HOSTNAME" "$IP" "$SYSTEM" "$CORE" "$CPU" "$MEMORY") for s in `seq 1 $DISKNUM`;do eval DISK$s=`fdisk -l | grep -i "/dev" | grep -i "disk" | head -$s | tail -1| awk '{print $2$3$4}' | cut -d',' -f1` eval systeminfo[$(($s+5))]='$'DISK$s systemname[$(($s+5))]="DISK$s SIZE" done for i in ${!systeminfo[*]};do echo "---------------------------------------------------------------------" printf "|%-15s| %-50s|\n" "${systemname[$i]}" "${systeminfo[$i]}" done echo "---------------------------------------------------------------------" #執行結果 [root@centos8 ~]# ./systeminfo.sh --------------------------------------------------------------------- |HOSTNAME | centos8.3.magedu.com | --------------------------------------------------------------------- |IP | 10.0.0.153 3.3.3.3 | --------------------------------------------------------------------- |SYSTEM VERSION | CentOS Linux release 8.3.2011 | --------------------------------------------------------------------- |CORE VERSION | 4.18.0-240.el8.x86_64 | --------------------------------------------------------------------- |CPU | 11th Gen Intel(R) Core(TM) i5-11400H @ 2.70GHz | --------------------------------------------------------------------- |MEMORY SIZE | 1.9Gi | --------------------------------------------------------------------- |DISK1 SIZE | /dev/nvme0n1:200GiB | ---------------------------------------------------------------------
-
20分鐘內通關vimtutor(可參考https://yyqing.me/post/2017/2017-02-22-vimtutor-chinese-summary)li
#安裝並啟動中文版vimtutor [root@centos8 ~]# rpm -qi vim-enhanced || yum install -y vim-enhanced && vimtutor zh