文件的权限
文件权限存在的意义
系统最底层安全设定方法之一
保证文件可以被可用的用户作相应的操作
文件权限的查看
ls -l file
ls -ld dir
ll file
ll -d dir
文件权限的读取
- | rw-rw-rw-- | 1 |kiosk|kiosk| 0 |Oct 11 22:18|file
[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]文件的名字
改变文件的所有人和所有组
chown|chgrp
chown username file|dir
chown user.group file|dir
chown -R user.group dir
chgrp group file|dir
chgrp -R dir
实验环境的准备:
创建相应文件夹
改变文件的权限
对权限的理解
r:
对文件:是否可以查看文件的内容(cat file)
对目录:是否可以查看目录中有什么子文件或者子目录(ls dir)
w:
对文件:是否可以改变文件的字符
对目录:是否可以对目录中子文件或者子目录的元数据进行更改
r:
对文件:是否可以通过文件名称调用文件内记录的程序
对目录:是否可以进入目录
更改方式
chmod <u|g|o><+|-|=><r|w|x> file|dir
chmod u+x file1 //file1文件的用户权限增加执行
chmod g-r file2 //file2文件的组去掉读权限
chmod ug-r file3 //file3文件的用户和组去掉读权限
chmod u-r,g+x file1
chmod -r file1
chmod o=r-x file1 //将其他用户权限设置为r_x
复制文件权限:
系统的默认权限
系统默认预留权限(为了安全,部分权限被系统回收):
777-022=755(directory)
755-111=644(file)
将系统预留权限设置为077:
777-077=700(directory)
700-111=600(file)文件权限不存在负值,所以为600
这种预留值的更改知识暂时的,新打开shell后便恢复默认,如果想永久更改需要编辑两个系统文件:
/etc/bashrc
/etc/profile(系统环境变量配置文件)
编辑bashrc文件:
将022修改为077:
编辑profile文件和以上文件相同的方法:
更改之后使其重新执行两个文件,使更改后的文件生效(source命令):
然后重新打开shell,输入umask,系统默认留权限修改成功:
特殊权限
sticky 粘制位
作用
只针对目录生效,当一个目录有stiky权限时,在这个目录的文件只能被文件的所有者删除
chmod o+t dir
chmod 1xxx dir
sgid 强制位
作用
对文件:之针对二进制可执行文件,当文件有sgid时任何人执行此文件产生的进程都属于文件的组。
对目录:当目录上有sgid权限时任何人在此目录建立的文件都属于目录的所有组
chmod g+s file|dir
chmod 2xxx file|dir
实验(对文件)
在daguaniu用户下执行watch进程
watch进程的user,group都为daguaniu
在root下对该文件增加sgid强制位,然后再切换到daguaniu用户下执行该文件进程
该文件执行的进程的组变为root
实验(对目录)
suid 冒险位
作用 :
只针对二进制可执行文件
当文件上有suid位时,任何人执行这个文件产生的进程都属于文件的所有人
chmod u+s file
chmod 4xxx file
实验:
创建一个普通用户,使用普通用户执行watch文件:
该文件产生的进程的所有人属于普通用户daguaniu:
登录超户,修改watch文件权限,增加suid冒险位,然后再切换回普通用户daguaniu执行watch文件:
置冒险位后,普通用户执行该watch文件时,其权限升级为root超户权限(执行结束后恢复普通用户权限):
acl权限列表
作用:
让特定的用户对特定的文件有特定权限
acl列表查看
"+"代表权限列表开启
getfacl file //查看ac开启的文件权限
# file: file //文件的名称
# owner: root //文件的拥有者
# group: root //文件的拥有组
user::rw //文件拥有者的权限
user:kiosk:rw- //指定用户的权限
group::r-- //文件拥有组的权力
mask::rw- //能赋予用户的最大权力阀值
other::r-- //其他人的权限
acl列表的管理
getfacl file
set -m u:username:rwx file //设定username对fle拥有rwx权限
set -m u:group:rwx file //设定group组成员对fle拥有rwx权限
set -x u:username file //从acl列表中删除username
setfacl -b file //关闭file上的acl列表
mask值
在权限列表中mas标示能生效的权力值
当用chmod减小开启acl的文件权限时mask值会发生改变
setfacl -m m:rwx file //改变mask值(恢复马赛克值)
acl默认权限设定
acl默认权限只针对目录设定
acl权限值针对设定完成之后新建立的文件或目录生效,而已存在的文件是不会继承默认权限
setfacl -m d:u:student:rwx file
setfacl -k file
对于该目录下新建立的文件默认权限生效(对设定默认权限之前建立的再该目录下的文件不生效):
关闭设定的默认权限:
各种权限优先级排列
userperm > acluser > aclgroup > groupperm > otherperm
chattr命令和lsattr命令
lsattr dir
lsattr-d dir //显示目录本身
chattr +i|=i dir //为目录设置i权限,既不能添加也不能删除
chattr -i dir //取消目录i权限
chattr +a|=a dir //为目录设置append权限,只许添加,不许删除
chattr -i dir //取消目录a权限
所以开放权力不一定会使权力变大