文件属性和用户权限

1、在Linux系统中,默认情况下,所有系统账户与一般身份用户,以及root的相关内容,都记录在/etc/psswd中。密码都记录在/etc/shadow中。Linux中的所有用户名称都记录在/etc/group内。
2、Linux文件属性
文件属性和用户权限
文件属性和用户权限
对上面这个进行分析:
(1)第一列表示文件的属性:
· 第一属性表示这个文件是“目录、文件或链接文件等”
[d] ,是目录 [-],是文件 [l],表示为链接文件
[b],表示为设备文件中可供存储的接口设备
[c],表示为设备文件中的串行端口设备,例如键盘、鼠标
· 接下来的属性中,3个为一组,且均为“rwx”的组合,表示“可读可写可执行”
第一组是”拥有者的权限“
第二组是“同用户组的权限”
第三组是“其他非本用户组的权限”
root用户拥有至高无上的"权力"
在Linux中,文件是否能被执行,是通过是否具有x属性来决定的,与用户名没有绝对的关系
(2)第二列表示连接占用的节点(I结点):与连接文件有关,如果是目录的话,那么就与该目录下还有多少目录有关。
(3)第三列表示这个文件(或目录)的拥有者。
(4)第四列表示拥有者的用户组:在Linux中,一个用户可以附属在一个或多个用户组之下。
(5)第五列表示这个文件的大小。
(6)第六列表示这个文件的创建日期或者最近修改日期:如果是以中文来安装Linux的,那么默认语系可能是中文,由于中文无法显示在命令行类型的终端上,所以这个时候需要修改一下/etc/sysconfig/i18n文件,将里面的“LC_TIME”修为“LC_TIME=en”,存储退出,就可以在终端上得到英文日期。
(7)第七列表示这个文件的文件名:如果文件名之前有“.”,表示这个文件是“隐藏文件”。
3、更改用户权限
(1)chgrp:更改文件所属用户组
要改成的用户组名称,必须在/etc/group里存在,否则会显示错误
格式如下:
文件属性和用户权限
文件属性和用户权限
需要注意的地方:只有root用户有权限更改文件的用户组
—R 进行递归的持续更改,即连同子目录下的所有文件、目录、都更新成这个用户组,常常用于更改某一目录的情况
文件属性和用户权限
文件属性和用户权限
(2)chown:更改文件拥有者
基本格式与上面一个相似;
(3)chmod:更改文件属性、SUID属性
数字类型更改文件权限(绝对方式):
9个属性每3个一组,各属性的对照表如下:
r:4 w:2 x:1
-R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都会变更
举例来说,如果要将.bashrc这个文件所有的权限都设定启用,那么就下达:
[[email protected] ~]# ls -al .bashrc
-rw-r--r-- 1 root root 395 Jul 4 11:45 .bashrc
[[email protected] ~]# chmod 777 .bashrc
[[email protected] ~]# ls -al .bashrc
-rwxrwxrwx 1 root root 395 Jul 4 11:45 .bashrc
那如果要将权限变成 -rwxr-xr-- 呢?那么权限的分数就成为 [4+2+1][4+0+1][4+0+0]=754 啰!所以你需要下达: [[email protected] ~]# chmod 754 filename
符号类型改变文件权限(相对方式)
从之前的介绍中我们可以发现,基本上就九个权限分别是(1)user (2)group (3)others三种身份。那么我们就可以由u, g, o来代表三种身份的权限!此外, a 则代表 all 亦即全部的身份!那么读写的权限就可以写成r, w, x!也就是可以使用底下的方式来看:
 
chmod u(user) +(加入) r 文件或目录
g(group) -(除去) w
o(other) =(设置) x
a(all)    

假如我们要设定一个文件的权限成为『-rwxr-xr-x』时,基本上就是:
user (u):具有可读、可写、可执行的权限;
group 与 others (g/o):具有可读可执行的权限。
所以就是: [[email protected] ~]# chmod u=rwx,go=rx .bashrc
# 注意喔!那个 u=rwx,go=rx 是连在一起的,中间并没有任何空格符!
[[email protected] ~]# ls -al .bashrc
-rwxr-xr-x 1 root root 395 Jul 4 11:45 .bashrc
那么假如是『 -rwxr-xr-- 』这样的权限呢?
可以使用『 chmod u=rwx,g=rx,o=r filename 』来设定。此外,如果我们知道原先的文件属性,而我只想要增加.bashrc这个文件的每个人均可写入的权限, 那么我就可以使用:
[[email protected] ~]# ls -al .bashrc
-rwxr-xr-x 1 root root 395 Jul 4 11:45 .bashrc
[[email protected] ~]# chmod a+w .bashrc
[[email protected] ~]# ls -al .bashrc
-rwxrwxrwx 1 root root 395 Jul 4 11:45 .bashrc
而如果是要将权限去掉而不改变其他已存在的权限呢?例如要拿掉全部人的可执行权限,则:
[[email protected] ~]# chmod a-x .bashrc
[[email protected] ~]# ls -al .bashrc
-rw-rw-rw- 1 root root 395 Jul 4 11:45 .bashrc