1.Linux的基本原则:
1、由目的单一的小程序组成;组合小程序完成复杂任务;
2、一切皆文件;
3、尽量避免捕获用户接口;
4、配置文件保存为纯文本格式;
2.命令形式
命令格式:
命令 选项 参数
选项:
短选项: -
多个选项可以组合:-a -b = -ab
长选项: --
参数:命令的作用对象
3.命令举例:ls
ls -l:长格式
文件类型:
-:普通文件 (f)
d: 目录文件
b: 块设备文件 (block)
c: 字符设备文件 (character)
l: 符号链接文件(symbolic link file)
p: 命令管道文件(pipe)
s: 套接字文件(socket)
文件权限:9位,每3位一组,每一组:rwx(读,写,执行), r--
文件硬链接的次数
文件的属主(owner)
文件的属组(group)
文件大小(size),单位是字节
时间戳(timestamp):最近一次被修改的时间
访问:access
修改:modify,文件内容发生了改变
改变:change,metadata,元数据
-h:做单位转换
-a: 显示以.开头的隐藏文件
. 表示当前目录
.. 表示父目录
-A
-d: 自身属性
-i: index node, inode
-r: 逆序显示
-R: 递归(recursive)显示
4.文件系统
rootfs: 根文件系统 /
/boot : 系统启动相关的文件,如内核、initrd,以及grub(bootloader)
/dev: 设备文件
设备文件:
块设备:随机访问,数据块
字符设备:线性访问,按字符为单位
设备号:主设备号(major)和次设备号(minor)
/etc:配置文件
/home:用户的家目录,每一个用户的家目录通常默认为/home/USERNAME
/root:管理员的家目录;
/lib:库文件
静态库, .a
动态库, .dll, .so (shared object)
/lib/modules:内核模块文件
/media:挂载点目录,移动设备
/mnt:挂载点目录,额外的临时文件系统
/opt:可选目录,第三方程序的安装目录
/proc:伪文件系统,内核映射文件
/sys:伪文件系统,跟硬件设备相关的属性映射文件
/tmp:临时文件, /var/tmp
/var:可变化的文件
/bin: 可执行文件, 用户命令
/sbin:管理命令
5.文件管理
5.1目录管理:
ls查看目录下内容
cd切换目录
pwd查看当前位置
mkdir(make directory)创建目录
#mkdir 目录名(自己指定)
#mkdir -p 创建多级子目录
#mkdir 目录1 目录2 .. 创建多个同级目录
rmdir删除目录,默认是能删除空目录
tree 层次化查看
5.2文件管理:
touch创建文件
#touch 文件名(自己定义)
#touch 文件1 文件2 .. 同时创建多个文件
stat、file 查看文件属性、查看文件类型
rm删除(删除目录的时候,要加r) rm=remove
#rm 文件名
#rm -r 目录名 默认会发生交互
#rm -rf [文件名 目录名] -f(force)表示强制删除
cp 复制
#cp 原文件 目标文件(可以事先不存在)
#cp -p 原文件 目标文件 -p 保留原文件属性
#cp -b 原文件 目标文件 -b 创建一个备份文件
mv移除
#mv 原文件 目标文件 剪切+复制过程
可以针对目录
5.3查看目录、查看文件
查看目录:
#ls 目录名
#ls -R 递归查看
#ls -d 查看目录本身属性
查看文件:cat tac tail head more less
***用/etc/passwd文件来练习
#cat 文件名 默认是正序查看
#tac 文件名 倒序查看
#head -n 文件名 查看文件前n行
#tail -n 文件名 查看文件末n行
#more 文件名 可以翻页查看,默认只能向下
#less 文件名 可以翻页,也可以回看,按q退出
6.用户管理:
用户是用来操作系统中不同功能的身份.
linux是多用户多任务的操作系统
Linux系统中用户的分类
1)超级用户: root uid=0
2)系统用户:不需要登录系统,服务于应用程序,维护系统的运行
bin nobody uid=1-499
3)普通用户:可以登录的用户 uid>=500
UID:用户标识
1.添加用户:
useradd 用户名(自己定义用户名)
创建用户的时候,如果没有其它指定,会创建一个与用户名同名的家目录 /home/用户名
同时也会创建一个同名的组
创建的时候可以指定u、g、c等选项
-u 指定用户的uid 用户的ID号
-g 指定用户的gid 组的ID号
-G 指定附属组,可以有多个, 但是这些附属组必须是系统内已经存在的
-c 指定描述,后边直接跟你想要的字符串
-d 指定家目录
-M 不建立家目录
-s 指定shell
-e 指定用户过期时间, 日期
-f 指定用户过期时间, 天数
用户创建完成后
1、会在/etc/passwd添加一行
例:Loyal:x:501:501:hello:/home/Loyal:/bin/bash
用户名 密码 UID GID 描述信息 家目录 登录shell
(注意:/bin/bash 标示可登录用户;/sbin/nologin 标示不可登陆用户)
2、会在/etc/group添加一行
3、会在/etc/shadow 添加一行
查看用户的ID:
#id 用户名 (显示uid,gid ,组)
查看当前用户的名字:
#whoami
2.删除用户:
userdel 用户名 默认不会删除家目录
(-r选项 会连同创建的家目录一同删除)
3、给用户设置密码
passwd:
超级用户:既可以修改自己的密码,又可以修改别人的密码,并且不需要提供当前密码
普通用户:只能修改自己的密码,要求严格,并且需要提供当前密码
普通用户修改自己的密码,需要当前密码,而且长度最少6位,而且不能是字典单词
/etc/shadow:存放用户密码信息的文件
# head -1 /etc/shadow
root:$6$9AOmQbxm$3X1qbP0srKNql7jCXpmwhyNxGTHmIbT65zF.:16276:0:99999:7:::
用户名:加密后的密码:....
$6$:加密算法是sha512
$1$:加密算法是md5
4、修改用户信息:不常用
usermod: //modify:修改
-G:修改用户的附属组,不管用户原来的附属组如何,直接覆盖
-g:修改用户的主要组
-a:一般和-G联合使用,追加附属组
-u:修改用户的uid
-d:修改用户的家目录
-s:修改用户的shell
7、组 group
用户和组的关系:组中可以没有用户、也可以有一个或者多个用户。用户只有一个主要组,可以同时属于多个组,但是除了主组以外的其他组称为附属组。
组的分类:从用户的角度分的,分为:
主组:primary group、initial group、first group,用户的默认组,也就是gid所标识的组
附属组:secondary group、supplementary group
1、添加组 groupadd
# groupadd g1
-g:添加组时,指定gid是多少
# groupadd -g 800 g2
# tail -2 /etc/group
g1:x:603:
g2:x:800:
组名:密码:gid:组里成员
2、修改组: groupmod
# groupmod -g 888 g2
# grep g2 /etc/group
g2:x:888:
修改组的名字 : -n 新名字
# groupmod -g 588 -n group1 g1
# grep gr /etc/group
group1:x:588:
3、删除组:groupdel
注意:不能够删除用户的主要组,能够删除用户的附属组
# groupdel group1
# grep group1 /etc/group //没有任何输出,表示文件中没有含有group1关键字的行
4、组管理 gpasswd
管理/etc/group和/etc/gshadow文件的,每一个组可以有管理员,成员和密码
给组加密码:可以让知道组密码的人,临时的切换到该组中,能够使用该组的资源。
1)指定组的管理员列表
# groupadd groups
# useradd u1
# gpasswd -A u1 groups //u1用户就是groups组的管理员了
2)向组中添加成员
# su - u1
$ gpasswd -a sha groups
Adding user sha to group groups
# tail /etc/group
groups:x:889:sha
3)给组设置密码
# gpasswd groups
Changing the password for group groups
New Password:
Re-enter new password:
4)切换组
# su - niulang
$ id
uid=500(niulang) gid=500(niulang) groups=500(niulang)
$ newgrp groups //临时切换组
Password:
$ id
uid=500(niulang) gid=889(groups) groups=500(niulang),889(groups)
5)将用户从组中删除
# gpasswd -d sha groups
Removing user sha from group groups
/etc/passwd:保存用户信息的文件
/etc/shadow:保存用户密码相关信息的文件
/etc/group:保存组信息的文件
/etc/gshadow:保存组密码相关信息的文件
1、/etc/passwd:
# head -1 /etc/passwd
root:x:0:0:root:/root:/bin/bash
用户名:密码:UID:GID:描述信息:家目录:登录shell
2、/etc/shadow
# man 5 shadow
zhangsan:!!:16276:0:99999:7:::
1)用户名
2)加密后的密码
3)上一次密码修改时间(单位是天,是距离1970年1月1日多少天)
4)密码最小生存周期 单位:天 0表示随时可以修改密码;2表示两天内不能修改
5)密码最大生存周期 单位:天,密码使用的最长时间
6)密码到期前几天开始警告
7)密码过期之后到账户失效之前的时间限制 密码过期之后还可以用几天
8)账户过期时间
9)保留列
查看用户的密码相关的时间
[root@localhost ~]# chage -l root
Last password change : Jan 08, 2017
Password expires : never
Password inactive : never
Account expires : never
Minimum number of days between password change : 0
Maximum number of days between password change : 99999
Number of days of warning before password expires : 7
3、/etc/group
# head -1 /etc/group
root:x:0:
组名:密码:GID:用户列表
4、/etc/gshadow
# head -1 /etc/gshadow
root:::
组名: 加密后的密码:组管理员:组成员