文件管理:
1.文件权限存在的意义
系统最底层安全设定方法之一,保证文件可以被可用的用户做相应操作(文件如果被所有人都可以读写执行,信息安全就很堪忧,这也正是文件需要设立权限的原因)
2.文件权限查看命令:
ls -l file /dir ##查看文件本身权限,查看目录中文件的权限不包括目录本身
ls -ld dir ##查看文件本身权限,查看目录中文件的权限,但包括目录本身
ll file
ll -d diri/file查看目录本身或文件本身权限
ls -a dir/file ##查看目录内容
实验:
3.文件权限的读取
d |rwxr-xr-x| 6 |root | root | 4096|May 6 2014 | yum
[1] [2] [3] [4] [5] [6] [7] [8]
[1]
文件的类型
- ##空文件,或者文本
d ##目录
l ##软链接
s ##socket 套接字
b ##block 块设备
c ##字符设备
[2]
文件的权限
rw-|rw-|r--
1 2 3
1.[u] 所属用户的权限
2.[g] 所属组的权限
3.[o] 其他人的权限
[3]
对文件:文件硬链接个数(文件内容被记载的次数,包括修改,打开等操作)
对目录:目录中子目录的个数
[4]
文件的所有人
[5]
文件所有组
[6]
对文件:文件大小
对目录:目录中子文件元数据大小
[7]
文件最后一次被修改的时间
[8]
文件名
4.文件所有人所有组的管理
(1)改变所有人
chown命令
chown username file|dir ##更改文件或目录的所属用户
chown user.group file|dir ##更改文件或目录的所属用户和所有组
chown -R user.group dir ##更改目录本身及里面所有内容的所有组和所属用户
更改文件file和hello的所有者和所属组
现在可以知道hello目录中有以下四个文件,且各自的权限都如下所示
在输入命令chown -R student.student dir 可以更改目录本身及里面所有内容的所有组和所属用户
将hello目录下的所有文件个改变位student位所有者,和所属组了
|(2)改变所属组
chgrp 命令
chgrp group file|dir ##更改文件的所属组
chgrp -R group dir ##更改目录及目录里文件的所属组
在文件file中,将file的所属组,由root更改为student,将haha目录下面的hello目录同样由root改为student
5.对文件权限的更改
1.对权限的理解
r
对文件:可以查看文件中的字符 --->cat file
对目录:可以查看目录中有什么子文件或者子目录 ---> ls dir
w
对文件:可以改变文件里面记录的字符
对目录:可以对目录中子目录或子文件的元数据进行更改
x
对文件:可以通过文件名称调用文件内记录的程序
对目录:可以进入目录
2.更改方式
(1)字符方式修改文件权限
chmod <u|g|o><+|-|=><r|w|x> file|dir
chmod u+x /mnt/file1 ##file1文件所属者加上x执行权限
chmod g-r /mnt/file2 ##file2 所属组去掉r读的权限
chmod ug-r /mnt/file3 ##file3所有者和所属组去掉r读的权限
chmod u-r,g+x /mnt/file4 ##file4所有者去掉r读的权限,所属组加上x执行权限
chmod -r /mnt/file5 ##file5文件所有者、所属组、其他人都去掉r读的权限
chmod o=r-x /mnt/file6 ##file6文件其他人的权限为读和执行权限
例:更改文件file的权限:file文件的所有者的权限,加上了执行权限x。
(2)数字方式修改文件权限
在linux中
r w x
r=4 w=2 x=1
r-x|r--|--x
5 4 1
文件或目录的权限最大到777
例:chmod 541 feil1
##6.umask##
umask 系统建立文件是默认保留的权力
umask 022
##临时设定系统预留权限为022
(1)永久更改umask
vim /etc/profile ##找到系统配置文件,才能永久更改
*更改文件配置信息
59 if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
60 umask 002 ##普通用户的umask
61 else
62 umask 077 ##超级用户的umask
63 fi
*vim /etc/bashrc ##shell配置文件
再更改shell文件配置信息
70 if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
71 umask 002
72 else
73 umask 077
74 fi
*source /etc/profile #让更改立即生效
source /etc/bashrc
作用主要是告诉系统,重新读取配置文件,再重新输入umask命令,可以查看到默认的预留权限被更改为077了
7.特殊权限
(1)sticky ##粘制位
只对目录有效果,当目录上有sticky的权限时,在这个目录中的文件,只有文件的所有者能删除文件,其他人没有删除权限
执行命令
chmod o+t dir ##对其他人权限进行设定
chmod 1xxx dir
例:建立一个public(公共目录)在mnt下,并对public目录权限,和public里面的文件进行监控,在将public目录的权限改为777,扩大所有人对目录的权限,这个时候,目录下所有文件都可以被任何人进行修改,查看,执行等操作。
在public目录下建立hello文件,发现hello的所有着为student
现在执行:chomd o+t /mnt/public命令,可以看到public目录中的x转变为t,说明此目录已经有了粘制位权限,这时,public目录下的所有文件只能被文件的所有者者删除了
实验:添加用户tom,并试一下,是否能删除public下面的hello文件,发现此命令执行的时候被拒绝了,所以public文件粘制位设置成功了
(2)sgid ##强制位
对文件:只针对二进制可执行文件,任何人运行二进制可执行文件程序时产生的进程的所有组都是文件的所有组,和程序发起人组的身份无关。
对目录:当目录上有sgid权限时任何人在此目录中建立的文件都属于目录的所有组
设定方式
chmod g+s file|dir
chmod 2xxx file|dir
由 于上面已经把file文件,和haha目录中的所有组变为了student,现在我们给这他们加上强制位,再用root在haha目录中建立nihao文件,发现nihao文件的所属组还为student,这就是强制位的作用。
(3)suid ##冒险位
只针对与2进制可执行文件
当文件上有suid时任何人执行这个文件中记的程序产生的进程都属于文件的所有人
设定方式
chmod u+s file
chmod 4xxx file
8.acl权限
文件的访问控制
作用:让特定用户对特定的文件拥有特定权限
acl=accsee control
getfacl file ##查看acl开启的文件的权限
# file: file ##文件名称
# owner: root ##文件拥有者
# group: root ##文件拥有组
user::rw- ##文件拥有人的权限
user:kiosk:rwx ##指定用户的权限
group::r-- ##文件拥有组的权力
mask::rwx ##能赋予用户的最大权力伐值
other::r-- ##其他人的权限
2.acl列表查看
-rw-rwxr--+ 1 root root 0 Jul 21 15:45 file
+:表示acl开启
3.acl列表的管理
设定:
setfacl -m #设定(只更改本目录,不对子目录生效)
u ##用户
g 组
拥有rwx权限
添加用户权限
setfacl -m u:username:rwx file ##设定username对file
setfacl -m g:group:rwx file ##设定group组成员对file拥有rwx权限
删除列表中的用户或者组
setfacl -x u:username file ##从acl列表中删除username
关闭列表
setfacl -b file ##关闭file上的acl列表
例:加上用户student对文件有rwx权限,和组root对file文件有rwx权限
4.mask值(权限掩码)
mask用来标识能够赋予用户最大权限
当用chmod减小开启acl的文件权限时mask值会发生改变
chmod g-w hello
恢复mask值:
setfacl -m m:rw hello
5.acl的默认权限设定
acl 默认权限只针对目录设定
“acl权限只针对设定完成之后新建立的文件或目录生效,而已经存在的文件是不会继承默认权限”(设定默认权限,支队性出现的文件有效)
setfacl -m d:u:student:rwx /haha 添加默认权限
setfacl -k /haha ##删除默认权限
删除用户student对文件file的权限。
设定haha目录中的acl默认权限