以前年轻的时候学过很多东西,但是考完试就全扔了,现在只好补补补~
Something about the Linux OS established on MAC via fusion :
1. MAC fusion 的虚拟机文档放位置于 文稿文件夹中
2. 点击command+ctrl释放鼠标
3. clear命令可以用于清屏
4. fn+op+f1~f6
5. 新安装的系统,默认的用户密码与本机一样,我们安装系统之后,不知道root的默认密码,此时我们可以使用 sudo passwd来设置,之后就可以su - root登陆啦~
6. 启动虚拟机设备-》alt-》进入BIOS设置
启动虚拟机设置-》重新启动
分区
分区-》格式化-》挂载
一、系统分区
1. 主分区,最多只能有4个
2. 扩展分区,不能格式化,数量只能有1个,主分区 + 逻辑分区 = 4
3. 逻辑分区
二、格式化
硬盘分区后需要格式化才能写入数据(高级格式化,逻辑格式化):根据用户选定的文件系统,如FAT32,NTFS,EXT2,EXT4等,在磁盘的特定区域写入特定数据(在分区中划分出一片用于文件管理的磁盘空间存放文件分配表,目录表等信息)。格式化时,将某个分区分割成一个一个等大小的数据块(block),文件一般是随机存放在多个block上(与链表差不多),我们只需要知道初始block的索引就可以得到所有的数据(每个文件都有一个编号对应一个inode号,inode节点保存文件其实block的id号),磁盘碎片的功能就是尽量把文件放在一起~
三、硬件设备
IDE:/dev/hd[a-d](primary-secondary, master-slavery)
SCSI/SATA/USB:/dev/sd[a-p](先侦测到的先分配文件名)
鼠标:/dev/mouse
1)速度,价格
SCSI>IDE
SATA 速度最快,目前最常用,虚拟机也是这个
IDE:
SCSI:
SATA:
四、挂载
给分区设置盘符(不同的路径可以挂载不同的分区)
/,根目录
/swap,内存的2倍大,不超过2GB
/boot,启动分区,200MB足够了(防止根目录写满)
常用命令
1. 使用“\”跳脱enter
2. 命令 【-option】 【参数】
- 个别命令不遵循这个格式
- 当有多个选项的时候,可以写在一起(有些顺序是不可以改变的)
- 简化选项和完整选项(如-a -all)
3. /bin,/sbin,/usr/sbin与/usr/bin之间的区别
(Fr: http://blog.csdn.net/kkdelta/article/details/7708250)
这些目录都是用来存放命令的,从用户权限的角度来看/sbin只有管理员才可以运行,而/bin可以由管理员和一般用户使用。在系统启动后,/bin,/sbin目录自动挂载到根文件系统(与根文件系统同一个分区),而/usr/bin与/usr/sbin可以与根目录不在同一个分区,
- /bin存放一些普通的基本,如ls,chmod等
- /sbin下的命令属于基本的系统管理命令,比如shutdown,reboot等
- /usr/sbin存放一些网络管理的必备程序如swap,in.*d等
- /usr/bin存放一些应用软件的必备执行文档,比如gcc,man,locale,make等
1. ls(list) 显示目录与文件信息
位置:/bin/ls
例子:ls -ald 文件和目录
- a 显示当前目录下所有文件,包含隐藏文件(.开头)
- l 详细信息的显示,“文件类型与权限 引用次数(硬链接)owener group 大小 最后内容修改日期 名字”
时间:linux没有创建时间,只有上次访问时间,文件内容修改时间,文件状态修改时间三个概念
文件类型:“-”表示普通文件,d表示目录,l表示软链接
权限:r 读取,w 写,x 执行
u g o
rw- -r- -r-
- h 人性化显示文件大小
- d 查看当前目录属性
- i 查看inode号
appletekiMacBook-Pro:~ apple$ ls -dlhi Music
379641 drwxr-xr-x+ 7 apple staff 238B 7 24 11:21 Music
2. mkdir(make directory) 创建新目录
- p 递归创建
appletekiMacBook-Pro:Desktop apple$ mkdir -p ./d1/d2
3. cd(change directory) 改变工作目录
. 当前目录
.. 父目录
位置:shell内置命令
appletekiMacBook-Pro:Desktop apple$ cd ./d1
4. pwd(print working directory) 打印当前工作目录
appletekiMacBook-Pro:d1 apple$ pwd
/Users/apple/Desktop/d1
5. rmdir(remove directory) 删除空目录
appletekiMacBook-Pro:d1 apple$ rmdir d2
6. cp(copy) 复制文件
cp -rp 源文件1/目录1 [源文件2/目录2] … 目的文件/目录(没有相关文件会创建一个,此时可以自己给个新名字)
-r 复制目录
-p 保留文件属性
appletekiMacBook-Pro:Desktop apple$ cp 1.txt 2.txt ./d1/
appletekiMacBook-Pro:Desktop apple$ ls ./d1
1.txt2.txt
7. mv(move) 剪切文件,改名
mv 原文件/目录 目的目录
8. rm(remove) 删除文件(没有恢复的可能了,不是像回收站,但是我们可以用应用软件恢复文件)
-r 删除目录
-f 强制执行(不询问)
9. touch 创建空文件
- touch 文件名
- touch 绝对路径/文件名
想要创建带空格的文件名时,可以采用双引号括起来如: touch “profile 1”
10. cat 显示文件内容
-n 显示行号
11. tac 倒着显示文件内容
位置:/usr/bin/tac
12. more 分页显示文件内容
- f 翻页
- enter 换行
- q 退出
13. less与more差不多,但是可以向上翻页(pageUp),还可以进行搜索(输入“/关键字”按回车),按n(next)往下找
位置:/usr/bin/less
grep keyword | more
14. head 显示前几行,tail显示末尾几行
- n 指定行数
位置:/usr/bin/head, /usr/bin/tail
15. ln(link) 创建硬链接文件
ln 源文件 目的文件
-s 创建软连接
“l”类型文件表示软link文件,类似windows的快捷方式,这个文件的权限不决定源文档,权限由源文件决定。硬链接文件的文件类型不是l,硬链接相当于拷贝 cp -p,但是与拷贝时硬链接可以同步跟新,删除原档的时候,软链接没了,而硬链接还在~
appletekiMacBook-Pro:Desktop apple$ ln -s 2.txt s2.txt
appletekiMacBook-Pro:Desktop apple$ ls -l 2.txt
-rw-r--r-- 1 apple staff 24 9 2 21:46 2.txt
appletekiMacBook-Pro:Desktop apple$ ls -l s2.txt
lrwxr-xr-x 1 apple staff 5 9 2 22:01 s2.txt -> 2.txt
怎么判断文件的硬链接?
采用ls -i查看文件的inode号,硬链接和源文件的inode号是一样的~
硬链接不能跨分区,不能针对目录使用,只能是文件
1. chmod(change permission mode) 改变文件或目录权限(只有owener和root才能修改文件的权限)
chmod {ugoa} {+-=} {rwx} 或者mode 文件或目录
mode=421(r — 4, w — 2, x — 1)
-r 递归修改
appletekiMacBook-Pro:Desktop apple$ ls -l 2.txt
-rw-r--r-x 1 apple staff 24 9 2 21:46 2.txt
appletekiMacBook-Pro:Desktop apple$ chmod u+x,g+w 2.txt(多个权限设置中间不能有空格)
appletekiMacBook-Pro:Desktop apple$ ls -l 2.txt
-rwxrw-r-x 1 apple staff 24 9 2 21:46 2.txt
- file
r: cat/more/head/less/tac
w: vim
x: 执行script,command文件等
- directory
r: ls
w: touch/mkdir/rmdir/rm
x: cd
2. chown(change owner) 改变文件或目录的所有者(只有root才能进行该操作)
chown 用户 文件或目录
chown amy:a_init /tmp/amy_file
3. chgrp(change group) 改变文件或目录的所有组
chgrp 用户组 文件或目录
4. umask 显示、设置文件的缺省权限
-S 显示目录目录权限,以rwx形式显示
appletekiMacBook-Pro:d1 apple$ umask
0022(第一个0是特殊权限,022表示目录的缺省权限为777-022)
appletekiMacBook-Pro:d1 apple$ umask -S
u=rwx,g=rx,o=rx
appletekiMacBook-Pro:d1 apple$ ls -dl .
drwxr--r-x 5 apple staff 170 9 2 21:46 .
1. find(尽量少用这个命令,占用大量系统资源)
find 搜索范围 选项 条件
通配符 “*”
匹配单个字符 “?”
- name
- iname 不区分大小写
- size 后面跟的是文件大小,多少个512字节 0.5K
+n 大于,-n小于,n等于
- user根据所有者查找
- group根据群组查找
- amin 访问时间 -5(分钟内) +5(大于5分钟)
- cmin 文件属性改变时间
- mmin 文件内容改变时间
- a 两个条件同时满足
- o 或者
appletekiMacBook-Pro:~ apple$ find /etc -size +16000 -a -size -25000
-exec/-ok 命令 {} \; 对搜索结果执行操作(不需要a和o, ok会询问)
{}表示结果,\转义字符,“;”表示结束
appletekiMacBook-Pro:~ apple$ find ./Desktop -name d1 -exec ls -l {} \;
total 16
-rw-r--r-- 1 apple staff 24 9 2 21:46 1.txt
-rw-r--r-- 1 apple staff 24 9 2 21:46 2.txt
- type 根据文件类型查找(f文件,d目录,l软链接)
- inum 根据i节点查找(同样可以找到硬链接)
2. locate 在文件资料库中查找文件(创建了还未被收录到文件资料库中就找不到,此时可以执行updatedb命令,但是\tmp下的也可能找不到)
locate 文件名
位置:/usr/bin/locate
- i 不区分大小写查找
3. grep 文件中搜寻字符串匹配的行并输出
grep 关键字 文件
位置:/bin/grep
-i 不区分大小写
-v 排除指定字符串
配置文件的注释或脚本的注释采用“#”开头
4. which 找到命令所在目录以及别名信息
which 命令
位置:/usr/bin/which
5. whereis 找到命令所在目录以及帮助文档路径
位置:/usr/bin/whereis
whereis 命令
6. whatis 只读取命令的简短信息
whatis 命令
1 命令的帮助
5 配置文件的帮助
appletekiMacBook-Pro:~ apple$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
文件一般先查找命令的信息
7. apropos 配置文件(查看配置文件的信息)
1. man(manual) 获取帮助信息(命令或配置文件的帮助信息)
位置:/usr/bin/min
- /关键字,按n进行next
- q退出
man 配置文件的绝对路径(此时会显示文件的内容,所以只要加上文件名称就可以了,不用绝对路径,如man ls而不是man /bin/ls)
2. help 获取shell内置命令的帮助信息
shell 命令解释器
找不到命令所在路径的都是shell内置命令,不能用man查看信息
3. info
1. useradd 添加新用户(只有root可以操作)
useradd name
位置:/usr/sbin/useradd
2. passwd 设置密码(用户可以使用更改自己的密码,而管理员可以更改所有用户的密码)
passwd 用户名(设置完相应密码,某个用户才可以登入使用)
位置:/usr/bin/passwd
3. who 查看登陆用户信息
位置:/usr/bin/who
tty 本地登陆/端口 登陆时间(登陆客户IP地址)
pts 远程登陆/端口
4. w 得到更为详细的用户登陆信息
位置:位置:/usr/bin/who
up 时间(说明服务器已经开启了多长时间)
在linux中,.gz与.zip为压缩文件后缀
1. gzip 压缩文件-》.gz,不保留源文件
gzip只能压缩文件,而不能是目录
2. gunzip 解压缩.gz文件(gzip -d)
3. tar 压缩后文件名(即使没有tar后缀,仍然是打包) 将被打包压缩的目录
压缩后的格式.tar.gz
-c 打包
-z 打包同时压缩
-v 显示详细信息
-f 指定文件名
appletekiMacBook-Pro:Desktop apple$ tar -czf d1.tar.gz ./d1
gzip nba.tar
-x 解包
-z 解压缩
-f 指定解压文件
tar -zxvf nba.tar.gz
4. zip 压缩后文件名 文件或目录
位置:/usr/bin/zip
-r 压缩目录
5. unzip解压缩
6. bzip2 压缩文件(大文件推荐,后缀.bz2)
-k 压缩后保留原文件
tar -cjf(生成.bz2的文件)
-xjf(解压)
7. bunzip2
-k 解压缩后保留原文件
1. write 给在线用户发送信息,以ctrl+D保存结束
write 用户名(内容出错时,按del删除)
位置:/usr/bin/write
2. wall 给所有在线用户发信(广播信息,包括自己)
wall 发送信息
位置:/usr/bin/wall
3. ping IP地址
-c 指定发送次数,测试网络连通性
ping 自己的IP地址来测试自己网卡是否正常
4. ifconfig 查看和配置网卡信息(root才可以执行,这是修改是暂时的,我们可以setup设置多一点)
ifconfig 网卡名称 ip地址
5. mail 查看发送电子邮件(不管用户在不在线)
mail 用户
输入mail命令后直接回车,可以查看mailbox,里面每个mail都有序列号
-h 重新返回收件箱
-d 序列号 删除邮件
6. last 查看目前和过去的所有登录系统的用户信息
位置:/usr/bin/last
7. lastlog 所有用户上一次登录的信息
位置:/usr/bin/lastlog
-u UID 只查看某个用户上次的登录信息
8. traceroute 显示数据包到主机间的路径
9. netstat 显示网络相关信息
-t TCP
-u UDP
-l 监听
-r 路由
-n IP地址和端口号
-tlun 查看本机监听的端口
- an 本机所有的网络连接
- rn 查看本机路由表
10. setup 配置网络(redhat,只有root有执行权限)
这种情况下配置ifconfig不是永久生效的
DHCP 自动获取(有DHCP服务器才行)
11. mount 【-t 文件系统如iso9660光盘文件系统】 设备文件名如“/dev/sr0” 挂载点
umount 设备文件名 可以解除挂载(退出挂载点再umount)
mount -t iso9660 /dev/sr0 /mnt/cdrom
1. shutdown(推荐)
-h 时间(比如now,20:30) halt
-r 时间 reboot
-c 取消前一个关机命令 cancel
关机重启前应该先停掉服务,而不是直接就断掉(会损坏硬盘)
halt
poweroff(直接断,不好)
init 0
init 6
reboot
系统运行级别:
0 关机 shutdown,默认级别不能设置为0,因为一开机就关机
1 单用户 root 启动最核心的服务,用来作修复(安全模式)
2 不完全多用户(NFS,可能有安全隐患)
3 完全多用户(命令行)
4 未分配
5 图形界面
6 重启 reboot,默认级别不能设置为6,因为一开机就重启
cat /etc/inittab
id:3:initdefaul
runlevel 查询系统运行级别
logout 退出登录
用户管理:越是对服务器安全性要求高的服务器,越需要建立合理的用户权限等级制度和服务器操作规范,Linux主要是通过用户配置文件来查看和修改用户信息
1. 配置文件
- /etc/passwd 用户信息文件
1)用户名称
2)密码标识(现在密码一般加密放在/etc/shadow文件中)
passwd因为存放用户信息,所以用户可以看到自己的信息(x表示去/etc/shadow中找密码)
vim /etc/shadow
3)UID
UID(电脑不认识字母,所以用UID标识用户):
0 超集用户(不能说root一定是管理员)
1-499 系统用户(伪用户,系统启动服务命令时自动调用的)
500-65535 普通用户
4)GID
初始组(使用GID匹配/etc/group下面的信息来判断初始组):每添加一个用户,就创建一个同名的组,每个用户都至少有一个组,初始组只有一个,可以修改组名
附加组:指用户可以加入多个其他的用户组,并拥有这个组的权限,附加组可以有多个
5)用户说明
6)家目录/home/用户名 /root
7)登陆之后的shell,命令解释器
根目录和普通用户shell默认是/bin/bash,伪用户/sbin/nologin
shell一不小心改错了,就悲剧了
- 影子文件/etc/shadow,root可以访问所有文件,权限对它没影响
1)用户名
2)加密密码
SHA512散列加密,!!和*表示没有密码,不能登陆(相同的密码,结果不一样)
暴力破解
3)密码修改日期
时间戳,一样是1970.1.1开始算,多一天+1
4)两次密码的修改间隔之后才能改
5)密码有效期
6)密码修改到期前的警告天数
7)到期之后的宽限期限
0,马上失效
-1,永不失效
8)账号失效时间,同样采用时间戳表示
不管有效期,到这个时间就失效
9)保留
date -d“1970.01.01 16000 days”
echo $(($ (date - -date=“2014/01/06”+%s)/86400+1))
- /etc/group 组信息文件
1)组名
2)组密码标志 /etc/gshadow
3)GID
4)组中附加用户
- /etc/gshadow 组密码文件
1)组名
2)组密码
3)组管理员用户名
4)组中附加用户
- 用户家目录
1)普通用户,自动建立,所有者和所属组都是此用户,权限是700
2)超级用户,/root/,所有者和所属组都是root,权限是550
普通用户-》超级用户
将所属组GID变为0并不能改变什么,而是将UID变成0
- /var(可变)/spool/mail/用户名/ 用内存直接练习(就是没有服务器,而是直接客户端)
- 用户模板目录:/etc/skel/ 模板文件 添加用户时,为用户自动创建一些文件
1. useradd 用户名(只有root可以执行该命令,没密码就不能登陆,同时会创建一个同名初始组)
-u UID
-d 家目录 手动设置家目录(默认权限700)
-c 用户说明 设置用户说明
-g 组名 手动设置初始组
-G 组名 指定用户的附加组,多个组可以用,隔开
-s shell 指定用户的登录shell,默认是/bin/bash
例子:useradd sc
grep sc /etc/passwd
grep sc /etc/shadow
grep sc /etc/group
grep sc /etc/gshadow
ll -d /home/sc/
ll /var/spool/mail/sc
2. passwd 用户名 (只有root可以改)
修改当前所在用户的密码
-S 查询用户密码的密码状态,仅root可用
-l 锁定用户 root可用(用户已经登入就不能锁)
-u 解锁用户 root可用
echo ”123” | passwd - -stdin lamp
前面的结果传给后面
- -stdin就是不手动输入,而是从标准输入获取数据
3. 修改用户信息 usermod
-u UID
-c 用户说明
-G 组名
-L,临时锁定用户
-U,解锁用户锁定
4. 修改用户密码状态 chage(密码之前加任意字符密码就不同会时用户账号登入不了)
chage 用户名
-l 查看详细的密码转态
-d 日期 密码最后一次更改日期,改成0就是从来没有修改密码
5. userdel 用户
-r 删除用户的同时删除用户家目录
手工删除用户(只读文件需要强制保存):
vi /etc/passwd
vi /etc/shadow
vi /etc/group
vi /etc/gshadow
rm -rf /var/spool/mail/用户
rm -rf /home/用户/
我们可以用useradd来证明是否删干净
6. id 用户
查询用户的 uid gid(初始组) 组(哪些组中)
7. env
查看当前用户的环境变量
8. su 用户名(超级用户-》普通用户 不用输入密码)
- 连用户的环境变量一起切换
-c 仅仅执行一次命令
su - root -c “useradd user2”
仅仅使用root身份执行“useradd user2”一次
9. groupadd 组名 (一个用户可以有多个组,缺省组名和用户名相同 useradd -g/G 组 用户 )
-g GID 指定组ID (不加,则从默认后面开始增加)
-n 新组名 旧组名
10. groupdel 组名
初始组不能删,只有把该组的初始用户删除后才可以被删
附加用户,可以删,因为初始组还是附加用户同名的组
11. gpasswd 用户 组名
-a 已经存在用户加入组
-d 删除组中的用户
文件操作
主分区:最多只能有4个
扩展分区:只能有1个,不能格式化,必须划分成逻辑分区才能使用
逻辑分区:IDE(59) SCSI(11)
EXT2,最大支持16TB分区,最大2TB文件
EXT3,支持大小和EXT2相同,但是带有日志功能
EXT4,向下兼容EXT3,支持1EB分区和16TB文件,无限数量子目录,extends连续数据块概念等
1. df 统计分区文件系统的占用情况
-h 使用习惯单位显示容量,文件+系统进程占用的资源,看到的剩余空间是真的可用
-a 查看所有文件系统信息,包括特殊文件系统,如/proc,/sysfs
-T 显示文件系统类型
2. du -h查看目录或文件大小(与ll -h的区别,只统计目录下的文件名占用了多少)
-a 显示每个子文件的磁盘占用量,默认只统计子目录的磁盘占用量
-s 统计总占用量,不列出子目录和子文件的占用量
df是从文件系统考虑的,还要统计被命令或程序占用的空间。du命令时面向文件的,只计算文件和目录占用的空间,如果一个正在运行的文件被删除,但是df还没反应过来,就会计算多~
3. fsck 分区设备文件名(文件系统修复命令,底层修复,开机时系统自动修复 不用)
-a 不用显示用户提示,自动修复文件系统
-y 自动修复
4. dumpe2fs 分区设备文件名(检测磁盘状态)
查看超级块是否有执行权限等
5. mount 查询系统中已经挂载的设备,-l会显示卷标名称
-a 依据配置文件/etc/fstab的内容,自动挂载
mount | grep /dev/
mount 设备文件名 挂载名
-t 文件系统,如ext3, ext4, iso9660(光驱)等 (vfat[linux,wins])
-L 卷标名,为分区起别名
-o 特殊选项,可以指定挂载的额外选项
remount 重新挂载文件系统
exec 允许文件系统中执行可执行文件 noexec不允许
mount -o remount,no exec /home
6. 挂载光盘和U盘
- 创建挂载点
- 挂载
mkdir /mnt/cdrom/
mount -t iso9660 /dev/cdrom /mnt/cdrom/
mount /dev/sr0 /mnt/cdrom
media 光盘
mnt U盘
/dev/cdrom
/dev/sr0
7. 退出目录后,才可以解载
umount 挂载点或设备文件名
8. 挂载U盘
fdisk -l 查看U盘设备文件名(与光盘不同,与硬盘差不多,都是系统自动识别)
找到分区号
mount -t vfat /dev/sdb1 /mnt/usb/
重新挂载,调整编码集
9. Linux默认不支持NTFS文件系统,但是有方法支持~
内核会自动安装驱动
1. 内核重新编译,加入NTFS驱动
2. 利用第三方的软件
NTFS-3G 插件
vfat(fat32)
fat(16)
fdisk手动分区-分区过程:
fdisk -l 查看新硬盘(要想知道是否挂载,使用mount命令)
fdisk /dev/sdb 使用fdisk命令分区 ctrl+退格键
n 新建分区 p查看分区结果 w保存退出(不重启,使用partprobe重新读取分区表的信息)
mkfs -t 文件类型 分区 格式化
一重启挂载就会丢,不符合,此时我们引入/etc/fstab实现开机自动挂载和文件修复,但是万一写错了,系统可能不能开机
vi /etc/fstab/
1)设备文件名(名字会变)或者UUID(硬盘唯一识别号 dumpe2fs 分区|more)
2)挂载点
3)默认文件系统
4)挂载参数
5)分区是否被dump备份(每个分区下面的lost+found,分区自动备份的数据放在里面)0不备份,1每天备份,2不定期备份
6)是否被fsck检测,0不检测,其他数字代表检测的优先级,1优先级大于2(手工分区都应该<=2)
mount -a 依赖配置文件,自动挂载,如果不正常会提示
崩溃之后,怎么修改:
1)只有文件写错(要求输入密码),才能用这个方法修复
vi /etc/fstab(不能修改,mount -o remount, rw /)
2)如果不小心删了根分区,那重装吧,科科
10. swap分区(记得把swap分区ID改为82,我们也可以使用vi /etc/fsab修改,如/dev/sdb1 swap swap defauls 0 0:
给swap加入空间是可以的
free 查看swap大小
free -m 按M字节来读
cached:是把读取出来的数据保存在内存当中,当再次读取时,不用读取硬盘而直接从内存当中读取,加速了数据的读取过程
buffer:写入数据时,把分散的写入操作保存在内存当中,当达到一定程度再集中写入硬盘,减少磁盘碎片和寻道,加速数据的写入
mkswap 分区 格式化(如果partprobe出错,重启)
swapon 分区 加入swap分区
swapoff 分区 撤销swap分区
内存挂载点:
/proc
/sys
例子:
1)如果新建group,但是一个文件只能有一个初始组
2)找到用户,给权限
1. dumpe2fs 分区是否支持ACL权限
-h 分区(只显示超级块的信息 default mount options)
2. mount 临时开启分区ACL权限(如果分区不支持)
mount -o remount,acl / (重新挂载根分区,并挂载加入acl权限)
3. 永久开启ACL权限,修改fstab文件,然后重新挂载或者重新启动(mount -o remount /)
4. getfacl 文件名(查看acl权限)
5. setfacl 文件名
-m 设定ACL权限
-x 删除指定的ACL权限
-b 删除所有的ACL权限
-d 设定默认ACL权限
-k 删除默认ACL权限
-R 递归设定ACL权限
6. mask是用来指定最大有效权限,如果我们给用户赋予了ACL权限,我们需要和mask相与才能得到真正的权限,setfacl -m m:rx 文件名
7. ACL权限和递归ACL权限
递归是父目录在设定ACL权限时,所有的子文件和子目录拥有与父目录相同权限
setfacl -m u:用户名:权限 -R 文件名(-R位置不可调,这个命令执行的时间有影响,只生效一次,之后再在目录中创建的新文件并没有相同的权限)
8. 默认ACL权限,就是新来的就告诉他权限(旧学员还是得递归)
setfacl -m d:u:用户名:权限 文件名
- SUID
1、作用对象是可执行的二进制程序
x->s 4代表s 例如4755(2是组的,1是BIT,7是全都有)
chmod 4755 文件名
chmod u+s 文件名
chmod 755 文件名
chmod u-s 文件名
2、命令执行者要对程序拥有x权限(没有x时会用S表示),执行程序时,就获得该程序文件属主的身份(就是暂时获得某个身份,这个临时获得身份,只在程序执行中有效)
vim这个程序如果设置了SUID就可怕了,因为在执行过程中vim就拥有对某个只读文件的root权限,那么那个期间我们就可以利用vim随意更改数据
2. SGID
chmod 2755 文件名
chmod g+s 文件名
- 对于可执行的二进制文件的作用与SUID相似,只是身份是组
- 对于目录,该目录下所建立的文件或子目录拥有组都会是该目录的拥有组
3. sticky bit
chmod 1755 目录
chmod o+t 目录名
1)只对目录有效
2)普通用户应该对该目录拥有wx权限
3)如果没有SBIT的话,普通用户拥有写与入权限,就可以删除目录下的所有文件,包括其他用户建立的文件,就是一个用户在目录下创建文件,会被另一个用户删除,此时SBIT就派上用场,除了root可以删除所有文件,普通用户就损有w权限也只能删除自己建立的文件,但不能删除其他用户创建的文件
4. 文件系统属性 chattr
chattr [+-=] [选项] 文件或目录名
-i 对于文件,不允许对文件进行删除,改名,也不能添加和修改数据(只读)。对于目录,只能修改目录下文件的数据,但是不允许建立和删除文件(对root用户也生效,umask对root也生效,但是root可以很方便的+-)
-a 对于文件,只能添加数据,但是不能修改和删除数据,而对于目录表示,只允许在目录中建立和修改文件,不允许删除
5. lsattr 选项 文件名
-a 查看所有文件和目录的属性
-d 只看目录(属性),而不列出子文件
6. sudo 把本来只能超级用户执行的命令赋予普通用户执行,sudo的操作对象是系统命令
- visudo(实际修改的是/etc/sudoers文件)
用户/%组 ALL=(x) ALL(命令)
x为ALL或者本地IP地址,如果是网络,只要NIS服务中有用(集中管理)
授权sc用户可以重启服务器:
visudo
sc ALL= /sbin/shutdown -r now
su - sc
sudo -l(查看可用的sudo命令)
sudo /sbin/shutdown -r now
- 命令模式
- 编辑模式,输入“:”后面加命令如set nu
- 插入模式(a A, i I, o O)
1)定位命令
:set nu 设置行号
:set nonu 取消行号
gg到第一行
G到最后一行
nG到第n行
:n到第n行
$移到行尾
0移到行首
2)删除命令(字符+行)
3)复制剪切
4)替换字符
5)搜索替换(:set noic)
%s表示全文
6)保存退出(文件所有者和root可以对只读文件强行保存)
7):r 文件名(将文件名导入光标处)
:r !which cat
:r !命令
:r !ls
8)定义快捷键:map 快捷键 触发命令
:map Ctrl+V+P I#
:map Ctrl+V+B 0x
9):n1,n2s/^/#/g(^代表行首,$代表句末)
:n1,n2s/^#//g
:n1,n2s/^/\/\//g
替换:ab mymail [email protected](敲入mymail回车或空格后会自动变成kevin...)
家目录下,创建.vimrc(写入编辑命令,不加冒号),此时里面的命令将永远有效
软件包安装
1. 软件包的分类
Windows的.exe安装包不能在Linux系统上安装,Linux软件包主要分为两类:
- 源码包(脚本安装包)
优点:
1)开源,可以修改源代码
2)因为是编译安装,所以更适合系统,更稳定高效
3)卸载方便,只需要删除安装目录就可以啦
缺点:
1)需要编译,所以速度较慢
2)安装步骤比较多
- 二进制包(RPM包)
Redhat,CentOS的安装包是rpm格式,而Ubuntu和Debian的安装包是其他格式
优点:
1)只要通过命令就可以实现包的安装,升级,查询和卸载
2)安装速度比源代码包安装快的多
缺点:
1)不灵活,不能看到源代码
2)依赖性
2. 命名规则
软件包名 版本 发布次数 Linux平台 硬件平台 扩展名
3. RPM包的依赖性
a->b,b安装后a才能安装成功
树形依赖:a->b->c
环形依赖:a->b->c->a(同时安装)
模块依赖:www.rpmfind.net
4. RPM安装,升级
包全名:没有安装软件包时,使用包全名,注意路径
包名:已经安装的,使用包名,搜素/var/lib/rpm/中的数据库(不能用vi打开),如httpd
rpm 包全名
-i 安装
-v 显示详细信息
-h 显示进度
- -nodeps 不检测依赖性
-U 升级
5. 卸载
rpm 包名
-e 卸载
- -nodeps 不检查依赖性
6. 查询
rpm 包名
-q 查询已安装的包
-i 查询软件信息
-p 查询未安装的包信息
-a 查询所有
-l 查询包中文件的安装位置
-f 系统文件名,查询系统文件属于哪个软件包
-R 查询软件包的依赖性
7. 校验和文件提取
rpm -V 包名 校验指定RPM包中的文件(verify)
安装完之后系统会记录当前特征,之后就可以随时比较判断文件是否被别人修改
验证标识 文件类型文件名
8. RPM包中提取文件
rpm2cpio 将包里的某个文件转换成cpio格式
cpio 创建软件档案文件和从档案中提取文件
rpm2cpio 包全名 | cpio -idv .文件绝对路径 (去变为cpio的格式包中提取文件放在当前路径下)
YUM在线管理(redhat需要付费)
一、IP地址配置
对于CentOS7 minimal来说,网卡默认没有打开,所以需要我们的配置一下,才能ping的通yum所指定的baseurl啊~
一些查看命令:
ip: 查看配置/策略路由,设备和tunnel
systemctl status NetworkManager.service:Network Manager是一个动态网络和控制器的配置系统,用于网络设备可用时保持设备和连接开启并激活,在CentOS系统上,我们可以使用systemctl status NetworkManager.service来验证网络管理器服务的状态(是否是active)
nmcli dev status:查看网络接口状态(发现minimal的eno16777736以太接口是disconnected)
1. 打开接口:
1)vi /etc/sysconfig/network-scripts/ifcfg-eno16777736
2)ONBOOT=no改为ONBOOT=yes 启动网卡
3)service network restart 重启网络服务
如果此时发现接口还是失联,就可以reboot一下计算机~
确保接口连接正常,此时,就可以ping一下mirrorlist.centos.org啦~
CentOS7默认是采用DHCP动态获取IP,如果想要自已配置IP,ifconfig只能是暂时的修改配置IP(如果/sbin下面没有该指令,可以通过yum install net-tools在线安装ifconfig,如果有,修改一下PATH就可以啦),在redhat系统中可以使用setup配置并重启系统来让配置永久生效,而在其他的linux系统中,我们直接去“/etc/sysconfig/network-scripts/ifcfg-相应接口”文件中修改相关的IP配置,之后通过service network restart来重启网络服务~
2. 我才不是处女座,但我就想修改一下interface的名字,eno16777736太难听了!恩,就是这样
1)vi /etc/sysconfig/network-scripts/ifcfg-eno16777736
将NAME改名成eth0
2)cd /etc/sysconfig/network-scripts
mv ifcfg-eno16777736 ifcfg-eth0
3)vi /etc/default/grub
在GRUBCMDLINELINUX变量中添加net.ifnames=0 biosdevname=0(注意是在原来的引号内)
grub2-mkconfig -o /boot/grub2/grub.cfg使刚才GRUB配置生效更新内核参数
4)重启 reboot
5)ifconfig查看刚才的配置是否成功~
6)我们可以在/etc/udev/rules.d/70-persistent-ipoib.rules中创建规则来避免内核以自己的方式命令接口~
3. 网络yum源
vi /etc/yum.repos.d/CentOS-Base.repo(enabled默认是1)
4. 常用yum命令
-yum list 查看yum可用软件包
-yum search 关键字 搜索服务器上所有与关键字相关的包
-yum -y install 包名(-y自动回答yes)
-yum -y update 包名 自动升级所有的软件包(包括Linux内核也会更新,此时需要在本地执行相关的配置)
-yum -y remove 包名 卸载
-yum grouplist 列出所有可用的软件组列表
-yum groupinstall 软件组名 安装指定软件组
-yum groupremove 软件包组 卸载指定软件组
5. 光盘yum源的搭建
1)挂载光盘
2)让网络yum源文件失效(除了CentOS-Media.repo之外,把/etc/yum.repos.d目录下的其他文件删掉,当然不要忘了备份)
3)将baseurl=file:///...(改为自己光盘的挂载位置,注意在配置文件中,注释放在行首,不加缩进)
6. 源代码 VS RPM包
- 安装位置
源码包默认安装在/usr/local/软件名/目录下,而RPM包如下:
Note:因为源码包和RPM包安装地点不同,所以可以重复安同一个软件
- 开启服务
因为安装位置的不同,开启服务的方式也是不同的,比如对于apache:
1)/etc/rc.d/init.d/httpd start(service httpd start)
2)绝对路径 start(对于源码包)
7. 源码包的安装(源码安装在/usr/local/src/下面)
- yum -y install gcc
安装源码包之前,我们需要安装gcc,这样才能编译源码呀。源码包中INSTALL文件是安装说明,README是软件说明
- 下载源码包
- 解压源码包 tar -xzf 文件
- 进入解压缩目录
- ./configure --prefix=/usr/local/软件名(一般都要自己定义)
检测系统环境是否符合安装要求,把定义好的功能选项和检测系统环境的信息都写入makefile,用于后续的编辑
- make 编译(依赖makefile文件)
./configure和make过程中报错,直接用make clean清空临时文件就可以重装了
- make install 编译安装(依赖makefile文件,这个phase往目录中写入数据)
8. 脚本安装包
- 脚本安装包是源代码执行脚本,但是已经定义了好了自动安装的过程,不用我们自己手动去make什么的~
对外提供访问,就采用源码包,个人使用采用RPM包
9. 我就是想装个图像界面
yum groupinstall -y "GNOME Desktop"
startx
Reference:
1. 兄弟连Linux入门
2. http://jingyan.baidu.com/album/7f41ecec1b022e593d095c1e.html?picindex=5