重大失误操作:
chmod -R +x / --》更改根目录下的所有文件的权限为可执行权限
chmod -R 777 / --》没安全性可言了
rm -rf / --》删除根下面的全部文件
设置用户不能登录系统
- 可以在/etc/shadow文件里的密码字段前面添加!!
- 可以禁用用户,或者修改/etc/passwd文件里用户的shell为/sbin/nologin。用户都不能登录系统。
访问权限
- -r 可读(read):允许查看文件内容、显示目录列表
- -w 可写(write):允许修改文件内容,允许在目录中新建、移动、删除文件或子目录
- -x 可执行(execute):允许运行程序、切换目录
归属(所有权)
- -u 文件拥有者(owner):拥有该文件或目录的用户帐号
- -g 属组(group):拥有该文件或目录的组帐号
- -o 其它人(others):除了属主和属组的其他人
- -a 所有的人(all)
read权限
- 对文件而言,就是查看里面的内容
- cat,vim,less,more等
- 对目录而言,就是查看目录里的内容
- ls
write (写)
1.对文件而言,就是修改里面的内容
vi
2.对目录而言,就是新建、删除、重命名、移动
mkdir 、touch 、rm、mv、cp
execute 可执行
- 对文件而言,就是执行这个文件里的命令。例如执行脚本文件。
- 对目录而言,就是进入目录 可以使用cd 命令进入。
# su xiaoniu
切换用户到xiaoniu,继承切换前root用户的环境变量,原来在什么路径,切换后还是在什么路径。
chmod命令
chmod 是用来修改权限 :
- u:user
- g:group
- o:others
- a:all
- +:是增加权限
- -:是去掉权限
- =:直接等于某些权限
- -R:递归修改指定目录下所有文件、子目录的权限
例子1:(推荐用数字修改!)
①# chmod o+x,g+w passwd
--》其他人增加执行,小组增加写的权限
②# chmod o=r,g=r,u=r passwd
--》passwd文件的属主,属组,其他,均为读
③# chmod 444 passwd
--》passwd文件的属主,属组,其他,均为读。
④# chmod +x passwd
--》所有的用户都会增加一个x权限
⑤# chmod a+w passwd
--》所有的用户增加一个w权限
⑥# chmod a-xw passwd
--》所有用户同时去掉w和x的权限
⑦# chmod a=rwx hunan -R
--》修改hunan目录及子目录的权限为rwx
umask 权限掩码(当前用户新建文件和目录的时候默认的权限)
root用户下默认新建文件的权限为644,新建目录的权限755 。
[root@liupeng lianxi]# umask
--》查看用户的权限掩码
0022
--》(组和其他人去掉写的权限)前面的0是特殊权限位
#umask -S 查看当前用户的权限设置
u=rwx,g=rx,o=rx
umask用法:
$ umask 077
--》直接修改权限掩码,但是这种方式修改只是临时有效,重启恢复原来的 。
vim /etc/bashrc 此文件里规定里umask的默认值
UID大于199同时用户名和组名相同,umask值就是002,否则为022。
if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
umask 002
else
umask 022
fi
系统默认umask
不推荐修改系统默认umask
用户属于那个组,会自动继承这个组的权限
练习:
1.新建文件夹/perm
2.进入/perm,复制/etc/hosts文件到当前目录下
3.修改hosts文件的权限为,属主有读写执行,属组有读执行,其他人没有任何权限
4.新建xiaoxu目录,修改权限为任何人都有读写执行的权限
5.修改xiaoxu的权限为只有属主有读写执行,其他任何人都没有读写执行的权限
6.修改xiaoxu的权限为所有的人都没有读写执行的权限
7.查看/etc/passwd和/etc/shadow文件的权限
8.查看/tmp目录的权限
9.查看/root目录的权限
10.查看/home/目录下所有目录的权限
答案8:
drwxr-xr-x. 2 root root 12288 Apr 13 09:05 sbin
PS:
权限部分。代表这目录设置了selinux权限,受selinux权限策略的影响
selinux 是linux下为了保障linux的安全,使用的一套安全措施。(可以理解为一个防火墙)
建议linux服务器将此功能禁用,因为太安全会影响机器的性能和我们实验的效果。
# getenforce --》查看selinux的状态
Disabled --》说明selinux禁用了
# getenforce
Enforcing --》说明selinux是强制开启的状态
selinux禁用步骤:
1.# vim /etc/sysconfig/selinux
SELINUX=disabled --》修改为disabled
2.重新启动机器,下次会自动禁用selinux
临时让selinux无效
# getenforce
Enforcing
# setenforce 0
# getenforce
Permissive
如果你使用getenforce查看的selinux的状态是disabled 就不需要使用上面的命令了。
chown 命令(修改属主和属组)
$ chown xiaoniu:root songshan --》错误,会报错。
普通用户不能执行这个命令chown ,只能root用户执行。
具体例子:
①# chown xiaoniu songshan --》只把属主改为xiaoniu
# ll -d songshan --》songshan是文件夹
drwxrwxr-x 2 xiaoniu kkk 4096 May 25 11:18 songshan
②# chown xiaoniu:root songshan --》属主为xiaoniu 属组为root
[root@teacher lianxi]# ll -d songshan
drwxrwxr-x 2 xiaoniu root 4096 May 25 11:18 songshan
PS:# chown xiaoniu.root songshan 使用.和:效果一样
③# chown -R kkk.kkk shenongcheng --》将shennongcheng目录及子目录的属主和属组都修改为kkk
# chown :shaolinshi songshan --》修改属组为shaolinshi
chgrp 修改属组(与用chown 属主:属组修改,效果一样)
# ll
total 36
-rw-r--r-- 1 root root 0 May 25 10:13 dengchao
drwxr-xr-x 2 root root 4096 May 25 11:14 huashan
drwxrwxrwx 3 root root 4096 May 25 10:07 hunan
drwxr-xr-x 2 root root 4096 May 25 11:31 wudangshan
drwxr-xr-x 2 root root 4096 May 25 10:13 zhongguohehuoren
# groupadd wudang
# chgrp wudang wudangshan --》把wudangshan加到wudang组里
# ll -d wudangshan
drwxr-xr-x 2 root wudang 4096 May 25 11:31 wudangshan
练习:
1.进入/tmp目录
2.新建用户zhaomin,然后使用zhaomin登录,进入/tmp目录
3.新建目录dadu
4.新建用户wuji
5.将dadu目录的属主修改为wuji所有,属组修改为wudang所有。
6.新建目录 mingjiao/guangmingding目录
7.修改mingjiao目录及子目录的属主和属组都为wuji
newgrp 修改用户的有效组,当用户属于多个组的时候,可以更改
chattr 修改文件的特殊属性
chattr:修改linux文件系统里文件的特殊的属性
- a属性表示只能追加,不能删除里面的内容;
- i属性表示写保护,不能修改。
具体例子:
①# chattr +i /etc/passwd --》给/etc/passwd文件添加i属性,相当于锁住了。不能修改此文件了。
# useradd xiaochen123
useradd: cannot open /etc/passwd --》不能添加用户
②# chattr +a jiuyangshengong/ --》添加a属性,只能追加,不能删除了。
# lsattr -d jiuyangshengong/ --》查看此文件的ACL访问控制列表。
-----a-------e- jiuyangshengong/
PS:即,加了a属性后,只能新建文件、文件夹,但是建立后不能删除。
练习:
1.新建目录taohuadao,要求taohuadao目录不能被删除,只能往目录里新建文件或者目录
2.新建一个空文件honghuamiji ,要求只能往honghuamiji里追加内容不能删除里面的内容
3.新建目录wudang,组wudang目录下新建空文件zhangsanfeng,要求不能删除wudang目录下所有的文件
4.复制/etc/passwd到当前目录下,设置passwd文件不能被修改
5.去掉honghuamiji文件的特殊属性,要求能删除里面的内容
suid 权限位(黄马卦、尚方宝剑)、sgid
当某个命令具有suid权限位的时候,普通用户在执行这个命令的时候,会具有root用户的权限
查看passwd命令的suid权限位
# ll /etc/shadow --》默认只有root用户可以修改
---------- 1 root root 2791 May 25 14:12 /etc/shadow
# which passwd
/usr/bin/passwd
# ll /usr/bin/passwd
passwd文件默认具有suid权限位,普通用户修改密码的时候,是以root用户的身份去修改密码的,这样可以达到修改/etc/shadow文件里的密码的作用
-rwsr-xr-x. 1 root root 25980 Feb 17 2012 /usr/bin/passwd
练习:把tail命令加suid权限位
①# which tail
/usr/bin/tail
②# ll /usr/bin/tail
-rwxr-xr-x 1 root root 62636 Apr 17 2012 /usr/bin/tail
③# chmod u+s /usr/bin/tail --》授予tail命令suid权限位
④# ll /usr/bin/tail
-rwsr-xr-x 1 root root 62636 Apr 17 2012 /usr/bin/tail
⑤# su - weixiaobao
⑥$ tail -1 /etc/shadow
weixiaobao:$6$Of8lblam$iToAGG5QzEVF3uFZITkKpctHIkLPOxABKc6zjt6I9ZYXny6/W2NK5WOkLnUBgG67f2fZfsGyzWO6RAbYdRTJH0:15850:0:99999:7:::
PS:# chmod u-s /usr/bin/tail 取消tail命令suid权限位
建议:不要将所有的命令都赋予suid权限位,这样对系统不好,不安全!!
操作对象 特殊权限 功能
文件 SUID:以文件属主的权限执行文件
SGID:以文件属组的权限执行文件
sticky 粘滞位:
给某个目录设置粘滞位权限后,所有的用户互相之间不能删除别人的目录和文件,就算目录的权限为777。
具体例子:
# mkdir /houcheshi
# chmod 777 /houcheshi
# ll -d /houcheshi
drwxrwxrwx 2 root root 4096 May 25 15:55 /houcheshi
# chmod1777 /houcheshi/
# su lihao
$ ls
[lihao@teacher houcheshi]$ touch wahaha
[lihao@teacher houcheshi]$ ll
total 0
-rw-rw-r-- 1 lihao lihao 0 May 25 16:02 wahaha
# su tanghailong
[tanghailong@teacher houcheshi]$ ls
wahaha
[tanghailong@teacher houcheshi]$ ll
total 0
-rw-rw-r-- 1 lihao lihao 0 May 25 16:02 wahaha
$ rm -rf wahaha 删除不成功,因为设置了粘滞位
rm: cannot remove `wahaha': Operation not permitted
$ ll -d /houcheshi/
drwxrwxrwt 2 root root 4096 May 25 16:02 /houcheshi/
难点:
如果对父目录有完全控制(读写执行)的权限,可以对目录下的文件进行删除,但是对父目录下的子目录里的文件就不能进行完全控制了,需要看权限。
一个用户属于某个组,会自动继承这个组里的权限
练习:
1.新建3个组,wudang、shaolin、huashan
2.新建用户qingshu 加入到wudang组
3.新建用户xiaozhao 加入到shaolin组
4.新建用户linghu,liuyang加入到huashan组
5.新建一个目录wulin要求qingshu有读写执行的权限,xiaozhao有读执行的权限,linghu没有任何权限,如何实现?
[root@teacher lianxi]# mkdir wulin
[root@teacher lianxi]# ll -d wulin
drwxr-xr-x 2 root root 4096 May 25 16:40 wulin
[root@teacher lianxi]# chown qingshu wulin
[root@teacher lianxi]# ll -d wulindrwxr-xr-x 2 qingshu root 4096 May 25 16:40 wulin
[root@teacher lianxi]# chown :shaolin wulin
[root@teacher lianxi]# ll -d wulin/
drwxr-xr-x 2 qingshu shaolin 4096 May 25 16:40 wulin/
[root@teacher lianxi]# chmod 750 wulin
[root@teacher lianxi]# ll -d wulin/
drwxr-x--- 2 qingshu shaolin 4096 May 25 16:40 wulin/
ACL访问控制列表、getfacl、setfacl
ACL(Access Control List):访问控制列表
一个文件/目录的访问控制列表,可以针对任意指定的用户/组分配RWX权限。
getfacl -》 get file access control lists -》查看/获得
setfacl -》set file access control lists -》设置
语法:
设置ACL:setfacl指令
格式: setfacl 选项 规则 文件
常用选项
- -m:新增或修改ACL中的规则(–modify)
- -b: 删除所有ACL规则(–remove-all)
- -x: 删除指定的ACL规则 (–remove)
规则:
ACL类型
- 存取型ACL(Access ACL):文件或目录 (默认)
- 预设型ACL(Default ACL):只能对目录(格式:在存取型ACL的基础上加了个d:)
预设型ACL(Default ACL)
格式:
- setfacl –m default:类型:特定的用户或组:权限
- setfacl –m d:类型:特定的用户或组:权限。
设置了预设型ACL的目录,其下的所有文件或者子目录就都具有了主目录的ACL权限,并且子目录也同样有预设的ACl权限(会继承父目录的权限)。
具体例子:
# setfacl -m m::r gongda 设置最大权限为读,所有的用户都生效
# getfacl gongda/
# file: gongda/
# owner: root
# group: root
user::rwx
user:linghu:rwx #effective:r-- 实际权限
group::r-x #effective:r--
group:huashan:---
group:wudang:rwx #effective:r--
group:shaolin:---
mask::r-- 最大权限
other::r-x
标准例子2:
# mkdir jingzhou
# useradd liubiao 新建用户liubiao
# ls
gongda hunantv jingzhou
# setfacl -m d:u:liubiao:rwx jingzhou -》设置默认权限
# getfacl jingzhou/
# file: jingzhou/
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
default:user::rwx
default:user:liubiao:rwx
default:group::r-x
default:mask::rwx
default:other::r-x
- 对文件夹的操作的权限,主要是看当前目录里有什么权限,如果父目录(当前目录)有rwx的权限,是可以在父目录(这个目录)下新建文件夹或文件;
- 但是,如果对父目录(这个目录)下的子文件夹没有w权限,是不能新建文件夹的。
setfacl、getfacl命令练习
1.新建3个组,shuiguo,mifen ,shaokao
2.新建3个用户,pingguo属于shuiguo组,
jingshi属于mifen组
yueyang属于shaokao组
3.在根目录下新建目录food,再将/etc/passwd
文件复制到food目录下
4.设置权限,passwd文件能被shuiguo组读写,
jingshi这个用户能读写执行
yueyang这个用户不能进行任何操作
5.然后去验证