ls -l filename
- rw-rw-r-- 1 kiosk kiosk 0 Oct 2 17:05 filels -ld directoy
d rwxr-xr-x 3 kiosk kiosk 33 Aug 27 09:47 directory[8] ##目录名称
chown 用户名称 文件 ##更改文件所有人
chgrp 组名称 文件 ##更改文件所有组
chown -R 用户 目录 ##更改目录本身以及目录中的子文件的所有人
chgrp -R 组名 目录 ##更改目录本身以及目录中的子文件的所有组
改变了目录本身以及目录中的子文件的所有组,用ls -al 查看全部。
ls -l 中2-10字符为文件权限
rwx r-x r-x
用户权限(u) 组成员权限(g) 其他用户权限(o)
权限种类
r
r权限针对文件,表示可以查看文件内容
r权限针对目录,表示可以ls 查看目录中存在的文件名称
w
w权限针对文件,表示可以更改文件的内容
w权限针对目录,表示是否可以删除目录中的子文件或者子目录
x
x权限对于文件,表示是否可以开启文件当中记录的程序
x权限对于目录,表示是否可以进入目录中
chmod ugo + - = rwx ##改权限
(ugo表示人对文件的读写权限,rwx是可以读写执行的命令,把它用加减等与赋给ugo)
下面看一下例子的对比图:
用watch ls -lR 文件名 监控权限的变化
上图在执行第二个命令的时候chmod u+rwx g+rw /mnt/file2 由于修改了两个位置的权限但是中间没有用逗号隔开,会出现cannot access ‘g+rw’,修改两个位置中间要用“,”隔开。
在程序中rwx也可以用二进制计算结果来表示:
u=rwx=7 |g=rwx=7 |o=rwx=7
4+2+0(rw相加和)
u=rw-=6 g=r--=4 o=r--=4 644 (ugo的权限)
r=4
w=2
x=1
-=0
7=rwx,6=rw-,5=r-x,4=r--,3=-wx,2=-w-,1=--x,0=---
文件的默认权限是没有x的,即文件的最大默认权限为666(-rw-rw-rw)
由于进入目录和目录的x权限有关,故目录的最大默认权限为777(drwx-rwx-rwx)
umask ##显示系统预留权限值
umask 077 ##临时修改umask值
上图我们用umask命令将文件默认权限更改成了077,但这只是临时的更改,当我们关闭终端再打开的时候umask的权限依然是022.
##永久修改
vim /etc/bashrc 71行是普通用户的更改,73是超级用户的更改
vim /etc/profile 60行是普通用户的更改,62是超级用户的更改
source /etc/bashrc ##刷新bash配置
source /etc/profile ##刷新系统配置
修改前 修改后
用vim永久修改后,必须调用source刷新配置,否则umask值不变
stickyid ###强制位
o+t ###只针对目录,当一个目录上有t权限时,这个目录中的文件只能被文件拥有者删除
t=1
chmod o+t directroy
chmod 1777 directory
上图证明:我们在超级用户下建立一个目录赋予满权限,随后用两个普通用户登陆在这个目录里建立文件。然而我们竟然可以用dmf用户删除student用户在目录里建立的文件。这对我们的文件是不安全的
由上图可知:我们用chmod o+t /mnt/linux 命令给所建的目录赋予权限,然后继续用两个普通用户登录并且用普通用户删除另一个普通用户所建的文件,这时 Operation not permitted 我们已经没有权力可以删除了。
sgid ###粘制位
g+s ##针对目录,在目录中创建的文件都自动归属到目录所在组,针对二进制文件,文件内记录的程序在执行时和执行者的组身份没有关系,而是以二进制文件的所有组的身份执行的
chmod g+s file|directory
chmod 2777 file|directory
suid ###冒险位
u+s ###针对文件,文件记录动作在执行时是一文件所有人身份执行的,与是谁发起的无关
chmod u+s file
chmod 4777 fileg+s
ug+s ###g+s,u+s
下面我们把粘制位和冒险位一起做个实验ug+s
acl ##指定特定的用户对特定的文件拥有特殊权力
-rw-rwx---+ 1 root root 0 Mar 28 02:39 file
^
权限列表开启
那么这个文件的普通权限也在权限列表中识别,ls -l 看到的权限是不准确的
#查看
getfacl /mnt/file
#内容如下:
#file: mnt/file #文件名称
# owner: root #文件的拥有者
# group: root #文件的组
user::rw- #文件拥有者的权限
user:westos:rw- #特殊指定用户的权限
group::--- #文件组的权限
group:student:rwx #特殊指定组的权限
mask::rwx #权限最大值
other::--- #其他人的权限
##设定
setfacl -m u:dmf:rwx /mnt/file #设定student用户对file文件可以读写执行
setfacl -m g:student:rwx /mnt/file #设定student组对文件可以读写执行
setfacl -x u:student /mnt/file #在权限列表中删除用户student的信息
setfacl -x g:student /mnt/file #在权限列表中删除student组的信息
setfacl -b /mnt/file #关闭权限列表那么,"+"消失
##mask值
#mask值是能够赋予用户权限的最大值
#当设定acl列表后,如果用chmod命令缩小文件的权限,那么mask值会被更改
chmod 600 /mnt/file #做这样的动作mask值会发生改变
更改前
更改后
#effective:--- 此位置表示有效的权力
上图所示把用户切换到linux用户编写/mnt/file,完成退出的时候最后一行会显示“readonly”只读文档,说明更改mask的值会更改权限
###恢复###
setfacl -m m:rwx /mnt/file #用此命令可以恢复mask的值
####acl列表的默认权限#####
#权限针对与目录生效,当对目录设定普通的权限列表后,是不能取定特定用户对在目录中新建的文件由指定权限的,如果需要权限自动添加到新建文件上那么要设定目录的默认权限
setfacl -Rm u:student:rwx /mnt/test
setfacl -m d:u:student:rwx /mnt/westos
设定在test目录中建文件对student用户有rwx权限,对已经存在的文件无效,对目录本身无效