馬哥教育網絡21期+第三周練習博客
一.回顧第二周的學習內容
1,Linux上的文件管理類的命令: mkdir:創建目錄: [root@localhost ~]# mkdir /tmp/fstab2222 [root@localhost ~]# ls -l /tmp/ total 64 drwxr-xr-x. 2 root root 4096 Jul 10 19:32 aaa -rw-r--r--. 1 root root 0 Jul 10 21:19 aaaa drwxr-xr-x. 3 root root 4096 Jul 10 19:37 ccc drwxr-xr-x. 2 root root 4096 Jul 10 19:37 ddd -rw-r--r--. 1 root root 0 Jul 12 09:51 +%F-%H-%M-%S -rw-r--r--. 1 root root 884 Jul 10 19:24 fstab111 drwxr-xr-x. 2 root root 4096 Jul 12 14:30 fstab2222 - cp [OPTION]... [-T] SOURCE DEST - cp [OPTION]... SOURCE... DIRECTORY - cp [OPTION]... -t DIRECTORY SOURCE... 以上注意幾點: 例如:cp src DEST.... src是文本文件:如果DEST不存在,則復制到目標文件中,并將src內容覆蓋至DEST上: src是文本文件:如果DEST存在,則復制到目標文件中,則將目標文件內容覆蓋: 如果DEST是目錄:在DEST下新建與原文件同名的文件,并將SRC中內容填充至新文件中; 如果SRC是目錄: 如果DEST不存在:創建目標目錄,復制SRC目錄中所有文件至DEST中; 如果DEST存在: 如果DEST是文件:報錯 如果DEST是目錄:復制到此目錄中 ☆★☆★這里的其實已經使用alias命名別名的方法進行了命令別名了: [root@localhost ~]# alias alias cp='cp -i' [root@localhost ~]# cat ~/.bashrc # .bashrc # User specific aliases and functions alias rm='rm -i' alias cp='cp -i' alias mv='mv -i' alias grep='grep --color' # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi 此上是對當前用用戶永久生效,如想對全局生效則需要修改/etc/profile.d/*.sh rmdir:刪除目錄命令 如要刪除含有內容的目錄:建議使用rm -rf強制刪除命令:此條命令慎用! mv:移動或剪切 mv [OPTION]... [-T] SOURCE DEST mv [OPTION]... SOURCE... DIRECTORY mv [OPTION]... -t DIRECTORY SOURCE... 常用選項: -i:交互式 -f:強制 rm:刪除命令 rm [OPTION]... FILE... 常用選項: -i: 交互式 -f: 強制刪除 -r: 遞歸 glob文件通配符: *:任意長度字符: ?:任意單個字符: []:匹配內的任意單個字符: [^]:匹配內以外的任意字符: [:space;]:表示空白字符: [:digit:]:任意數字-->[0-9]: [:lower:]任意小寫字母: [:upper:]任意大寫字母; [:alpha:]任意大小寫字母; [:alnum:]任意數字或字母; [:punct:]標點符號; stat查看數據源文件: [root@localhost tmp]# stat /etc/ File: `/etc/' Size: 12288 Blocks: 24 IO Block: 4096 directory Device: 802h/2050d Inode: 1179649 Links: 114 Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2016-07-12 09:54:41.916999187 -0400 Modify: 2016-07-10 20:55:06.585989155 -0400 Change: 2016-07-10 20:55:06.585989155 -0400
二.第三周博客及其作業:
1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。
[root@localhost tmp]# who | cut -d' ' -f1 | sort -u root wostop
取出最后登錄到當前系統的用戶的相關信息。
[root@localhost tmp]# w | tail -n1 wostop pts/4 192.168.1.3 14:45 1:11m 0.01s 0.01s -bash
取出當前系統上被用戶當作其默認shell的最多的那個shell。
[root@localhost ~]# cat /etc/passwd | cut -d':' -f7 |sort| uniq -c | sort -n | tail -n1 29 /sbin/nologin
將/etc/passwd中的第三個字段數值最大的后10個用戶的信息全部改為大寫后保存至/tmp/maxusers.txt文件中。
[root@localhost ~]# sort -t':' -k3 -n /etc/passwd | tail -n1 | tr 'a-z' 'A-Z' > /tmp/maxusers.txt
取出當前主機的IP地址,提示:對ifconfig命令的結果進行切分。
ifconfig |grep '^[[:space:]]\{1,\}inet' | cut -d':' -f3 | cut -d' ' -f1 ☆★☆★此上為如果當前主機有多個地址,包括loopback地址都能抓出來?。。?!☆★☆★ [root@localhost ~]# ifconfig |grep '^[[:space:]]\{1,\}inet' | head -n1 | cut -d':' -f3 | cut -d' ' -f1 192.168.1.255
列出/etc目錄下所有以.conf結尾的文件的文件名,并將其名字轉換為大寫后保存至/tmp/etc.conf文件中。
ls /etc/*.conf | tr 'a-z' 'A-Z' >> /tmp/etc.conf1 ls /etc/*.conf | tr 'a-z' 'A-Z' | tee /tmp/etc.conf
顯示/var目錄下一級子目錄或文件的總個數。
[root@localhost ~]# ls -l /var/ |wc -l 22
取出/etc/group文件中第三個字段數值最小的10個組的名字。
[root@localhost ~]# cat /etc/group | sort -t':' -k3 -n | tail -n10 | cut -d':' -f1 abrt fuse pulse-access pulse rtkit desktop_user_r desktop_admin_r wostop user1 nfsnobody
將/etc/fstab和/etc/issue文件的內容合并為同一個內容后保存至/tmp/etc.test文件中。
cat /etc/fstab /etc/issue >> /tmp/etc.test cat /etc/fstab /etc/issue &>> /tmp/etc.test
找出ifconfig命令結果中1-255之間的數值;
[root@localhost ~]# ifconfig | grep '[0-9]\{1,\}[/./][0-9]\{1,\}[/./][0-9]\{1,\}[/./][0-9]\{1,\}' inet addr:192.168.1.5 Bcast:192.168.1.255 Mask:255.255.255.0 inet addr:127.0.0.1 Mask:255.0.0.0
找出ifconfig命令結果中的IP地址;
[root@localhost ~]# ifconfig | grep 'inet addr:[1-9]\{1,\}[/./][0-9]\{1,\}[/./][0-9]\{1,\}[/./][1-9]\{1,\}' inet addr:192.168.1.5 Bcast:192.168.1.255 Mask:255.255.255.0 inet addr:127.0.0.1 Mask:255.0.0.0 ifconfig | grep -o 'inet addr:[1-9]\{1,\}[/./][0-9]\{1,\}[/./][0-9]\{1,\}[/./][1-9]\{1,\}' **inet addr:192.168.1.5** **inet addr:127.0.0.1** ☆★☆★此處請老師幫忙看一下,我是否匹配對??!
請總結描述用戶和組管理類命令的使用方法并完成以下練習:
用戶和組管理 Linux用戶:USERNAME/UID 管理員:root,0 普通用戶:1-65535 系統用戶:1-499 Linux組:Gropuname/GID 管理員組:root 0 普通組: 系統組:1-499(CentOS6),1-999(CentOS7) 普通組:500+(CentOS6),1000+(CentOS7) Linux安全上下文: 運行中的程序:進程 (process) 以進程發起者的身份運行: root:cat tom:cat 進程所能夠訪問的所有資源的權限取決于進程的發起者的身份; Linux組的類別: 用戶的基本組(主組): 此外用戶也可以擁有額外組: Linux用戶和組相關的配置文件: /etc/passwd:用戶及其屬性信息(名稱,UID,基本組ID等等) /etc/group:組及其屬性信息: /etc/shadow:用戶密碼及其相關屬性: /etc/gshadow:組密碼及其相關屬性:在用戶完成基本組切換時使用 [root@localhost ~]# cat /etc/passwd root:x:0:0:root:/root:/bin/bash [root@localhost ~]# cat /etc/group root:x:0: [root@localhost ~]# cat /etc/shadow root:$6$FcyUxvmkdOBFwgZe$hiQvqaZUBrya755brzKaSPaFXh0.3oKlsOo2UvcAr8UIZPsZocBda2y10qPADitakgpQYe0jP3DfReWVRl [root@localhost ~]# cat /etc/gshadow root::: /etc/passwd: name:password:UID:GID:GECOS:directory:shell 用戶名:密碼:UID:GID:GECOS:主目錄:默認shell /etc/group: group_name:password:GID:user_list 組名:組密碼:GID:以當前組為附加組的用戶列表(分隔符為逗號) /etc/shadow 用戶名:加密了的密碼:最近一次更改密碼的日期:密碼的最小使用期限:最大密碼使用期限:密碼警告時間段:密碼禁用期:賬戶過期日期:保留字段
相關命令
**用戶創建:useradd** useradd [options] LOGIN -u UID: [UID_MIN, UID_MAX], 定義在/etc/login.defs -g GID:指明用戶所屬基本組,可為組名,也可以GID; -c "COMMENT":用戶的注釋信息; -d /PATH/TO/HOME_DIR: 以指定的路徑為家目錄; -s SHELL: 指明用戶的默認shell程序,可用列表在/etc/shells文件中; -G GROUP1[,GROUP2,...[,GROUPN]]]:為用戶指明附加組;組必須事先存在; -r: 創建系統用戶 CentOS 6: ID<500 CentOS 7: ID<1000 默認值設定:/etc/default/useradd文件中 練習:創建用戶gentoo,附加組為distro和linux,默認shell為/bin/csh,注釋信息為"Gentoo Distribution"; useradd gentoo -G distro,linux -s /bin/csh -c "Gentoo Distribution" **組創建:groupadd** groupadd [OPTION]... group_name -g GID: 指明GID號;[GID_MIN, GID_MAX] -r: 創建系統組; CentOS 6: ID<500 CentOS 7: ID<1000 查看用戶相關的ID信息:id id [OPTION]... [USER] -u: UID -g: GID -G: Groups -n: Name 切換用戶或以其他用戶身份執行命令:su su [options...] [-] [user [args...]] **切換用戶的方式:** su UserName:非登錄式切換,即不會讀取目標用戶的配置文件; su - UserName:登錄式切換,會讀取目標用戶的配置文件;完全切換; ☆★☆★Note:root su至其他用戶無須密碼;非root用戶切換時需要密碼;☆★☆★ **用戶屬性修改:usermod** usermod [OPTION] login -u UID: 新UID -g GID: 新基本組 -G GROUP1[,GROUP2,...[,GROUPN]]]:新附加組,原來的附加組將會被覆蓋;若保留原有,則要同時使用-a選項,表示append; -s SHELL:新的默認SHELL; -c 'COMMENT':新的注釋信息; -d HOME: 新的家目錄;原有家目錄中的文件不會同時移動至新的家目錄;若要移動,則同時使用-m選項; -l login_name: 新的名字; -L: lock指定用戶 -U: unlock指定用戶 -e YYYY-MM-DD: 指明用戶賬號過期日期; -f INACTIVE: 設定非活動期限; **給用戶添加密碼:passwd** passwd [OPTIONS] UserName: 修改指定用戶的密碼,僅root用戶權限 passwd: 修改自己的密碼; 常用選項: -l: 鎖定指定用戶 -u: 解鎖指定用戶 -n mindays: 指定最短使用期限 -x maxdays:最大使用期限 -w warndays:提前多少天開始警告 -i inactivedays:非活動期限; --stdin:從標準輸入接收用戶密碼; echo "PASSWORD" | passwd --stdin USERNAME Note: /dev/null, bit buckets /dev/zero, **刪除用戶:userdel** userdel [OPTION]... login -r: 刪除用戶家目錄; **組屬性修改:groupmod** groupmod [OPTION]... group -n group_name: 新名字 -g GID: 新的GID; **組刪除:groupdel** groupdel GROUP **組密碼:gpasswd** gpasswd [OPTION] GROUP -a user: 將user添加至指定組中; -d user: 刪除用戶user的以當前組為組名的附加組 -A user1,user2,...: 設置有管理權限的用戶列表 **newgrp命令:臨時切換基本組;** 如果用戶本不屬于此組,則需要組密碼; **修改用戶屬性:chage** chage [OPTION]... LOGIN -d LAST_DAY -E, --expiredate EXPIRE_DATE -I, --inactive INACTIVE -m, --mindays MIN_DAYS -M, --maxdays MAX_DAYS -W, --warndays WARN_DAYS
請總結描述用戶和組管理類命令的使用方法并完成以下練習:
(1)、創建組distro,其GID為2016;
[root@localhost ~]# groupadd -g 2016 distro [root@localhost ~]# cat /etc/group | grep "^distro" distro:x:2016:
(2)、創建用戶mandriva, 其ID號為1005;基本組為distro;
[root@localhost ~]#useradd -u 1005 -g distro mandriva [root@localhost ~]# cat /etc/passwd /etc/group | grep "2016" mandriva:x:1005:2016::/home/mandriva:/bin/bash distro:x:2016:
#### (3)、創建用戶mageia,其ID號為1100,家目錄為/home/linux; #### [root@localhost ~]# useradd -u 1100 -d /home/linux mageia
[root@localhost ~]# cat /etc/passwd | grep "^mageia" mageia:x:1100:1100::/home/linux:/bin/bash
(4)、給用戶mageia添加密碼,密碼為mageedu;
[root@localhost ~]# useradd mageia ||echo "mageedu" | passwd --stdin mageia useradd: user 'mageia' already exists Changing password for user mageia. passwd: all authentication tokens updated successfully.
(5)、刪除mandriva,但保留其家目錄;
[root@localhost ~]# cd /home/ [root@localhost home]# ls gentoo linux lost+found mandriva user1 wostop [root@localhost home]# userdel mandriva [root@localhost home]# ls gentoo linux lost+found mandriva user1 wostop
(6)、創建用戶slackware,其ID號為2002,基本組為distro,附加組peguin;
[root@localhost ~]# useradd -u 2002 -g distro -G peguin shackware root@localhost ~]# cat /etc/passwd /etc/group | grep "shackware" shackware:x:2002:2016::/home/shackware:/bin/bash peguin:x:2017:shackware
(7)、修改slackware的默認shell為/bin/tcsh;
[root@localhost ~]# usermod -s /bin/tcsh shackware [root@localhost ~]# cat /etc/passwd | grep "^shackware" shackware:x:2002:2016::/home/shackware:/bin/tcsh
(8)、為用戶slackware新增附加組admins;
[root@localhost ~]# usermod -a -G admins shackware [root@localhost ~]# id shackware uid=2002(shackware) gid=2016(distro) groups=2016(distro),2018(admins)
(9)、為slackware添加密碼,且要求密碼最短使用期限為3天,最長為180天,警告為3天;
[root@localhost ~]# echo 'mageedu' | passwd --stdin shackware Changing password for user shackware. passwd: all authentication tokens updated successfully. [root@localhost ~]# passwd -n 3 -x 180 -w 3 shackware Adjusting aging data for user shackware. passwd: Success
(10)、添加用戶openstack,其ID號為3003, 基本組為clouds,附加組為peguin和nova;
[root@localhost ~]# useradd -u 3003 -g clouds -G peguin,nova openstack [root@localhost ~]# id openstack uid=3003(openstack) gid=2019(clouds) 組=2019(clouds),2017(peguin),2020(nova)
(11)、添加系統用戶mysql,要求其shell為/sbin/nologin;
[root@localhost ~]# useradd -s /sbin/nologin mysql [root@localhost ~]# cat /etc/passwd | grep "^mysql" mysql:x:3004:3004::/home/mysql:/sbin/nologin
(12)、使用echo命令,非交互式為openstack添加密碼。
[root@localhost ~]# echo 'mageedu' | passwd --stdin openstack<--更改用戶 openstack 的密碼 。 Changing password for user openstack. passwd: all authentication tokens updated successfully.
原創文章,作者:wostop,如若轉載,請注明出處:http://www.www58058.com/24102
寫的很好,排版也很漂亮,在仔細看看ip地址匹配的問題,加油