在讲权限之前,先复习几条指令,在权限中会用到:
ls -l file ###查看文件内容属性(一串长字符)
ls -ld test/ ###查看目录本身属性(一串长字符)
ls -lR test/ ###可以查看主目录下的所有目录/文件属性(递归)
ll file ###同ls -l file
ll -d dir ###同ls -ld dir
linux下命令“ll”是“ls -l"的别名,"ll"和“ls -l”的功能是一样的
file 文件 ###查看文件类型
【文件内容决定文件属性】
ls -l file 或者 ls -ld test/ ###会显示下面的字符串,表示文件/目录的权限及属性
-rw-r--r-- 1 kiosk kios 0 time file
(10位)文件的权限 #对文件:文件内容被记录的次数 文件的所有者 文件所在组 文件属性的大小 文件创建的时间 文件的名字
:硬链接个数
#对目录:目录下的子目录个数
【第一个符号的含义】
“-” “d” “l” “c” “s” “b”
-(普通文件/空文件) | d(目录) |
---|---|
l(软链接:快捷方式) | c(字符设备) |
s(socket:套接字:进入程序,与程序进行交互) | b(块设备:block) |
这里简单举例“-“ 和 “d“
可以看到新建立的文件file,他的属性为"-" ,新建立的目录AAA,他的属性为"d"
【第2-10位】
每三位一组:【文件拥有者可以做什么】【文件所有组可以做什么】【其他人可以做什么】
rwx|rw-|r-x`:
:可读可写可操作|可读可写|可读可操作
:r值为4,w值为2,x值为1 【上式为:765】
r:读:是否可以查看文件中的内容【cat file】||是否可以查看目录中有什么文件或者子目录【ls dir】
w:写:是否可以修改或者删除目录中的文件
x:操作:是否可以进入此目录【以及是否可以通过文件名称调用文件内记录的命令】
【通常文件属性为644,目录属性为755】
mkdir text
touch file
ls -ld text/ :drwxr-xr-x ###【755】
ls -ld file :-rw-r--r-- ###【644】
777-022=755-111=644 【022为预留权限,可以umask修改;文件比目录少111权限】
特别注意:
#####744-111=644 ####744为rwxr–r-- ; 111为–x--x–x,744后6位没有x,所以相当于没减去。
下面罗列了常见的chown&chgrp&chmod的一些用法:
chown root file ###改变文件file的所有者,改为root
chown root:root /tmp/tmp1 ###改变tmp目录下的tmp1文件的属性,将其所有者和所在组都改为root 【lee:root 即为所有者改为lee,所在组改为root】
chown -R root /abc/ ###递归改变/abc目录下的所有目录文件的所在组为root
chgrp root /mnt/a ###改变 /mnt/a文件的所在组为root 【同上,若是整个目录都改,则-R】
chmod o+-r file:增加/删除 r 可读权限 【u|g|o :所有者,所在组,其他人】
chmod o+-w file:增加/删除 w 可写权限 【写之前需要赋予读和操作的权限;读可以看到写的内容,操作使能够进入文件去写】
chmod o+-x file:增加/删除 x 可操作权限
chmod +-r file/mnt/linux/file ###对ugo都增加r或者都减去r
chmod +-w file/mnt/linux/file ###没有指定ugo的情况下,w只指定u,即只给u增加删除w 【w的危险度比较高,不能随便给予所有人更改内容的权限】
chmod o=r—x file ###指定其他人的权限为r-x,即可读可操作【不可写】
chmod u-r,g+x file ###去掉u【所有者】的r【可读】权限,增加g【所在组】的x【可操作】权限
chmod -111 file ###给file的权限减去111
chmod 744 file: ###指定file文件的权限为744
chmod -R 777 dir/* ###指定一个目录下的所有子目录和子文件权限
以上指令就不一一演示了,有兴趣的朋友可以去尝试下。
**
【预留权限umask】
**
我们上面有说道,新建的文件/目录他们的权限通常分别为644和755,而不是777。
原因就是系统有设置预留权限,那么我们来学习下怎样去更改预留权限
【临时更改umask】
umask 077 ###临时设定系统预留权限为077
通过直接输入 umask 077
我们就改变了预留权限,但这只是在本次shell中暂时改变。【我们当然可以将077换为其他权限值】
【永久更改umask】
- vim /etc/profile ###系统配置文件 【59-65行左右】
- vim /etc/bashrc ###shell配置文件 【70-73行左右】
###两次更改结果应该一致【每一个配置文件中的第一个umask为普通用户的umask,第二个为超级用户的umask】
- source /etc/profile ###更改完后重新运行【让更改立即生效】
- source/etc/bashrc ###同上
上面两张图片分别是在vim编辑profile 和 bashrc两个文件时截的截图。按【i】进入插入模式>更改预留权限值>按【esc】退出插入模式>输入【:wq】退出保存
具体代码操作如上图所示。
大大的小小阳