一、用户和组

1、查看用户

命令:cat /etc/passwsd
显示如下:

  1. root:x:0:0:root:/root:/bin/bash
  2. bin:x:1:1:bin:/bin:/sbin/nologin
  3. daemon:x:2:2:daemon:/sbin:/sbin/nologin
  4. adm:x:3:4:adm:/var/adm:/sbin/nologin
  5. lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
  6. sync:x:5:0:sync:/sbin:/bin/sync
  7. shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
  8. halt:x:7:0:halt:/sbin:/sbin/halt
  9. ……

文件每一行都代表一个用户。每行用”:”分割7个字段,结构如下 用户名:密码:UID:GID:用户全名:home目录:shell UID:User ID;GID:Group ID(UID,GID可以相同) root用户UID,GID都为0 1~499:属于系统用户 500~4294967295:普通用户

2、查看组

命令:cat /etc/group
显示如下:

  1. root:x:0:
  2. bin:x:1:
  3. daemon:x:2:
  4. sys:x:3:
  5. adm:x:4:
  6. ……
  7. wheel:x:10:
  8. cdrom:x:11:
  9. mail:x:12:postfix

文件每一行都代表一个用户。每行用”:”分割4个字段,结构如下 组名:用户组密码:GID:用户组内的用户名 专职用户组:又叫初始用户组,用户的GID所在的组,不会出现在”用户组内的用户名中” 支持用户组:用户除了本身的初始用户组,兼职了别的组,就会出现在这个字段里 有效用户组:TODO

3、管理用户和组

3.1、添加用户

命令:adduser xxxuseradd xxx(需要root权限)

不同发型版下有差别。入在Ubuntu中adduser是一个脚本,useradd是二进制程序,前者对后者进行了封装。在CentOS中两者一样,前者只是个一个符号连接(TODO)。

  1. useradd vurx # 创建用户vurx
  2. passwd vurx # 给vurx用户添加密码

执行useradd后,创建一个唯一的UID,添加一个与用户名相同的用户组和一个唯一的GID,并将用户设置为该组,在home目录下创建一个月用户同名的目录

3.2、修改用户

命令:usermod [OPT] xxx

  1. Options:
  2. -c, --comment COMMENT new value of the GECOS field
  3. -d, --home HOME_DIR new home directory for the user account
  4. -e, --expiredate EXPIRE_DATE set account expiration date to EXPIRE_DATE
  5. -f, --inactive INACTIVE set password inactive after expiration
  6. to INACTIVE
  7. -g, --gid GROUP force use GROUP as new primary group
  8. -G, --groups GROUPS new list of supplementary GROUPS
  9. -a, --append append the user to the supplemental GROUPS
  10. mentioned by the -G option without removing
  11. him/her from other groups
  12. -h, --help display this help message and exit
  13. -l, --login NEW_LOGIN new value of the login name
  14. -L, --lock lock the user account
  15. -m, --move-home move contents of the home directory to the
  16. new location (use only with -d)
  17. -o, --non-unique allow using duplicate (non-unique) UID
  18. -p, --password PASSWORD use encrypted password for the new password
  19. -R, --root CHROOT_DIR directory to chroot into
  20. -s, --shell SHELL new login shell for the user account
  21. -u, --uid UID new UID for the user account
  22. -U, --unlock unlock the user account
  23. -Z, --selinux-user SEUSER new SELinux user mapping for the user account

3.3、删除用户

命令:userdel [-r] xxx

加了-r后,连同用户的home目录一起删除

3.4、组的管理

基本和用户一致,将user替换为group,eg:groupadd,groupmod,groupdel,gpasswd

4、sudo

普通用户可以临时借用root身份干一些事情,eg:sudo cat /etc/shadow,随后会被要求输入密码。

4.1、让普通用户具备sudo特权

其实就是修改/etc/sudoers文件

  1. ## root用户可以使用sudo特权以root权限执行任何命令(废话一样)
  2. root ALL=(ALL) ALL
  3. ## 自己添加一个
  4. vurx ALL=(ALL) ALL
  5. ## 让wheel用户组可以拥有sudo特权,这样当需要给某个用户授权时,只需要加到wheel组即可
  6. %wheel ALL=(ALL) ALL
  7. ## 这种方式无需输入root密码
  8. %wheel ALL=(ALL) NOPASSWD: ALL
  9. ## 这一行意思只有用户组可以执行下面命令
  10. ## sudo mount /mnt/cdrom
  11. ## sudo unmount /mnt/cdrom
  12. %users ALL=/sbin/mount /mnt/cdrom, /sbin/unmount /mnt/cdrom
  13. ## 用户组无法使用sudo特权给系统添加新的用户
  14. %users ALL=(ALL) ALL,!/usr/sbin/adduser,!/user/sbin/useradd

4.2、su

切换用户

  1. ## 不加参数,默认切换root用户,不改变当前所在目录
  2. su
  3. ## 切换到vurx用户的根目录下
  4. su vurx -

4.3、su和sudo区别

1:sudo必须要先在用户被添加在/etc/sudoers后,才可以执行,输入当前用户密码
2:su则不需要添加,直接可以切换,输入目标用户密码
3:sudo具有时效性,两次命令间隔超过5分钟,则需要重新输入当前用户密码
干坏事:vurx用户被添加到/etc/sudoers后,执行sudo su命令,只需要输入自己的密码就切换到了root用户!应该在/etc/sudoers文件下禁止su被sudo特权执行。

5、我是谁?

whoamiwho am iwho

  1. [vurx@sxg ~]$ whoami
  2. vurx
  3. [vurx@sxg ~]$ who am i
  4. vurx pts/0 2021-07-19 14:37 (222.92.215.213)
  5. [vurx@sxg ~]$ who
  6. vurx pts/0 2021-07-19 14:37 (222.92.215.213)

用su切换为root用户后

  1. [root@sxg vurx]# whoami
  2. root
  3. [root@sxg vurx]# who am i
  4. vurx pts/0 2021-07-19 14:37 (222.92.215.213)
  5. [root@sxg vurx]# who
  6. vurx pts/0 2021-07-19 14:37 (222.92.215.213)

需要引入两个新概念:实际用户(UID)和有效用户(EUID)。

UID为用户登录时使用的用户,在整个session中,实际用户是不会发生变化的。 EUID为当前执行操作的用户,这个是可以利用su或者sudo进行切换的。

总结:**whoami**查看的是EUID,**who am i****who**查看的是UID。

二、文件和它与权限的关系
使用ls可以查看目录下的结构,ls -l可以查看文件的属性和权限

  1. [root@sxg ~]# ls -l
  2. total 319304
  3. drwxr-xr-x 7 root root 4096 Apr 23 10:49 apache-zookeeper-3.7.0-bin
  4. -rw-r--r-- 1 root root 12387614 Mar 27 18:12 apache-zookeeper-3.7.0-bin.tar.gz
  5. drwxrwxr-x 4 es es 4096 Jul 6 11:31 etcd-v3.3.0-rc.0-linux-amd64
  6. -rw-r--r-- 1 root root 11252588 Jul 6 11:27 etcd-v3.3.0-rc.0-linux-amd64.tar.gz
  7. -rw-r--r-- 1 root root 121031670 Feb 22 21:19 go1.15.7.linux-amd64.tar.gz
  8. -rw-r--r-- 1 root root 181884228 Mar 24 00:24 jdk-11.0.11_linux-x64_bin.tar.gz
  9. -rw-r--r-- 1 root root 376059 Nov 11 2020 log.file
  10. drwxr-xr-x 7 root root 4096 Jun 30 14:17 RemoteWorking
  11. -rw-r--r-- 1 root root 340 Jul 6 10:58 stop.log
  12. [root@sxg ~]# ls -lh
  13. total 312M
  14. drwxr-xr-x 7 root root 4.0K Apr 23 10:49 apache-zookeeper-3.7.0-bin
  15. -rw-r--r-- 1 root root 12M Mar 27 18:12 apache-zookeeper-3.7.0-bin.tar.gz
  16. drwxrwxr-x 4 es es 4.0K Jul 6 11:31 etcd-v3.3.0-rc.0-linux-amd64
  17. -rw-r--r-- 1 root root 11M Jul 6 11:27 etcd-v3.3.0-rc.0-linux-amd64.tar.gz
  18. -rw-r--r-- 1 root root 116M Feb 22 21:19 go1.15.7.linux-amd64.tar.gz
  19. -rw-r--r-- 1 root root 174M Mar 24 00:24 jdk-11.0.11_linux-x64_bin.tar.gz
  20. -rw-r--r-- 1 root root 368K Nov 11 2020 log.file
  21. drwxr-xr-x 7 root root 4.0K Jun 30 14:17 RemoteWorking
  22. -rw-r--r-- 1 root root 340 Jul 6 10:58 stop.log

image.pngimage.png


取值 解释
文件类型 - 普通文件
d 目录
l 软连接,硬连接
b 设备文件:块设备(磁盘等保存大块数据的设备)
c 设备文件:字符设备(如鼠标,键盘等需要连续串行读写的设备)
s 套接字文件
p 命令管道文件

1、解压

将压缩文件解压到指定目录下 一定要 -C tar -zxvf filename.tar.gz -C /usr/zookeeper

含义分别如下
z:   gzip          压缩格式
x:   extract         解压
v:   verbose        详细信息
f: file(file=archieve)    文件
j:   bzip2          压缩格式

解压xxxx.zip unzip filename.zip
解压xxxx.tar.gz tar -zxvf filename.tar.gz
解压xxxx.tar.bz2 tar -jxvf filename.tar.bz2
解压xxxx.tar.xz tar -Jxvf filename.tar.xz
解压xxxx.tar.Z tar -Zxvf filename.tar.Z

2、GREP查看

-a或—text 不要忽略二进制的数据。 -A<显示列数>或—after-context=<显示列数> 除了显示符合范本样式的那一列之外,并显示该列之后的内容。 -b或—byte-offset 在显示符合范本样式的那一列之前,标示出该列第一个字符的位编号。 -B<显示列数>或—before-context=<显示列数> 除了显示符合范本样式的那一列之外,并显示该列之前的内容。 -c或—count 计算符合范本样式的列数。 -C<显示列数>或—context=<显示列数>或-<显示列数> 除了显示符合范本样式的那一列之外,并显示该列之前后的内容。 -d<进行动作>或—directories=<进行动作> 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。 -e<范本样式>或—regexp=<范本样式> 指定字符串做为查找文件内容的范本样式。

-E或—extended-regexp 将范本样式为延伸的普通表示法来使用。

-f<范本文件>或—file=<范本文件> 指定范本文件,其内容含有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每列一个范本样式。

-F或—fixed-regexp 将范本样式视为固定字符串的列表。

-G或—basic-regexp 将范本样式视为普通的表示法来使用。

-h或—no-filename 在显示符合范本样式的那一列之前,不标示该列所属的文件名称。

-H或—with-filename 在显示符合范本样式的那一列之前,表示该列所属的文件名称。

-i或—ignore-case 忽略字符大小写的差别。

-l或—file-with-matches 列出文件内容符合指定的范本样式的文件名称。

-L或—files-without-match 列出文件内容不符合指定的范本样式的文件名称。

-n或—line-number 在显示符合范本样式的那一列之前,标示出该列的列数编号。

-q或—quiet或—silent 不显示任何信息。

-r或—recursive 此参数的效果和指定”-d recurse”参数相同。

-s或—no-messages 不显示错误信息。

-v或—revert-match 反转查找。

-V或—version 显示版本信息。

-w或—word-regexp 只显示全字符合的列。

-x或—line-regexp 只显示全列符合的列。

-y 此参数的效果和指定”-i”参数相同。

—help 在线帮助。

2.1、查看某一个文件
2.1.1、关键字下面五行
grep -A5 "关键字" 文件名
2.1.2、关键字上面五行
grep -B5 "关键字" 文件名
2.1.3、关键字上下五行
grep -C5 "关键字" 文件名
3、服务器信息查询
3.1、查看内核版本

  1. uname -r
  2. ===============================================
  3. 3.10.0-514.26.2.el7.x86_64

3.2、查看系统版本

  1. cat /etc/os-release
  2. ===============================================
  3. NAME="CentOS Linux"
  4. VERSION="7 (Core)"
  5. ID="centos"
  6. ID_LIKE="rhel fedora"
  7. VERSION_ID="7"
  8. PRETTY_NAME="CentOS Linux 7 (Core)"
  9. ANSI_COLOR="0;31"
  10. CPE_NAME="cpe:/o:centos:centos:7"
  11. HOME_URL="https://www.centos.org/"
  12. BUG_REPORT_URL="https://bugs.centos.org/"
  13. CENTOS_MANTISBT_PROJECT="CentOS-7"
  14. CENTOS_MANTISBT_PROJECT_VERSION="7"
  15. REDHAT_SUPPORT_PRODUCT="centos"
  16. REDHAT_SUPPORT_PRODUCT_VERSION="7"

3.3、查看内存

  1. free [option]
  2. #参数说明
  3. -m #按M来显示
  4. -g #按G来显示
  5. -h #人性化显示
  6. -s N #每隔Ns输出一次
  7. -c N #输出N次后退出
  8. free -h -s 2 -c 2 #每隔2s,总共输出2次,人性化显示
  9. ===============================================
  10. total used free shared buff/cache available
  11. Mem: 1.8G 256M 510M 40M 1.0G 1.3G
  12. Swap: 0B 0B 0B
  13. total used free shared buff/cache available
  14. Mem: 1.8G 256M 510M 40M 1.0G 1.3G
  15. Swap: 0B 0B 0B

3.4、查看cpu
3.5、查看运行中的程序
3.5.1、显示cpu,内存使用百分比
3.5.1.1、全部显示

  1. ps aux
  2. ===============================================
  3. USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
  4. root 1 0.0 0.1 43216 3664 ? Ss 115 0:13 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
  5. ........
  6. root 844 0.0 0.2 32728 4128 ? Ssl 115 6:36 /usr/local/aegis/aegis_update/AliYunDunUpdate
  7. root 1071 0.6 0.8 133980 15928 ? S<sl 115 198:27 /usr/local/aegis/aegis_client/aegis_10_89/AliYunDun
  8. root 1116 0.0 0.0 122028 1484 ? Sl 115 18:16 /usr/local/cloudmonitor/wrapper/bin/./wrapper /usr/local/cloudmonitor/wrapper/bin/../conf/wrapper.conf wrapper.syslog.ident=cloudmonitor wrapper.pidfile=/usr/
  9. root 1190 0.4 4.0 2074504 75904 ? Sl 115 146:18 /usr/local/cloudmonitor/jre/bin/java -Djava.compiler=none -XX:-UseGCOverheadLimit -XX:NewRatio=1 -XX:SurvivorRatio=8 -XX:+UseSerialGC -Djava.io.tmpdir=../../t
  10. root 2141 0.0 0.6 803192 12632 ? Ssl 130 7:23 /usr/local/share/aliyun-assist/2.2.0.106/aliyun-service

3.5.1.1、按内存|CPU使用率升序排列,显示最后五个

  1. ps aux --sort=+rss | tail -n 5
  2. # rss -- 内存
  3. # %cpu -- cpu
  4. # + -- 升序
  5. # - -- 降序
  6. ===============================================
  7. root 1071 0.6 0.8 133980 15928 ? S<sl 115 198:29 /usr/local/aegis/aegis_client/aegis_10_89/AliYunDun
  8. root 760 0.0 0.8 560344 16432 ? Ssl 115 3:15 /usr/bin/python -Es /usr/sbin/tuned -l -P
  9. root 3128 0.0 2.4 568608 46308 ? Ssl 115 12:16 /usr/bin/containerd
  10. root 1190 0.4 4.0 2074504 75904 ? Sl 115 146:19 /usr/local/cloudmonitor/jre/bin/java -Djava.compiler=none -XX:-UseGCOverheadLimit -XX:NewRatio=1 -XX:SurvivorRatio=8 -XX:+UseSerialGC -Djava.io.tmpdir=../../tmp -Xms16m -Xmx32m -Djava.library.path=../lib:../../lib -classpath ../lib/wrappertest.jar:../lib/wrapper.jar:../../config:../../lib/agent-commons-1.2.11.jar:../../lib/agent-core-1.2.11.jar:../../lib/agent-model-1.2.11.jar:../../lib/aopalliance-1.0.jar:../../lib/commons-logging-1.2.jar:../../lib/commons-net-3.5.jar:../../lib/gson-2.4.jar:../../lib/jvm-plugin-1.2.11.jar:../../lib/log4j-1.2.16.jar:../../lib/metrics-core-3.0.2.jar:../../lib/sigar-1.6.5.132.jar:../../lib/slf4j-api-1.7.5.jar:../../lib/spring-aop-4.2.4.RELEASE.jar:../../lib/spring-beans-4.2.4.RELEASE.jar:../../lib/spring-context-4.2.4.RELEASE.jar:../../lib/spring-core-4.2.4.RELEASE.jar:../../lib/spring-expression-4.2.4.RELEASE.jar:../../lib/system-plugin-1.2.11.jar:../../lib/updater-1.2.11-jar-with-dependencies.jar -Dwrapper.key=t-0l13PkXMX7rx8B -Dwrapper.port=32000 -Dwrapper.jvm.port.min=31000 -Dwrapper.jvm.port.max=31999 -Dwrapper.disable_console_input=TRUE -Dwrapper.pid=1116 -Dwrapper.version=3.5.27 -Dwrapper.native_library=wrapper -Dwrapper.arch=x86 -Dwrapper.service=TRUE -Dwrapper.cpu.timeout=10 -Dwrapper.jvmid=1 com.aliyun.tianji.cloudmonitor.Application
  11. root 12575 0.0 4.8 587112 90824 ? Ssl 119 3:16 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

3.5.1.2、按名字过滤显示指定的进程

  1. ps aux|grep docker
  2. ===============================================
  3. root 12575 0.0 4.8 587112 90824 ? Ssl 119 3:16 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
  4. root 19975 0.0 0.0 112664 976 pts/0 R+ 13:44 0:00 grep --color=auto docker