学习任务3:LPI-3 中级管理
Part2 Linux权限模型
Linux中每个文件都是由一个用户和一组用户拥有,这是权限模型的核心!
上面例子中,/bin/bash/
由root拥有,在root组中。Linux权限模型的工作原理是,允许为每个文件系统对象设置三个独立的权限级别-文件所有者,文件组和所有其他用户。
字段-rwxr
中的-
指定文件类型,现在这个意思是常规文件,还有其它情况是:
'd' directory
'l' symbolic link
'c' character special device
'b' block special device
'p' fifo
's' socket
该字段的其余部分由三个字符三元组组成。第一个三元组rwx
表示文件所有者的权限,第二个三元组r-x
表示文件的组的权限,第三个三元组r-x
表示对所有其他用户的权限:其中,
r
= 允许读取(查看文件中的数据)
w
= 允许写入(修改文件以及删除)
x
= “执行”(运行程序)
whoami
当你忘记你是谁时,Linux提供了找回初心的操作,告诉你你是谁~
groups
当你忘记你是谁的人的时候,可以帮你找到你的组织,elyer
属于很多组,adm,cdrom,sudo...
更改用户和组的所有权chown chgrp
# chown root /etc/passwd
# chgrp wheel /etc/passwd
# chown root.wheel /etc/passwd //同时设置所有者和组
递归更改所有权 chown -R
把整个目录所有权进行更改:
更改文件权限 chmod
先看下这个文件是没有x
权限的,
改完以后是这个样子的,都加上了x
权限:
还可以用-x
把权限收回来,biu~没了
chmod
可以影响所有三元组的权限–user,group,others, 一次一般影响1-2个三元组中的对象,u
表示三元组中的用户,g
表示组,o
表示others
下面减去了w
权限:
重置权限
通过使用=
运算符,我们可以告诉 chmod
我们想要指定的权限,而没有其他权限:
如果只想重置特定的三元组,则可以在=之前为三元组指定符号名称:
前面提到的都是用符号模式来对xrw
做修改,还有一种数值模式也能做修改:
数值模式
个人认为数值模式比较方便快捷,害,就是简单粗暴
模式 数字
rwx 7
rw- 6
r-x 5
r-- 4
-wx 3
-w- 2
--x 1
--- 0
举个栗子(好优雅的代码):
umask
每当创建一个新文件时,Linux都会查询一个称为“ umask”的东西,系统会使用umask值将原始指定的权限减少为更合理和安全的权限,默认是0022,看了下我自己的,是0002,允许其他人读取新文件(如果可以访问它们),但不能修改它们。
看着有点晕,举个栗子吧:
我目前的umask是0002
,首先,我创建一个文件test1,看一下它的权限=775
,775怎么来的呢,就是=777-002=775
我再修改一下我的umask值=0077
,在创建文件test2,看权限变了=700
,怎么来的?700=777-077
,也就是说权限会等于777减去umask掩码值
suid sgid
可以看到,除了root外,其他用户都不能对passwd进行写操作
当想要普通用户进行写操作时怎么办呢?可以设置它的suid
,意思是你也可以运行,但是你不是代表你自己在运行,你在代表它的拥有者,也就是boss在运行这个东西。
$ ls -l /usr/bin/passwd
-rwsr-xr-x 1 root wheel 17588 Sep 24 00:53 /usr/bin/passwd
里面那个s
表示suid
和可执行位已经设置好了
sgid
和suid
差不多意思,注意一点,suid和sgid位与ls -l清单中的x位占据相同的空间。如果还设置了x位,则该位置将显示为s(小写),如果未设置x位,它将显示为S (大写)。
更改suid sgid
设置和删除很简单,
# chmod u+s /usr/bin/myapp
# chmod g-s /home/drobbins
Part3 Linux账户管理
关于 /etc/passwd
该文件定义了Linux系统上存在的所有用户,查看结果如下:
这一行就包含了用户的信息,每个字段用:分隔
第一个字段定义用户名(elyer);第二个字段包含x,一般都是密码身份认证信息存在于另一个文件中;第三字段(1000)定义与该特定用户相关联的数字用户标识;第四字段(1000)将该用户与特定组相关联;第五个字段包含此帐户的文字说明-在这种情况下为用户名;第六个字段定义了该用户的主目录;第七个字段指定了用户的默认shell程序;
除了常见的elyer用户以外,还可以看到许多不明对象,其实啊,他们是用来增强安全性的系统账户,大部分他们的ID(uid<100),很多都会将/bin/false
作为他们的默认shell,这样的话,他们一运行就会退出并显示错误代码,也就不能当作一个账户来登录了。–它们仅供内部使用
关于 /etc/shadow
这是一个passwd的伴随文件,它只能由root读取,里面包含了账户密码信息等。看一下示例:
drobbins:$1$1234567890123456789012345678901:11664:0:-1:-1:-1:-1:0
每行定义一个特定帐户的密码信息,同样,每个字段用:分隔。第一个字段定义与此shadow条目关联的特定用户帐户。第二个字段包含加密的密码。下表描述了其余字段:
领域3 自1970年1月1日以来修改密码的天数
领域4 允许更改密码之前的天数(“ 0”表示“随时更改”)
领域5 系统将迫使用户更改为新密码的天数(“ -1”代表“永不”)
领域6 密码过期前的天数,将警告用户过期(-1表示“无警告”)
领域7 密码到期后系统自动禁用此帐户的天数(“ -1”表示“永不禁用”)
领域8 此帐户已被禁用的天数(“ -1”表示“已启用”)
领域9 保留以备将来使用
关于 /etc/group
这个东东里定义了Linux系统上所有的组,
一个字段定义组的名称;第二个字段是残留密码字段,现在仅包含x,第三个字段定义此特定组的ID。第四个字段(在上面的示例中为空)定义了属于该组的任何用户。
编辑 /etc/passwd
以上添加了一个UID为3000的testuser
用户。我们已经将该用户添加到了一个GID为3000的组中(尚未创建)。或者,我们可以根据需要将此用户分配给用户组的GID 。为了安全起见,用户的主目录设置为/ home / testuser
,用户的shell设置为/ bin / false
。如果我们要创建一个非测试帐户,则将shell设置为 / bin / bash
。继续保存更改并退出。
编辑 /etc/shadow
复制一行一模一样的,把用户名改成新用户的名字,保存退出
设置密码
编辑 /etc/group
添加新用户的组3000
创建主目录
创建完主目录就可以使用新账号了,如果想登录,还是要把默认shell修改为/bin/bash
下面就去试试修改完能否登录
ok啦,木有问题啦
还有一些useradd啊之类的命令可以去这里看:Linux用户和用户组管理
Part4 调整用户环境
fortune
发现自己没有安装fortune,正在安装中。。。
嗯。。。装好了,然后发现这玩意儿就是人生格言集,随机给你一条格言,就跟美国那种餐馆一样,饭后甜点里塞给你一个人生格言小纸条:
以上图片来源:http://www.ruanyifeng.com/blog/2015/04/fortune.html
学习任务4:LPI-4 高级管理
Part1 Linux文件系统
块设备
块设备是啥,就是磁盘的抽象接口,用户程序可以使用块设备与磁盘进行交互。该程序可以简单地将磁盘上的存储作为一堆连续的,可随机访问的512字节块进行寻址。
最著名的块设备可能是代表Linux系统中第一个IDE驱动器的块设备:/dev/hda
如果系统使用SCSI驱动器,则第一个硬盘驱动器将是:/dev/sda
理论上来说,可以操作整块磁盘,但是几乎不会这样做,而是分割成小块的更容易管理的块设备,称为分区
,使用fdisk
的工具来创建分区
用fdisk查看磁盘分区表,注意!!千万不要更改里面的任何内容
输入p
显示磁盘当前分区配置:
sda1是主分区,sda2是扩展分区,sda3是交换分区,每个分区都有分区类型:对于将要容纳Linux文件系统的分区,==“ 83”是正确的分区类型,对于Linux交换分区,“ 82”==是正确的分区类型
Fdisk分区
可以创建新分区(n命令),更改写入磁盘(w命令)。
创建文件系统
使用新的块设备之前,需要在上面创建一个新的文件系统。需要使用特定的mksf命令,根据文件系统类型来决定使用什么命令----使用mke2fs
在/dev/hdc6
上创建ext2
文件系统:
首先,你需要一块新的未使用的分区块设备。(dbq我没有,我要想办法搞一块出来)参考:磁盘里新建分区再挂载
有点小麻烦,搞不完了,明天见,周五快乐!