linux
GUN Linux 自由软件之父 理查德|斯托曼
Linux 之父 林纳斯
Linux发行版和RHCE
RHCSE
RHCE
RHCA
centos 社区企业操作系统
Ubuntu 桌面应用为主的开源系统
Debian
Linux 目录结构视图
- bin—binary二进制文件
- boot–启动目录
- dev—设备
- etc—配置文件,在工作中使用最多的
- home—家目录
- root----超级管理员能进,其他都进不去,root里面ls命令
- run—运行命令,一般用的少
- sbin–super bin,超管的命令
- tmp—template临时文件
- usr—应用程序安装位置
- var----日志,邮件等
Linux命令
命令 选项 参数
-
ls
-
ls -l
-
ls /:表示查看根目录
-
cd (change directory)切换目录,有相对和绝对之分
-
cd / :前往根目录
-
pwd 查看当前所在位置
-
touch 创建文件
-
touch /mnt :必须给出路径
-
touch /home/file1 file3 表示在根目录下的home下创建file1文件,在当前目录下创建file3文件
-
mkdir :创建文件夹
-
mkdir ./{file3,file4} 表示在当前文件夹下创建file3和file4目录
-
mkdir -p /home/a1/b1/c1 联级创建-p就是表示parent,表示父系,当创建的目录没有上一级的时候,创建。
-
cp 复制文件 cp 源文件路径 目的文件文件夹
-
cp -r 源目录 目标目录
-
chgrp -r 属组名 文件名 改变文件属组名
-
chown [–R] 属主名 文件名 改变文件属主名
-
chown [-R] 属主名:属组名 文件名 同时改变属主和属组名
-
chmod [-R] 三个数字 文件或目录 改变文件访问权限,注意R区分大小写
-
mv 源文件路径 目标文件路径
-
mv 可以实现将文件改名
-
history : 查看历史命令
-
cat 文件路径: 查看文件内容
-
more 文件路径: 查看文件内容翻页 enter键一行行 空格一页页
-
head 文件路径:头部
-
tail 文件路径:尾部
-
grep 过滤关键字
-
文件编辑器1 图形文件编辑器gedit (gedit 1.txt)就打开了1.txt的文本文件图形化界面
文件编辑器2 vim
- i 插入
- u撤销
- :wq 退出
- yy 复制
- dd 删除
- p粘贴
- x 删除某一个字
- :q! 表示强制退出不保存
- :set nu:设置行号
- ESC返回命令模式
- 光标定位
- hjkl 上下左右
- 0 $ 行首行尾
- gg G 页首页尾
- 3G 进入第3行
- /string n 查找字符,按n键选下一个
- 如果不想屏幕是查找的常亮,可以输入/随便一个文档中没有的字符串乱七八糟的字符串
- 替换 (:1,5 s/222222/666666/g) 意思是在第一行到第五行,将222222换成666666,g的意思的全局替换
- 另存为是(:w 想要存入的地址)(:q!)
- : set list 显示控制字符,linux里面敲击回车是$符号,set list 是看特殊符号的
- :set nonu 取消行号
Vim未正常关闭,产生的临时文件,解决办法:
如果在一个位置写了一个文件/1.txt,但是各种原因没有正常退出,会出现一个/1.txt.swap,这一份是服务器给你的备份,删除就好。具体删除步骤如下
-
查看隐藏文件 ls -al
-
使用rm命令删除即可
-
重定向:ls / > l.txt
文件类型
- -普通文件(文本文件,二进制文件,视频,图像等)
- d 文件夹
按tab键可以补全
用户管理
- 用户信息存储在/etc/passwd
- 每一行是一个用户信息,分为用户名:x:uid:gid:描述:HOME:shell
- 用户名不允许重名
- 第二个字段是密码占位符,具体内容不在这里
- 第三个字段 uid是用户的身份证号: 系统约定 uid : 0 特权用户 uid:1~499 系统用户 uid:1000+ 普通用户
- IDC internet database center 互联网数据中心
- 电源:每台服务器:双电(市电,UPS,油机发电机)
-第四个字段 GID 组ID,
-第五个字段 描述:比如经理 manager - 第六个字段HOME:家目录,登录系统的时候,所在的目录
- 第七个字段登录shell,命令解释器 ,shell 壳 命令解释器,定义命令,接受命令,执行命令
- 版本很多 ashell,bshell,cshell,tshell ,bash
- shell路径是 /bin/bash
————————————————————————————————————————
用户密码信息文件 - /etc/shadow
- yaoyaxing:
6
6
6IY0IStBYeQ4TFvdE$jgG0qD79ACL7mKcZ5gANwyJ1YEtFf7L/cW/4Sl4ubDPuD0ylve5kBZfAebVh/.jQfN/g.2Nxrn8JF2N02i./U1:19177:0:99999:7:::
第一列叫用户名
第二列是加密后的密码,第一个 6 6 6表明使用的是SHA-512加密的, 1 1 1表面是用MD5加密的, 2 2 2表明是用Blowfish加密的, 5 5 5是用SHA-256加密的,第二个$后面就是密码值,星号表示账号被锁定,双叹号表明这个密码已经过期
第三个部分是表示最后一次修改时间,指的是从某个时刻起,到用户最后一次修改口令时的天数,时间起点对不同的系统可能不
第四列是最小间隔,两次密码修改之间的最小天数,0表示当天可以修改密码,5表示修改密码必须过5天才能再次修改密码
第五列是有效期,最大时间间隔 99999表示永不过期, 但是可以设置,14天修改密码,最核心的北京的路由器每一小时修改密码
密码过期该则么办:1用户需成功的输入用户名和密码2提示,你的密码已过期,请修改你的密码3输入框,输入两次新密码4登录成功
第六列:警告时间,比如我定的密码最大时间间隔是14,系统会在第7天或者几天的时候提示警告,这个只是一个软规则
第七列:不活动时间,表示用户没有登录系统,但是账号在仍然保持有效的最大天数(软限制,到期后多少天就不能用账号了)
第八列:失效时间,比如给你30天,表示到了30天,你的账号就不能用了,你账号的生命只有30天。
第九列,保留,啥也没有
————————————————————————————
组信息文件
/etc/group
root:x:0:
4列,第一列是组名,第二列是组密码,第三列是组的id,第四列组成员
用户/组管理
创建用户 useradd user01
id user01 :返回该用户的详细信息,以及当用户不存在的时候提示用户不存在
passwd 用户名:该命令表示修改用户的密码
无法使用上述命令的现象该则么办:
whoami:我是谁
ls /var/spool/mail/user01 :这个文件夹里面放的是邮件,在创建用户的时候,/var/spool/mail下面会创建和用户同名的文件,存放邮件
添加选项,表示创建用户的时候
useradd user03 -u 1503 :表示指明用户的id是1503
useradd user03 -d 路径:表示该用户不是存放在home下面,而是存放在指定路径下
useradd --help : 向主机寻求帮助
删除用户 userdel -r user03,这里加参数-r表示连同用户的文件夹一起修改
组成员管理:将用户加入组
修改用户属性usermod -s /sbin/nologin user03,设置user03不能登录
——————————————————————————
用户组管理
groupadd hr
grep hr /etc/group : 表示在group中搜索hr关键字
组的信息只在group中,没有在passwd里面和shadow里面也没有
groupadd net01 -g 2000:表示设置组id是2000
grep net01 /etc/group :结果显示是net01:x:2000:
用户名和组名不能用纯数字
groupdel net01 : 删除一个组
知识点:组分两类,基本组和附加组。
基本组和附加组是相对而言的,都是组,基本组是随用户创建而创建,组名同用户名
附加组是将张三加入到王五的组,那么张三用户将得到两个不同类型的组,基本组和附加组。
一个用户是同属于基本组和附加组的
当一个张三由加入李四组的时候,李四组对于张三组而言是附加组
基本组只有一个,附加组可以有很多
基本和附加是相对于用户而言的。
/etc/passwd可以查看用户的基本组
/etc/group 可以查看用户的附加组,id命令也可以看
-g 制定用户的基本组
-G 制定用户的附加组
groupadd 是创建组的命令
usermod 是修改组的命令
useradd 是创建用户的命令
groupadd CCC
usermod user01 -g CCC :修改user01 的基本组是CCC
gpasswd -d A Group:表示把A从Group中移除,但是用户必须得拥有一个组
提升用户的权限
永久提权Switching users with su
普通用户的能力是有限的,没有权限的时候,需要执行特殊指令的时候,使用su执行超管身份
su - root :该方法可以由普通用户转换为root用户
切换对方身份的时候,需要对方的密码
切换身份是可以退出的
exit:表示退出
su - root和su root结果是一样的,可以做超管的事情,建议使用第一个
临时提权 sudo Running commands as root 向管理员临时提权,使用普通用户登录服务器时,完成部分提权指令,不能完成全部特权指令,
则么分配权限?
sudo配置文件语法:user MACHINE = COMMANDS ,用户登录的主机 =(可以变换的身份)可以执行的命令,下面是以root用户授权普通用户xueli:
vim /etc/sudoers
%wheel ALL = (ALL) NOPASSWD:ALL
组名 命令权限
第107行,允许wheel用户组中的用户在不输入该用户的密码的情况下使用所有命令
wheel是一个用户组,系统在装机的时候就设置了一个wheel
useradd xulei -G wheel
sudo useradd gougou10
sudo id gougou10
sudo userdel gougou10
用户的权限
- 基本权限UGO -user group other
- 基本权限ACL
- 特殊权限(了解)
用户权限和互联网各种APP特权之间的关系:
QQ空间的红钻特权
某高仿传奇
腾讯视频/爱奇艺
京东白金会员
互联网各种app特权,在管理员面真实的样子
由超管决定某个计算机用户,能否访问某个文件。(文件包括图像文件,视频文件,普通文件)
设置权限的两个基本元素:
- 权限对象
- 权限类型
权限的三类对象:
- 属主 u
- 属组 g
- 其他人 o
- 特殊对象:所有人 a(u+g+o)
权限的种类:
- 读 r=4
- 写w=2
- 执行 x=1
vim 1.txt
里面写入mkdir 33
然后在命令行里面写入bash 1.txt 来进行运行
chmod 对象u/g/o 赋值符+/-/= 权限类型r/w/x 文件/目录
ls -l file1 等效于ll file1
chmod u+x /home/file
chmod g=rw /home/file
chmod o=— /home/file
chmod
基本权限ACL access control list 访问控制列表
限制用户对文件的访问,ACL是UGO的补充,加强版
查看文件有哪些ACL权限:getfacl /home/test.txt
权限是可以叠加的
设置权限:setfacl -m u:alice:rwx /home/test.txt
setfacl可以修改基础权限:setfacl -m o::rw /home/test.txt
删除某人拥有的权限 : setfacl -x u:alice /home/test.txt
删除所有扩展出来的权限:setfacl -b /home/test.txt
特殊权限了解
如果一个文件很重要,万一被超管删除了则么办?靠特殊的i权限,保证了文件的重要性
为什么系统创建文件都是644,创建文件夹是755
特殊位置suid ,suid (sgid)针对文件/程序时,具备临时提升权限
文件属性chattr
进程掩码umask
suid 是针对文件所设置的一个特别的权限,功能:使调用文件的用户,临时具备属主的能力
chmod u+s /usr/bin/cat 可以实现将调用文件的用户,临时具备提权的权限
用普通用户登录,输入cat /root/file1.txt,此时就可以查看root用户里面的file1中文件内容,这就说明用户拥有了临时提权的命令,不要随便设置suid
————
chattr:常用来锁定文件,i 在文件上启用这个属性的时候,我们不能更改、重命名、或者删除这个文件。
先创建新文件进行对比,查看默认权限,touch file100
lsattr file100
加上不能删除的属性:chattr +i file100
lsattr file100
尝试删除
rm -rf file100 无法删除
,日志文件通常使用a属性
c属性表示压缩
——————
进程掩码:
为什么系统创建文件的是644,创建目录的是755权限,其实是和umask有关,使用umask进程掩码,在系统中是个数字,影响着这个系统创建的默认权限
新建文件目录时候,权限会收到umask 的影响,umask表示要剪掉的权限
观察系统默认掩码
直接敲umask
结果0022
权限其实是4位,chmod 7777 file100,一般情况下省略第一个7
chmod u+s file999
touch file999
[root@localhost ~]# chmod u+s file999
[root@localhost ~]# ls -l file999
-rwSr–r–. 1 root root 0 7月 9 02:52 file999
[root@localhost ~]# chmod u-s file999
[root@localhost ~]# ls -l file999
-rw-r–r–. 1 root root 0 7月 9 02:52 file999
[root@localhost ~]# chmod u+x file999
[root@localhost ~]# ls -l file999
-rwxr–r–. 1 root root 0 7月 9 02:52 file999
[root@localhost ~]# chmod u+s file999
[root@localhost ~]# ls -l file999
-rwsr–r–. 1 root root 0 7月 9 02:52 file999
[root@localhost ~]#
注意区分代码里面的小s和大S
系统在默认创建目录的时候是使用0777-0022=0755
系统为什么创建文件的时候不是755,因为系统为了保护自己,所以在创建文件的时候,去掉了所有的执行。0755-0111=0644
umask 0000
[root@localhost ~]# umask
0000
[root@localhost ~]# mkdir dir222
[root@localhost ~]# touch file222
[root@localhost ~]# ls -l -d dir222 file222
drwxrwxrwx. 2 root root 6 7月 9 03:03 dir222
-rw-rw-rw-. 1 root root 0 7月 9 03:03 file222
finalshell
-ctrl+l:清屏