####文件权限#####
1.文件权限存在的意义
系统最底层安全设定方法之一
保证文件可以被可用的用户作相应操作
2.文件权限查看
ls -l file
ll file
ls -ld dir
ll -d dir
alias:查看系统别名
3.文件权限读取
- | rw-rw-r-- 1 root root 0 Jul 21 09:18 file
[1] [2] [3] [4] [5] [6] [7] [8]
[1] - :空文件,或者文本
d:目录
l:软链接
s:套接字
b:block块设备,程序的接口
c:字符设备,显示字符的设备
[2]文件的权限
rw- rw- r--
1 2 3
1.【u】文件拥有者对文件能做什么操作
2.【g】文件所有组对文件能做什么操作
3.【o】其他人对文件能做什么操作
[3]对文件:文件硬连接个数 (文件内容被记录的次数)
对目录:文件中子目录的个数
硬链接:ln oldfile newfile
同一个文件使用了多个别名(他们拥有相同的inade号)
软链接:ln -s oldfile newfile
也称符号链接,文件用户数据块中存放的内容是另一个文件的路径名的指向(相当于创建了windows中的快捷方式),若删除被指向的源文件,则软链接就变成了死链接
[4]文件的所有人
[5]文件的所有组
[6]对文件:文件的大小
对目录:子文件元数据的大小
[7]文件的内容被修改的时间(若只改变文件权限或属性,时间不会改变)
[8]文件的名称
4.如何改变文件的所有人和所有组
chown
chown username dir|file 改变文件或目录的所属用户
chown username:groupname dir|file 同时改变文件或目录的所属用户和所属组
chown username.groupname dir|file
chown -R username dir 使用-R,递归的将目录下的文件的所属用户也同时改变
chgrp
chgrp groupname dir|file 改变文件或目录的所属组
chgrp -R groupname dir 使用-R,递归的将目录下的文件的所属组也同时改变
5.如何改变文件权限
r:
对文件:是否可以查看文件内容
对目录:是否可以查看目录中有什么子文件
w:
对文件:是否可以改变文件里面记录的内容
对目录:是否可以对目录中子目录或子文件的元数据进行更改
x:
对文件:是否可以通过文件名调用文件内记录的程序
对目录:是否可以进入目录
2.更改方式
chmod <u|g|o><+|-|=><r|w|x> file|dir
r=4 w=2 x=1
7=rwx
6=rw-
5=r-x
4=r--
3=-wx
2=-w-
1=--x
0=---
####6.umask###
umask 系统建立文件时默认保留的权力
root用户的默认umask为 0022
普通用户的默认umask位0002
创建文件默认是644权限 777-111-022=644
创建目录默认是755权限 777-022=755
临时设定系统预留权力
umask 077
永久更改umask
vim /etc/profile 系统配置文件
vim /etc/bashrc shell配置文件
source /etc/profile
source /etc/bashrc
登录式shell:
正常通过某终端登录
su - USERNAME
su -l USERNAME
非登录式shell:
自动执行的shell脚本,也是非交互式shell
su USERNAME
图形终端下打开的命令窗口
bash的配置文件:
全局配置
/etc/profile,/etc/profile.d/*.sh,/etc/bashrc
个人配置
~/.bash_profile,~/.bashrc
profile类的文件:
设定环境变量
运行命令或脚本
bashrc类的文件:
设定本地变量
定义别名
登录式shell如何读取配置文件?
/etc/profile-->/etc/profile.d/*.sh-->~/.bash_profile-->~/.bashrc-->/etc/bashrc
非登录式shell如何读取配置文件?
~/.bashrc-->/etc/bashrc-->/etc/profile.d/*.sh
#####特殊权限#########
1.sticky 粘制位
作用:只针对目录生效,当一个目录上有sticky权限时,在这个目录中的文件只能被文件的所有者删除
设定方式:
chmod o+t dir
chmod 1xxx dir
2.sgid 强制位
作用:
对文件:只针对于二进制可执行文件,当文件上有sgid时,任何人执行此文件产生的进程都属于文件的组
对目录:当目录上有sgid权限时,任何人再此目录中建立的文件都属于目录的所有组
设定方式:
chmod g+s file|dir
chmod 2XXX file|dir
例1:
l例2:添加财务组及相关目录,使用户在其内编辑的文件自动归为财务组
3.suid 冒险位
只针对二进制可执行文件,但文件上suid时,任何人执行这个文件中记的程序产生的进程都属于文件自身的属主
设定方式:
chmod u+s file
chmod 4xxxx file
例:防止root用户误删/,将/bin/rm文件添加u+s,使其使用普通用户身份无法删/
####acl#####
传统的权限仅有三种身份 (owner,group, others) 搭配三种权限 (r,w,x), 并没有办法单纯的针对某一个使用者或某一个群组
来设置特定的权限需求 , 此时就得要使用 ACL( 文件访问控制列表 ,Access Control List) 这个机制ACL 因此目前 ACL 几乎已经默认加入在所有常见的 Linux 文件系统的挂载参数中 (ext2/ext3/ext4/xfs 等等 ), 但 rhel6.0以及之前的版本默认不支持 acl 的功能1.getfacl
getfacl file 查看acl开启的文件的权限
#file:file 文件名称
#owner:root 文件拥有者
#group: root 文件拥有组
user::rw- 文件拥有人的权限
user:westos:rwx 指定用户的权限
group::r-- 文件拥有组的权限
mask:rwx 能赋予用户的最大权力伐植
other::r-- 其他人的权限
2.acl列表的管理
setfacl -m u:username:rwx file 设定username对file拥有rwx权限
setfacl -m g:group:rwx file 设定group组对file拥有rwx权限
setfacl -x u:username file 从acl列表中删除username
setfacl -b file 关闭file上的acl列表
例1:创建目录/mnt/westos
student用户在其目录中没有写权限,无法touch文件
然后为目录设置acl,使student用户拥有rwx权限
最后student用户能够touch文件
例2:关闭acl:setfacl -b /dir
3.mask值
在权限列表中mask表示能生效的权力值,当用chmod减小开启acl文件案权限时mask值会发生改变
chmod g-w westos
如果要恢复mask值
setfacl -m m:rw westos
例:
4.acl默认权限设定
acl默认权限只针对目录设定
acl权限只针对设定完成后新建立的文件或目录生效,而已经存在的文件是不会继承默认权限的
setfacl -m d:u:student:rwx westos/
例:在设置默认权限前,/mnt/westos/test不能touch文件,设置默认权限后,/mnt/westos/下新建的yy目录下可以touch文件
例题:新建用户组,shengchan,caiwu,jishu
新建用户要求如下:
1.tom是shengchan组的附加组
2.harry是财务组的附加用户
3.leo是jishu组的附加用户
4.新建admin用户,此用户不属于以上提到的三个部门
新建目录要求如下:
/pub目录为公共存储目录对所有用户可以读写执行,但用户只能删除属于自己的文件
/sc目录为生产存储目录只对生产用户可以写入,并且自动归属到shengchan组中
/cw目录为财务存储目录只对财务部用户可以写入, 并且自动归属到财务组中
admin用户对于/sc和/cw目录可以读写执行
groupadd shengchan
groupadd caiwu
groupadd jishu
useradd -G shengchan tom
useradd -G caiwu harry
useradd -G jishu leo
useradd admin
mkdir /pub /sc /cw
chmod 777 /pub
chmod o+t /pub
chgrp shengchan /sc
chmod g+s /sc
chmod 770 /sc
chgrp caiwu /cw
chmod g+s /cw
chmod 770 /cw
setfacl -m u:admin:rwx /cw
setfacl -m u:admin:rwx /sc