Linux运维基础学习-第三章
linux权限、磁盘、文件系统、进程
目录
3.1Linux用户权限
3.1.1用户与用户组文件
超级用户 普通用户 虚拟用户(伪用户,不能登录系统)
1.配置文件:/etc/passwd
字段含义:
用户名 密码 UID GID 注释性描述 主目录 默认shell
2.用户影子文件:/etc/shadow
字段含义:
用户名 加密口令 最后一次修改时间 最小时间间隔 最大时间间隔 警告时间 不活动时间 失效时间 保留字段
3.用户组配置文件:/etc/group
4./etc/login.defs
定义创建用户的默认设置(密码属性)
PASS_MAX_DAYS 99999 #密码最长过期时间 PASS_MIN_DAYS 0 #密码最短过期时间 PASS_MIN_LEN 5 #密码最小长度 PASS_WARN_AGE 7 #密码过期提前提醒时间 |
UID_MIN 500 #uid最小值 UID_MAX 60000 #uid最大值 |
GID_MIN 500 #gid最小值 GID_MAX 60000 #gid最小值 |
CREATE_HOME yes #是否同时建立家目录 |
UMASK 077 #创建后用户的权限掩码 |
USERGROUPS_ENAB yes #创建用户时是否同时创建相同用户名的组 |
ENCRYPT_METHOD SHA512 #密码加密方式为SHA512 |
5./etc/default/useradd
useradd -D
GROUP=100 如果useradd没有指定组,并且/etc/login.defs中的USERGROUPS_ENAB为no或者useradd使用了-N选项时,此时该参数生效。创建用户时使用此组ID。 HOME=/home 主目录放在什么目录下 INACTIVE=-1 帐号是否过期 EXPIRE= 帐号终止日期 SHELL=/bin/bash 默认使用哪个shell SKEL=/etc/skel 模板目录,骨架目录 CREATE_MAIL_SPOOL=yes 是否创建邮箱文件 |
6./etc/skel/
定义了新用户在主目录下的默认文件
3.1.2添加切换删除用户组
1.groupadd
groupadd 【-g -o】 gid group
2.newgrp
newgrp <用户组>
用于多个用户组间进行切换
3.groupdel
groupdel [群组名称]
3.1.3添加切换修改属性用户
1.useradd
useradd [-d home] [-s shell] [-c comment] [-m [-k template]] [-f inactive] [-e expire ] [-p passwd] [-r] name
主要参数: -c:加上备注文字,备注文字保存在passwd的备注栏中。 -d:指定用户登入时的主目录,替换系统默认值/home/<用户名> -D:变更预设值。 -e:指定账号的失效日期,日期格式为MM/DD/YY,例如06/30/12。缺省表示永久有效。 -f:指定在密码过期后多少天即关闭该账号。如果为0账号立即被停用;如果为-1则账号一直可用。默认值为-1. -g:指定用户所属的群组。值可以使组名也可以是GID。用户组必须已经存在的,期默认值为100,即users。 -G:指定用户所属的附加群组。 -m:自动建立用户的登入目录。 -M:不要自动建立用户的登入目录。 -n:取消建立以用户名称为名的群组。 -r:建立系统账号。 -s:指定用户登入后所使用的shell。默认值为/bin/bash。 -u:指定用户ID号。该值在系统中必须是唯一的。0~499默认是保留给系统用户账号使用的,所以该值必须大于499。 |
2.usermod
usermod [-LU][-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-l <帐号名称>][-s <shell>][-u <uid>][用户帐号]
参数说明:
-c<备注> 修改用户帐号的备注文字。 -d登入目录> 修改用户登入时的目录。 -e<有效期限> 修改帐号的有效期限。 -f<缓冲天数> 修改在密码过期后多少天即关闭该帐号。 -g<群组> 修改用户所属的群组。 -G<群组> 修改用户所属的附加群组。 -l<帐号名称> 修改用户帐号名称。 -L 锁定用户密码,使密码无效。 -s<shell> 修改用户登入后所使用的shell。 -u<uid> 修改用户ID。 -U 解除密码锁定。 |
3.userdel
user [-r] [用户账号]
-r不仅删除用户且删除用户的目录及文件
3.2文件属性
Linux/Unix 的文件调用权限分为三级 : 文件所有者(Owner)、用户组(Group)、其它用户(Other Users)
只有文件所有者和超级用户可以修改文件或目录的权限。可以使用绝对模式(八进制数字模式),符号模式指定文件的权限。
3.3chmod、chown
3.3.1 chown
chown 【-R】用户名 文件或目录
chown 【-R】用户名:用户组 文件或目录
改变文件或目录的用户和用户组
3.3.2chmod
chmod [who] [+ - =] [mode] 文件名
u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。 + 表示增加权限、- 表示取消权限、= 表示唯一设定权限。 r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。 其他参数说明: -c : 若该文件权限确实已经更改,才显示其更改动作 -f : 若该文件权限无法被更改也不要显示错误讯息 -v : 显示权限变更的详细资料 -R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更) --help : 显示辅助说明 --version : 显示版本 |
3.4磁盘管理
磁盘的分区大致可以分为三类,分别为主分区、扩展分区和逻辑分区等等
Linux系统中,每个磁盘中有一部分叫做MBR主引导记录
MBR:
大小512字节,分为三部分
主引导程序:446字节
硬盘分区表:64字节
分区结束标记(硬盘有效位):2字节
分区表DPT需要特别注意
DPT的大小是64字节,每个主分区要占用16字节,扩展分区也要占用16个字节的主分区空间,所以每个磁盘上最多只能建立四个主分区
为了突破这最多四个主分区的限制,Linux系统引入了扩展分区的概念。即管理员可以把其中一个主分区设置为扩展分区(注意只能够使用一个扩展分区)来进行扩充。而在扩充分区下,又可以建立多个逻辑分区。也就是说,扩展分区是无法直接使用的,必须在细分成逻辑分区才可以用来存储数据。通常情况下,逻辑分区的起始位置及结束位置记录在每个逻辑分区的第一个扇区,这也叫做扩展分区表。在扩展分区下,系统管理员可以根据实际情况建立多个逻辑分区,将一个扩展分区划割成多个区域来使用
在上图中,四个主分区记录区仅使用其中两个,P2通过扩展分区,分配出五个逻辑分区。
扩展分配的目的是使用额外的磁区来记录分割信息,扩展分配本身并不能被拿来格式化。
其在Linux系统中文件名如下:
P1: /dev/hda1
P2: /dev/hda2
L1: /dev/hda5
L2: /dev/hda6
L3: /dev/hda7
L4: /dev/hda8
L5: /dev/hda9
其中没有出现/dev/hda3与/dev/hda4,是因为前面四个数字保留给主分区/扩展分区使用
3.4.1磁盘的表示方法
1.主设备号+次设备号+磁盘分区编号
IDE硬盘:hd[a-z]x
scsi硬盘: sd[a-z]x
2.主设备号+[0-n],y
IDE硬盘:hd[0-n],y
scsi硬盘: sd[0-n],y
3.4.2磁盘分区工具fdisk和parted 区别
1.fdisk
(1)fdisk命令只支持msdos,分区的时候只支持小容量硬盘(<=2T),但是如果不需要分区的话,那么整块sdb硬盘,类型为msdos,那么他的大小是可以大于2T的。
(2)fdisk命令不支持gpt,所以当使用fdisk命令给gpt类型硬盘分区是会出现告警
(3)当使用parted命令给一个5T的硬盘分好三个分区之后,在使用fdisk命令查看,会不兼容(parted打印的分区有三个,而fdisk命令打印的分区只有一个)
格式: fdisk [-l] [-b SSZ] [-u] device
选项:
-l 查询指定设备
-b SSZ 将指定的分区大小输出到标准输出,单位为区块
-u 一般与-l配个使用,显示结果将用扇区数目取代柱面数目
#自动分区脚本
fdisk /dev/vdb << EOF
n
p
1
wq
EOF
mkfs.xfs /dev/vdb1
[ ! –d /data] && mkdir /data
cat >> /etc/fstab << EOF
/dev/vdb1 /data xfs defaults 0 0
EOF
mount –a
fdisk -m
命令 | 说明 |
---|---|
a | 设置可引导标记 |
b | 编辑 bsd 磁盘标签 |
c | 设置 DOS 操作系统兼容标记 |
d | 删除一个分区 |
l | 显示已知的文件系统类型。82 为 Linux swap 分区,83 为 Linux 分区 |
m | 显示帮助菜单 |
n | 新建分区 |
o | 建立空白 DOS 分区表 |
p | 显示分区列表 |
q | 不保存退出 |
s | 新建空白 SUN 磁盘标签 |
t | 改变一个分区的系统 ID |
u | 改变显示记录单位 |
v | 验证分区表 |
w | 保存退出 |
x | 附加功能(仅专家) |
2、parted:
(1)支持msdos和gpt,可以支持大硬盘,也支持小硬盘。
(2)区分parted命令给msdos类型和gpt类型硬盘分区的不同:
与支持最大卷为2TB并且每个磁盘最多有4个主分区(或3个主分区,1个扩展分区)的MBR磁盘分区样式相比,GPT磁盘分区样式支持最大卷128EB并且每磁盘的分区数没有上限,只受到操作系统限制。另外,GPT分区磁盘有备份分区表来提高分区数据结构的完整性。
下面是parted给msdos类型硬盘分区
下面是parted给gpt类型硬盘分区:
3、msdos
支持小于2T的硬盘,不支持大于2T的硬盘
有主分区,扩展分区,逻辑分区
如果使用fdisk命令给一个大于2T的msdos类型硬盘分区,只能给2T的部分分区,超过2T的部分不能使用,也就浪费了。
4、gpt
支持大小容量的硬盘
不区分主分区,扩展分区,逻辑分区,也没有4个分区数量的限制
3.5NFS(网络文件系统)
可以透过网络,让不同的机器、不同的操作系统、可以彼此分享个别的档案 (share files)
3.5.1安装
查询
[root@localhost ~]# rpm -qa | grep rpcbind
rpcbind-0.2.0-42.el7.x86_64
[root@localhost ~]# rpm -qa | grep nfs
nfs-utils-1.3.0-0.48.el7.x86_64
libnfsidmap-0.25-17.el7.x86_64
nfs4-acl-tools-0.3.3-15.el7.x86_64
安装
yum -y install nfs-utils rpcbind
3.5.2 NFS server 端设置
1.配置文件
/etc/exports
参数 说明
(1) Ro 该主机对该共享目录有只读权限
(2) Rw 该主机对该共享目录有读写权限
(3) Root_squash 客户机用root用户访问该共享文件夹时,将root用户映射成匿名用户
(4) No_root_squash 客户机用root访问该共享文件夹时,不映射root用户
(5) All_squash 客户机上的任何用户访问该共享目录时都映射成匿名用户
(6) Anonuid 将客户机上的用户映射成指定的本地用户ID的用户
(7) Anongid 将客户机上的用户映射成属于指定的本地用户组ID
(8) Sync 资料同步写入到内存与硬盘中
(9) Async 资料会先暂存于内存中,而非直接写入硬盘
(10) Insecure 允许从这台机器过来的非授权访问
(11) subtree_check 如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认)
(12) no_subtree_check 和上面相对,不检查父目录权限
(13) wdelay 如果多个用户要写入NFS目录,则归组写入(默认)
(14 )no_wdelay 如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置。
(15) hide 在NFS共享目录中不共享其子目录
(16) no_hide 共享NFS目录的子目录
(17) secure NFS通过1024以下的安全TCP/IP端口发送
(18) insecure NFS通过1024以上的端口发送
sudo vi /etc/exports
/etc/exports文件的内容如下:
/tmp *(rw,sync,no_subtree_check,no_root_squash)
/data *(rw,sync,no_subtree_check,no_root_squash)
/logs *(rw,sync,no_subtree_check,no_root_squash)
/ user01(rw) user02(rw,no_root_squash) 表示共享服务器上的根目录(/)只有user01和user02两台主机可以访问,且有读写权限;user01主机用root用户身份访问时,将客户机的root用户映射成服务器上的匿名用户(root_squash,该参数为缺省参数),相当于在服务器使用nobody用户访问目录;user02主机用root用户身份访问该共享目录时,不映射root用户(no_root_squash),即相当于在服务器上用root身份访问该目录
/root/share/ 192.168.1.2(rw,insecure,sync,all_squash) 表示共享服务器上的/root/share/目录只有192.168.1.2主机可以访问,且有读写权限;此主机用任何身份访问时,将客户机的用户都映射成服务器上的匿名用户(all_squash),相当于在服务器上用nobody用户访问该目录(若客户机要在该共享目录上保存文件(即写操作),则服务器上的nobody用户对该目录必须有写的权限)
/home/ylw/ .test.com (rw,insecure,sync,all_squash) 表示共享/home/ylw/目录,.test.com域中所有的主机都可以访问该目录,且有读写权限
/home/share/ .test.com (ro,sync,all_squash,anonuid=zh3,anongid=wa4) 表示共享目录/home/share/,*.test.com域中的所有主机都可以访问,但只有只读的权限,所有用户都映射成服务器上的uid为zh3、gid为wa4的用户
2、启动nfs和rpcbind服务、检测服务状态、已经设置服务开机启动
启动服务:
#service rpcbind start
#service nfs start
检查启动状态:
#service rpcbind status
#service nfs status
3、检测服务器的nfs状态
# showmount -e localhost 查看自己共享的服务
Export list for hostname:
/usr/local/static *