前言
早年看视频整理的一些笔记,虽然比较基础但是基本包含了Linux所需的所有指令
linux 简介
Unix发展史
Linux发展历史
Linux主要发行版本
- RedHat
- Detian
开源软件的简介
Linux运用领域
linux分区
磁盘分区
- 主分区只能有4个
- 扩展分区:
- 最多只能有1个
- 主分区加扩展分区不能超过四个
- 不能写入数据,只能作为逻辑分区
- 逻辑分区
格式化
又称逻辑格式化
为了写入文件系统
FAT16、FAT32、NTFS、EXT2、EXT3、EXT4
硬件设备文件名
- /dev/hda1 (IDE硬盘接口)
- /dev/sda1 (SCSI硬盘接口、SATA硬盘接口)
挂载
给每个分区分配挂载点
- 必须分区
- / (根分区)
- swap分区 (交换分区,内存的两倍,不超过2G)
- 推荐分区
- /boot (启动分区 200MB)
linux 目录
- /bin/
- /sbin/
- /usr/bin/
- 单用户之下不能运行
- /usr/sbin/
- /boot/
- /dev/
- /etc/
linux 常用命令
目录操作命令
硬链接拷贝特征
- 拷贝 cp -p + 同步更新
例如:echo "www.xxxx.net" >> /etc/issues
- 不能通过 i 节点识别
- 不能跨分区
- 不能针对目录使用
chmod 权限管理命令
umask -S 检查出来的权限默认不可执行
Linux touch 的文件默认是没有可执行权限的
搜索命令
find /etc/ -name init
find / size +204800
find /home -user shenchao
数据换算
100MB = 102400KB = 204800K
1K = 0.5KB
对于搜索结果执行操作
find /etc -name inittab -exec ls -l {} \;
系统的运行级别
- 0: 关机
- 1:单用户
- 2:不完全多用户,不包含NSF服务
- 3: 完全多用户
- 4:未分配
- 5: 图形界面
- 6: 重启
linux 用户管理
/etc/passwd
- 第一字段:用户名
- 第二字段:密码标志
- 第三字段:UID (用户ID)
- 0 超级用户
- 1-499 系统用户(伪用户)
- 500-65535 普通用户
- 第四字段:GID(用户初始组ID)
- 初始组和附加组
- 第五字段:用户说明
- 第六字段:家目录
- 普通用户:/home/用户名
- 超级用户:/root
- 第七字段:登陆之后的shell
- 命令解析器
- /bin/bash 或者 /sbin/nologin (一般不改)
shadow 文件 (影子文件)
- 用户名
- 密码
- 升级为使用SHA512 散列加密算法
- 如果密码为 "!!" 或者 '*' 代表没有密码目录
- 密码最后一次修改日期
- 使用标准时间戳类型
- 两次修改密码的间隔
- 密码有效期
- 密码修改到期前的警告
- 到期过后的宽限天数
- 0:密码过期之后立即失效
- -1:密码永远不会失效
- 账号失效时间
- 保留
时间戳换算
- 时间换算为日期
- date -d "1970-01-01 160066 days"
- 日期换算为时间戳
- echo (((date -- date="2014/01/06" +%s)/86400+1)
组信息文件 /etc/ group
- 组名
- 组密码标志
- GID
- 组中附加用户
用户相关文件
用户家目录
普通用户:/home/用户名,所有者和所属组都是此用户,权限默认是700
超级用户:/root/,所有者和所属组都是root,权限为550
用户邮箱
/var/spool/mail/用户名
用户模板目录
/etc/skel
用户管理
useradd [用户名]
+ -u UID : 指定用户 Uid + -d 家目录 + -c 用户说明 + -g 组名:用户组名 + -G 组名: 附加组 + -s shell: 手工指定
用户默认值文件
/etc/default/useradd
+ group=100 //用户默认组 + home = /home //用户家木库 + inactive = -1 //密码过期宽限时间 + expire = //密码失效时间 + shell=/bin/bash //默认shell + skel = /etc/skel //模板目录 + create_mail_spool = yes //是否建立邮箱
/etc/login.defs
+ PASS_MAX_DAYS 99999 #密码有效期 + PASS_MIN_DAYS 0 #密码修改间隔 + PASS_MIN_LEN 5 #密码最小5位 + PASS_WARN_AGE 7 #密码到期警告 + UID_MIN 500 # + GID_MAX 60000 + encrept_method sha512
用户密码
查看密码状态
passwd -S lamp
lamp PS 2013-01-06 0 9999 7 -1
使用字符串作为用户的密码
echo "123" | passwd --stdub lamp
修改用户信息
usermod
选项:
-c, --comment 注释 GECOS 字段的新值 -d, --home HOME_DIR 用户的新主目录 -e, --expiredate EXPIRE_DATE 设定帐户过期的日期为 EXPIRE_DATE -f, --inactive INACTIVE 过期 INACTIVE 天数后,设定密码为失效状态 -g, --gid GROUP 强制使用 GROUP 为新主组 -G, --groups GROUPS 新的附加组列表 GROUPS -a, --append GROUP 将用户追加至上边 -G 中提到的附加组中, 并不从其它组中删除此用户 -h, --help 显示此帮助信息并推出 -l, --login LOGIN 新的登录名称 -L, --lock 锁定用户帐号 -m, --move-home 将家目录内容移至新位置 (仅于 -d 一起使用) -o, --non-unique 允许使用重复的(非唯一的) UID -p, --password PASSWORD 将加密过的密码 (PASSWORD) 设为新密码 -R, --root CHROOT_DIR chroot 到的目录 -s, --shell SHELL 该用户帐号的新登录 shell -u, --uid UID 用户帐号的新 UID -U, --unlock 解锁用户帐号 -Z, --selinux-user SEUSER 用户账户的新 SELinux 用户映射
修改用户状态
chage
选项:
-d, --lastday 最近日期 将最近一次密码设置时间设为“最近日期” -E, --expiredate 过期日期 将帐户过期时间设为“过期日期” -h, --help 显示此帮助信息并推出 -I, --inactive INACITVE 过期 INACTIVE 天数后,设定密码为失效状态 -l, --list 显示帐户年龄信息 -m, --mindays 最小天数 将两次改变密码之间相距的最小天数设为“最小天数” -M, --maxdays 最大天数 将两次改变密码之间相距的最大天数设为“最大天数” -R, --root CHROOT_DIR chroot 到的目录 -W, --warndays 警告天数 将过期警告天数设为“警告天数”
chage -d 0 lamp 使用较多
其实就是吧修改日期归0
用户一登录就要修改密码
删除用户
userdel 用户名
一般写法 userdel -r 用户名
切换用户
一定要加 - 连带环境一起切换
用户权限
- ACL权限
- 文件特殊权限
- 文件系统属性chattr权限
acl权限
解决身份不足的问题
查看分区ACL 权限是否开启
dumpe2fs -h /dev/sda3
查询指定分区详细文件系统信息的命令
选项:
-h 仅显示超级块的信息
df -b
查看分区情况
临时开启分区ACL 权限
mount -o remount.acl
重新挂载根分区,加入acl权限
永久开启分区acl 权限
- vi /etc/fstab
- UUID=XXXX / ext4 defaults,(逗号)acl 1 1 #加入acl
- mount - o remount 生效
查看和设置acl权限
getfacle 选项 文件名 查看权限
setfacle 选项 文件名字
设置acl权限
选项
- -m 设定acl权限
- -x 删除指定acl权限
- -b 删除所有acl权限
- -d 设定默认acl权限
- -k 删除默认acl权限
- -R 递归设定acl权限
实例: setfacl -m u:st:rx 文件路径
最大有效权限和删除acl权限
mask :指定最大有效权限的
如果给用户acl 权限,
需要与mask权限 “相与” 才能得到真正的权限
修改最大有效权限: setfacl -m m : rx 文件名
设定mask 权限 为 r-x ,使用 “m:权限”格式
删除acl权限
setfasl -b 文件名
setfacl -h 指定
默认acl 权限和递归acl权限
setfacl -m u:用户名:权限 -R 文件名
默认分配acl权限
setfacl -m d:u:用户名:权限 用户名
特殊权限
SetUID
- 可以执行二进制程序才能设定
- 命令执行者要拥有X(执行)权限
- 命令执行者在执行该程序时获得该程序文件属主的身份
- SetUID 只能在该程序执行过程中有效
举例:所有用户都可以执行passwd命令
设置方法
- chmod 4755 文件名
- chmod u+s 文件名
4代表SUID
危险的SetUID
- 关键目录严格控制写权限 "/", "/usr"等
- 用户密码严格遵守规范
- 对系统默认的都应该具有SetUID 权限的文件作为统一列表,并且定时检查
SetGID
针对目录的作用
- 普通用户必须对此目录拥有r 和 x 权限,才能进入此目录
- 普通用户在此目录的有效组会变成此目录的所属组
- 普通用户对此目录有w权限,新建文件的默认属组都是这个目录的属组
条件:
- /usr/bin/locate 是可执行二进制程序,可以赋予SGID
- 执行用户lamp 对 /usr/bin/locate 命令有执行权限
- 执行/usr/bin/locate 命令时,组身份会升级为slocate,
- 命令结束,lamp身份返回lamp组
SetBID (Stickt Bit)
作用
- 只对目录有效
- 普通用户对该目录只有w和x 权限,普通用户可以写入权限
- 如果没有黏着位,用户可以删除此目录所有的文件,包括其他用户建立的文件
- 一旦赋予黏着位,除了root可以删除所有文件外,其他用户即使有w权限,也不能删除其他用户建立的文件,只能删自己的
文件系统属性 chattr 权限
选项:
- i:
- 如果文件设置i属性,那么不允许对于文件进行删除,改名,也不能添加和修改数据,
- 如果对于目录设置i,只能修改目录下文件的数据,不能建立和删除文件
- a:
- 文件:只能在文件中添加数据,不能修改
- 目录:只允许建立和修改,不能删除
查看文件系统属性
lsattr 选项 文件名
-a : 全部文件和目录
-d:如果是目录,则列出目录本身属性,而不是子文件
命令格式
....
sudo权限
操作对象是系统命令
使用
visudo :实际上是修改 /etc/sudoers
文件系统管理
df 命令
df -h
常用
du 命令
du -sh 文件路径
df 和 du 命令区别
- df 命令从文件系统考虑,不仅仅考虑文件占用空间,还要考虑被命令或者程序占用的空间(最常见为删除了索引的文件,但是内部并没有被删除)
- du 命令是面向文件的,只会计算文件或者目录占用空间
文件系统修复命令
fsck 选项 分区设备文件名
选项:
-a 不显示用户提示,自动修复
-y 自动修复
dump2fs 查看磁盘状态
挂载命令
查询与自动挂载
- mount [-l]
- mount -a
- 根据配置文件 /etc/fstab 的内容, 自动挂载
卸载
umount 设备名或者挂载点
挂载U盘
fdisk -l
查看U盘设备
mount -t vfat /dev/sdb1 /mnt/usb
linux 默认不支持 NTFS文件系统
如何支持
- 内核编译
- 下载 Ntfs - 3G插件
fdisk 分区
查看新硬盘: fdisk - l
重新读取分区信息: partprobe
分区自动挂载与fstab文件修复
依赖 /etc/fstab
- 分区设备文件名或者UUID
- 挂载点
- 文件系统名称
- 挂载参数
- 指定分区是否被dump备份,0不备份,1每天备份,2不定期备份
- 分区是否被fsck 检测, 0不检测,其他数字代表检测的优先级高,1的优先级当然比2高
检测自动挂载报错:
mount -a 查看有无报错
/etc/fstab 文件修复
mount -o remount,rw /
重新挂载
分配swap分区
加入缓存
格式化: mkswap /dev/sdb6
加入swap分区:
swapon /dev/sdb6
取消
swapoff /dev/sdb6
linux 服务
命令: chkconfig --list 服务自启动
ps aux
RPM包安装服务的位置
- 源码安装在指定位置:/usr/local
- RPM安装在默认位置
独立服务启动
- /etc/init.d/独立服务名 start | stop |status | restart
- service 独立服务名 start | stop |restart |status
独立服务自启动
- chkconfig [--level 级别]][独立服务器名][on | off]
- /etc/rc.d/rc/local
- ntsysv 命令
linux 进程管理
作用
- 查看服务健康状态
- 查看所有进程
- 杀死进程
PS 命令
- ps aux (BSD模式)
- ps le (标准)
参数说明
USER | 那个用户产生 |
PID | 进程pid号码 |
%CPU | cpu占用百分比 |
%MEM | 物理内存占用百分比 |
VSZ | 占用虚拟内存的大小 |
RSS | 占用实际物理内存的大小 |
TYT | 该进程在哪个终端运行 |
查看系统监控状态
top [选项]
kill 命令
kill -l
查看信号
常用
1 SIGHUP 立即关闭进程(重启)
9 SIGKILL 立即结束程序
15 SIGTERM 正常结束程序
查看后台的工作
jobs [-l]
后台暂停的工作回复到前台操作
fg %工作号
系统资源查看
开机时内核检测
dmesg | grep cpu
查看内容使用状态
free [-b|-k|-m|-g]
缓存和缓冲的区别
缓存: 加强读取
缓冲: 加强写入
查看CPU 信息
cat /proc/cpuinfo
uptime 命令
查看系统与内核的相关信息
uname [选项]
查看当前系统位数
file /bin/ls
lsb_relaeas -a
系统定时任务
crond 服务管理和访问控制
service crond restart
chkconfig crond on
用户 cronttab 设置
crontab [选项]
五个星号的含义
项目 | 含义 | 范围 |
第一个 * | 一小时的第几分钟 | 0-59 |
第二个 * | 一天中第几个小时 | 0-23 |
第三个 * | 一个月当中的第几天 | 1-31 |
第四个 * | 一年中的第几个月 | 1-12 |
第五个 * | 一周当中星期几 | 0-7(07都是星期日) |
特殊符号 | 含义 |
* | 代表任何时间 |
, | 代表不连续时间如:"0 8,12,16 * * *" 代表每天8,12,16时执行一次 |
- | 代表连续的时间范围 "0 5 * * 1-6"周一到周六 5 点 0分执行 |
*/n | 代表每隔多久执行一次, "*/10 * * * *" 每十分钟执行一次 |
linux日志
rsylogd 的新特点
- 基于 tcp 协议传输
- 更安全
- 有及时分析框架
- 后台数据库
- 配置文件可以写简单的逻辑判断
- 与syslog 配置文件兼容
rsyslogd 日志文件格式
- 基本包含以下四列
- 事件产生时间
- 发生事件主机名字
- 产生时间服务名或程序名
- 事件的具体信息
/etc/rsyslog.conf 配置文件
authpriv.* /var/log/secure 日志位置
#服务器名称[连接符号]日志等级
#认证相关服务.所有日志等级 记录在/var/log/secure 日志中
系统运行参数
运行级别命令
runlevel
init 运行级别
vim /etc/inittab 系统默认运行级别系统启动过程