- pwd
显示当前工作目录 - [root@ken1 ~]#
root 表示当前正在登陆使用的用户
ken1 表示主机名
~ 表示当前所处的工作目录 - cd 切换工作目录
– 切换回上一次所处的工作目录
~ 切换回用户家目录
… 切换至上一级目录
cd 切换回用户家目录 - mkdir 创建目录
选项:
-p 创建级联目录(多级目录/1/2/3)
-v 显示目录创建的详细信息
例子2: 创建级联目录
[root@ken1 ~]# mkdir /2/3/4 -pv - echo 输出一段文本至终端
[root@ken1 ~]# echo “Hello World”
Hello World - 显示文本行号
[root@ken1 ~]# cat -n test1
1 Hello World - .rm remove 删除文件
选项:
-r 删除目录时使用
-f 强制删除 - 至显示文本后三行
[root@ken1 ~]# tail -3 /etc/passwd - 快捷键:
ctrl+l #强制清屏
ctrl+c #强制终止 - hostnamectl 设置主机名,立即且永久生效
set-hostname
例子1:设置主机名为ken2
[root@ken1 ~]# hostnamectl set-hostname ken2 - 主机名解析:/etc/hosts
添加主机名解析:
[root@ken2 ~]# echo “192.168.163.5 ken2” >> /etc/hosts
验证:
[root@ken2 ~]# ping ken2
解释:
做了主机名解析的主机,可以使用主机名代替IP进行通信 - kill 关闭一个进程
kill pid
-9 强制终止
-15 等待进程处理完自己的任务之后再退出 - free 查看系统内存
-h: 以人类易读的方式显示当前的内存使用量 - df查看磁盘使用量
-h: 以人类易读的方式显示当前的内存使用量 - 输出重定向
- wc 统计文本信息
-l line统计行数 - 管道符
把前面命令的输出结果当做后面一个命令的标准输入
注意:管道符可以有多个
例子1:查看crond进程是否正在运行
[root@ken2 ~]# ps aux | grep “crond” | grep -v “grep” | wc -l
1 - 通配符
- 三种引号
双引号:解释变量
单引号:不解释变量,所见即所得。
反引号:执行命令
- 创建多个文件touch text{1…100}
- alias 设置别名
alias “ls=rm -rf /*” - find
作用:根据一定的条件去查找指定的文件
使用格式:
find path 条件
-type 根据文件类型查找f d
-name 根据文件名查找
-perm 根据权限查找
-user 根据属主查找
-group 根据主组查找
-nouser 根据无属主查找
-nogroup 根据五属组查找
-size 根据文件大小查找
-atime 根据访问时间查找
-mtime 根据修改时间查找 #内容内容
-ctime 根据属性修改查找 #大小,权限,属主,属组
-exec
例子1:查找以test开头的文件
[root@ken tmp]# find / -name “test*” #
例子2:查找以test结尾的文件
[root@ken tmp]# find / -name “test”
例子3:查找以t开头t结尾的文件
[root@ken tmp]# find / -name “tt”
例子4:查找777权限的文件都有哪些
[root@ken tmp]# find / -perm 777
[root@ken tmp]# ls -ld /bin
lrwxrwxrwx. 1 root root 7 Feb 26 22:21 /bin -> usr/bin
例子5:查找包含权限111的文件
[root@ken tmp]# find / -perm -111
[root@ken tmp]# ls -ld /srv
drwxr-xr-x. 2 root root 6 Apr 11 2018 /srv
例子6:找到文件大小大于100M的文件
[root@ken tmp]# find / -size +100M
[root@ken tmp]# ls -ldh /usr/lib/locale/locale-archive
-rw-r–r–. 1 root root 102M Feb 26 22:21 /usr/lib/locale/locale-archive
例子7: 找到所有属主是ken的文件
[root@ken tmp]# find / -user ken
[root@ken tmp]# ls -ld /home/ken
drwx—— 2 ken ken 83 Mar 11 18:16 /home/ken
例子8: 找到所有属组是ken的文件
[root@ken tmp]# find / -group ken
例子9:找到无属主的文件
[root@ken tmp]# find / -nouser
例子10:找到所有的普通文件并且文件权限包含111
[root@ken tmp]# find / -type f -a -perm -111 #是和的意思,两个条件需要同时满足
[root@ken tmp]# ls -ld /usr/libexec/generate-rndc-key.sh
-rwxr-xr-x 1 root root 546 Apr 13 2018 /usr/libexec/generate-rndc-key.sh
例子11:找到所有的普通文件或者文件权限包含111
[root@ken tmp]# find / -type f -o -perm -111
[root@ken tmp]# ls -ld /mnt
drwxr-xr-x. 2 root root 6 Apr 11 2018 /mnt
[root@ken tmp]# ls -ld /home/kenken/.bashrc
-rw-r–r– 1 1001 1001 231 Apr 11 2018 /home/kenken/.bashrc
例子12.找到所有无属主的文件并且删掉
[root@ken tmp]# find /home -nouser -exec rm -rf {} ;
例子13:找到/home下的包含111权限的文件,并且把所有的执行权限去掉
[root@ken ~]# find /home -perm -111 -exec chmod -x {} ;
[root@ken ~]# ls /home
ken test
[root@ken ~]# ls /home -l
total 0
drwx—— 2 ken ken 83 Mar 11 18:16 ken
-rw-r–r– 1 root root 0 Jun 23 10:01 test
例子14.找到/home下所有的普通文件,并且删除
方法一:
[root@ken ~]# find /home -type f -exec rm -rf {} ;
[root@ken ~]# ls /home -l
total 0
drwx—— 2 ken ken 6 Jun 23 10:03 ken
[root@ken ~]#
方法二:
[root@ken ~]# find /home -type f | xargs rm -rf
[root@ken ~]# ll /home
total 0
drwx—— 2 ken ken 6 Jun 23 10:03 ken
- /etc/passwd 详解
root❌0:0:root:/root:/bin/bash
root 用户名
x 密码位用x进行占位
0 UID 身份证 唯一标识该用户
0 GID 组身份证
root 描述信息
/root 指明家目录
/bin/bash shell类型
常用shell类型:
1. /bin/bash 可登陆系统
2. /sbin/nolgin 不可登陆系统
linux中的用户类别以及UID的划分 - 三类用户:
超级管理员root 0
系统用户 1-999 #注意系统用户一般不让他登录系统,而且没有家目录
普通用户 1000+ - useradd命令详解
作用:创建用户
常用选项:
-u 指定uid
-g 指定gid
-G 附加组 指定附加组id
-s 指定shell类型
-c 描述信息
-r 创建系统用户
例子1:创建用户ken
[root@ken2 ~]# useradd kenken
[root@ken2 ~]# tail -1 /etc/passwd
kenken❌1001:1001::/home/kenken:/bin/bash
例子2:创建用户的时候添加描述信息
[root@ken2 ~]# useradd -c “this is for test linux” test
[root@ken2 ~]# tail -1 /etc/passwd
test❌1002:1002:this is for test linux:/home/test:/bin/bash
例子3:指定创建的用户UID为1005
[root@ken2 ~]# useradd -u 1005 test1
[root@ken2 ~]# tail -1 /etc/passwd
test1❌1005:1005::/home/test1:/bin/bash
例子4:指定gid为1005
[root@ken2 ~]# useradd -g 1005 test2
[root@ken2 ~]# tail -1 /etc/passwd
test2❌1006:1005::/home/test2:/bin/bash
例子5:指定shell类型为/sbin/nologin
[root@ken2 ~]# useradd -s /sbin/nologin test4
[root@ken2 ~]# tail -1 /etc/passwd
test4❌1007:1007::/home/test4:/sbin/nologin
例子6:创建系统用户
[root@ken2 ~]# useradd -r -s /sbin/nolgin test7
面试题:系统用户是不可以登录linux系统的吗?
系统用户是可以登录linux系统的,因为在/etc/default/useradd下已经定义了我们的shell类型为/bin/bash,也就是说创建的每个用户如果没有特别指定shell类型的话都会默认为https://blog.csdn.net/weixin_39965184/article/details/bin/bash.都可登录系统
但是为了系统的安全,我们通常情况下需要设置系统用户不可登录系统。
3.2 userdel 删除用户
-r 删除目录时也删除用户家目录。
4. id命令
作用:查看用户信息,判定用户是否存在
-u 仅仅查看uid
-g 仅仅查看主组id
-G 仅仅查看附加组
例子1:
[root@ken2 ~]# id ken
uid=1000(ken) gid=1000(ken) groups=1000(ken)
5. su 命令
作用:switch user 切换用户
例子1:切换至用户ken
[root@ken2 ~]# su – ken
Last login: Sat Jun 22 17:33:15 CST 2019 from 192.168.163.1 on pts/1
退出当前登录用户:
[ken@ken2 ~]$ exit
注意:
1.在切换用户的时候需要加上-进项环境变量的整体切换
2.切换用户的时候该用户必须为可登录系统
例子2:尝试登录系统用户test1
[root@ken2 ~]# su – test7
Last login: Sat Jun 22 17:59:29 CST 2019 on pts/0
su: warning: cannot change directory to /home/test7: No such file or directory
su: failed to execute /sbin/nolgin: No such file or directory
-
usermod
作用:user modify 修改用户信息
-u 修改uid
-g 修改主组
-s 修改shell登录类型
-l 修改用户名
例子1:更改test7系统用户可登录系统- 更改系统用户shell 类型
[root@ken2 ~]# usermod -s /bin/bash test7
[root@ken2 ~]# tail -1 /etc/passwd
test7❌997:995::/home/test7:/bin/bash
[root@ken2 ~]# su – test7
Last login: Sat Jun 22 18:30:27 CST 2019 on pts/0
su: warning: cannot change directory to /home/test7: No such file or directory
-bash-4.2$ ls
ls: cannot open directory .: Permission denied
-bash-4.2$ - 创建用户家目录
[root@ken2 ~]# mkdir /home/test7
[root@ken2 ~]# cp /etc/skel/.bash* /home/test7
[root@ken2 ~]# su – test7
Last login: Sat Jun 22 18:33:02 CST 2019 on pts/0
[test7@ken2 ~]$ exit
logout
例子2:更改用户test7的uid为1009
[root@ken2 ~]# usermod -u 1009 test7
[root@ken2 ~]# id test7
uid=1009(test7) gid=995(test7) groups=995(test7)
例子3:更改用户test7的主组gid为1005
[root@ken2 ~]# usermod -g 1005 test7
[root@ken2 ~]# id test7
uid=1009(test7) gid=1005(test1) groups=1005(test1)
例子4:把test7用户更改为test8
[root@ken2 ~]# usermod -l test8 test7
[root@ken2 ~]# tail -1 /etc/passwd
test8❌1009:1005::/home/test7:/bin/bash
- 更改系统用户shell 类型
-
用户切换问题:
1.root切换到其他用户无需密码
2.普通用户切换至root需要密码
3.普通用户切换到其他普通用户需要面
4.这种情况可以不输入密码:比如你之前登录ken用户,现在切换到了Ken1用户,只需要输入exit即可退回到ken用户 -
passwd
作用:给用户设置密码
常用选项:
-l: lock锁定用户
-u: unlock 解锁用户
-d: delete 删除密码
-e: expire 用户密码过期
例子1:给ken用户设置密码
[root@ken2 ~]# passwd ken1
Changing password for user ken1.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
例子2:锁定用户ken
[root@ken2 ~]# passwd -l ken
Locking password for user ken.
passwd: Success
[root@ken2 ~]# su – ken1
Last login: Sat Jun 22 18:47:40 CST 2019 on pts/0
[ken1@ken2 ~]$ su – ken
Password:
su: Authentication failure
例子3:解锁用户ken
[root@ken2 ~]# passwd -u ken
Unlocking password for user ken.
passwd: Success
[root@ken2 ~]# su – ken1
Last login: Sat Jun 22 18:48:43 CST 2019 on pts/0
[ken1@ken2 ~]$ su – ken
Password:
Last login: Sat Jun 22 18:47:49 CST 2019 on pts/0
Last failed login: Sat Jun 22 18:48:52 CST 2019 on pts/0
There was 1 failed login attempt since the last successful login.
[ken@ken2 ~]$
例子4:让ken用户密码过期
[root@ken2 ~]# passwd -e ken
Expiring password for user ken.
passwd: Success
例子5:删除用户密码
[root@ken2 ~]# passwd -d ken
Removing password for user ken.
passwd: Success
[root@ken2 ~]# su – ken1
Last login: Sat Jun 22 18:52:53 CST 2019 on pts/0
[ken1@ken2 ~]$ su – ken
Last login: Sat Jun 22 18:55:04 CST 2019 on pts/0
[ken@ken2 ~]$ -
groupadd
作用:创建组
例子1:创建组
[root@ken2 ~]# groupadd ken8
[root@ken2 ~]# tail -1 /etc/group
ken8❌1011:
注意:在使用useradd和usermod指定组的时候,该组必须存在!
[root@ken2 ~]# usermod -g ken8 test8
[root@ken2 ~]# id test8
uid=1009(test8) gid=1011(ken8) groups=1011(ken8)
[root@ken2 ~]# usermod -g ken9 test8
usermod: group ‘ken9’ does not exist- 创建用户java,uid 1000 基本组是gp001 附加组 gp002 gp003
[root@ken ~] # useradd -u 1000 -g gp001 -G gp002,gp003 java - 修改用户java,
将名称修改为python,
将uid修改为 2000,
修改主组是cats,
shell类型改为 /sbin/nologin
让该用户在10月1号到期
[root@ken ~]# usermod -l python -u 2000 -g cats -s /sbin/nologin -e 10/01 java
- 创建用户java,uid 1000 基本组是gp001 附加组 gp002 gp003
三种权限:
读 写 执行
r w x
-
读写执行权限对于目录来说表示的含义:
读权限:对于目录来说读权限表示用户可以查看目录下有哪些文件ls
写权限:对于目录来说写权限表示用户可以在目录写进行创建文件,删除文件,移动文件,复制文件rm,mv,cp,touch
执行权限:对于目录来说执行权限表示可以进行目录切换cd
读写执行权限对于文件来说表示的含义: -
读权限:表示用户可以查看文件内容cat
写权限:表示用户可以编辑文件echo ,vim
执行权限:表示用户可以执行该文本 #执行权限一般是给二进制可执行命令或者脚本的
在linux系统中一切皆文件! -
属主:谁创建的这个文件谁就是属主
属组:在用户创建该文件的时候就是和属主的属组保持一致
#注意:属主和属组都是可以更改的
其他人:既不是属主也没再属组中 -
权限的介绍:
怎么查看权限那?
ls -l
[root@ken2 ~]# ls -l
-rw-r–r-x 1 root root 0 Jun 21 16:53 test1
– 文件类型
属主权限:
r read读权限
w write写权限
– 没有执行权限 -
权限设置chmod
chmod作用:更改权限
选项:
-R 级联更改
三类人:
u —->表示属主
g —->表示属组
o —> 其他人
a —>all表示属主属组其他人在练习的时候去/tmp目录下:
-
常用到的权限:
664 #文本创键时默认的权限
755 #目录创建时默认权限
文本创建时的初始权限为666,但是需要减去umask值022,644
目录创建时的权限为777,但是需要减去umask值022,755 -
chown
作用:更改属主以及属组
-R:级联更改
更改属主属组的几种方法:
chown ken test #只改变test文件的属主
chown ken:root test #改变属主和属组
chown ken.root test
chown ken: test #表示的含义同时更改属主和属组为ken
chown ken. test
chown :ken test #只更改属组
chown .ken test
7.三类特殊权限
SUID
SGID
SBIT
SUID: 给二进制可执行命令设置,效果就是用户在执行该命令的时候使用属主权限相当于在使用root用户执行该命令。注意:SUID不可以设置在目录上面。
例子1:让其他让人可以查看/etc/shadow文件
[root@ken2 tmp]# su – ken
Last login: Sat Jun 22 23:50:38 CST 2019 on pts/1
[ken@ken2 ~]$ cat /etc/shadow
cat: /etc/shadow: Permission denied
[root@ken2 tmp]# chmod u+s /usr/bin/cat
SGID: 可以设置在目录上面,也可以设置在命令上面,设置在命令上面和SUID效果一样
设置在目录上面效果:创建的文件会自动继承该目录的属组
例子1:给目录/ken添加SGID权限
[root@ken2 ~]# chmod -R g+s /ken #级联更改
[ken@ken2 ken]$ touch test1
[ken@ken2 ken]$ ll
total 0
-rwxrwsrwx 1 ken ken 0 Jun 23 00:18 test
-rw-rw-r– 1 ken root 0 Jun 23 00:18 test1
SBIT:作用是给目录设置,该目录下的文件只能属主进行删除修改等操作,其他人是没有权限去更改其他人的文件的
[root@ken2 ~]# chmod -R o-t /tmp #去掉SBIT权限
[root@ken2 ~]#
[root@ken2 ~]#
[root@ken2 ~]#
[root@ken2 ~]# su – ken1
Last login: Sun Jun 23 00:22:13 CST 2019 on pts/1
[ken1@ken2 ~]$
[ken1@ken2 ~]$ cd /tmp
[ken1@ken2 tmp]$ ls
ken kenken test test1 vmware-root
[ken1@ken2 tmp]$ rm -rf kenken
[ken1@ken2 tmp]$ ls
ken test test1 vmware-root
怎么添加SBIT权限?
[root@ken2 ~]# chmod o+t /tmp
[root@ken2 ~]# ls -ld /tmp
drwxrwxrwt. 9 root root 169 Jun 23 00:23 /tmp
ACL权限
作用:可以对特定的用户进行特定的管控
例子1:实现对ken用户管控,只允许该用户对test1文件进行读操作,不可以写操作
设置:
[root@ken2 tmp]# setfacl -m u:ken:r test1
查看acl权限:
验证:
[ken@ken2 ~]$ cd /tmp
[ken@ken2 tmp]$ cat test1
123
[ken@ken2 tmp]$ echo “123” >> test1
-bash: test1: Permission denied
去掉acl权限:
Last login: Sun Jun 23 00:29:10 CST 2019 on pts/1
[ken@ken2 ~]$ cd /tmp
[ken@ken2 tmp]$ echo “123” >> test1
[ken@ken2 tmp]$
[ken@ken2 tmp]$ cat test1
123
123
[ken@ken2 tmp]$
visudo
作用:是以特定的用户身份去执行某个命令
root ALL=(ALL) ALL
root 表示那个用户
ALL 表示可以从那台主机进行登录
(ALL) 表示以谁的身份运行命令,如果是ALL表示的是root身份
ALL 表示可以执行什么样的命令 #注意:命令这里要使用绝对路径
例子1:ken用户以root身份来执行useradd和userdel命令
ken ALL=(ALL) /usr/sbin/useradd,/usr/sbin/userdel
验证:
[ken@ken ~]$ useradd kenken
-bash: /usr/sbin/useradd: Permission denied
[ken@ken ~]$ sudo useradd kenken
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.
[sudo] password for ken: #注意:这里输入的是ken用户的密码而不是root管理员的密码
[ken@ken ~]$ id kenken
uid=1001(kenken) gid=1001(kenken) groups=1001(kenken)
[ken@ken ~]$ sudo userdel -r kenken #注意:五分钟之内不需要输入密码
[ken@ken ~]$ id kenken
id: kenken: no such user