Linux那点事-文件权限

Linux如何查看文件操作权限呢?

1. 如何查询用户和组

linux查看用户所属组有很多方法:

  1. 使用whoami命令查看当前用户:
whoami命令查询当前用户
  1. 使用groups查看当前用户所属组:
groups-查看当前用户所属组
  1. groups 用户(查看用户所属组)
groups 用户-查看用户所属组
  1. id用户(查看用户所属组)
id 用户-查看用户所属组
  1. 直接查看组文件,more etc/group组文件

more的相关命令:

  • 按回车:默认下一行数据;
  • 按空格键盘,默认下一页,以当前屏幕为单位;
  • 按Ctrl+ B 上一页,以当前屏幕大小为单位;
  • 按B 回到文档第一页面
直接查看组文件

从左到右依次代表:

  1. 组名
  2. 组密码:(一般使用x进行加密)
  3. GID
  4. 属于该组的用户列表

千万不能直接通过修改/etc/group文件来添加用户到一个组,要使用usermod命令。在添加用户到不同组之前,首先得创建一个组

小胖提问:为什么有些组没有列出用户呀?

在列表中,有些组并没有列出用户。这并不是说这些组没有成员,当一个用户在/etc/passwd文件中指定某个组作为默认组时,用户账户不会作为该组成员再出现在/etc/group文件中。

2. 如何查看文件权限

Linux文件权限详解

例如,我们使用ll命令操作一个目录:

-rwxr-xr-x. 1 root root     28976 11月  6 2016 yes
lrwxrwxrwx. 1 root root         8 3月  19 11:52 ypdomainname -> hostname
-rwxr-xr-x. 1 root root       801 8月   6 2017 yum
-rwxr-xr-x. 1 root root      1941 8月   2 2017 zcat
-rwxr-xr-x. 1 root root      1760 8月   2 2017 zcmp
-rwxr-xr-x. 1 root root      5768 8月   2 2017 zdiff

2.1 第一个字符一般用来区分文件还是目录。

* d:表示一个目录;
* -:表示一个普通文件;
* l:表示这是一个符号链接(硬链接或者软连接);
* b,c:分别表示区块设备和其他的外围设备,是特殊类型的文件;
* s,p:这些文件关系到系统的数据结构和管道,通常很少见到;

小胖,如何区分硬链接和软连接呢?
详解硬链接和软连接

我们这可以使用两个命令来进行区分:
ls -i命令:

查询inode

stat命令

stat命令

2.2 最前面的2-10个字符用来表示权限。

第2~10个字符当中的每3个为一组,左边三个字符表示所有者权限,中间3个字符表示与所有者同一组的用户的权限,右边3个字符是其他用户的权限。这三个一组共9个字符,代表的意义如下:

  • r(Read,读取):对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目录的权
  • w(Write,写入):对文件而言,具有新增、修改文件内容的权限;对目录来说,具有删除、移动目录内文件的权限。
  • x(eXecute,执行):对文件而言,具有执行文件的权限;对目录了来说该用户具有进入目录的权限。

-:表示不具有该项权限。

2.3 修改文件权限

使用chmod和数字改变文件和目录的访问权限

2.3.1 修改文件权限

文件和目录的权限表示,是用rwx这三个字符来代表所有者、用户组和其他用户的权限。有时候,字符有些麻烦,因此还有另外一种方法以数字来表示权限

  • r: 对应数值4
  • w: 对应数值2
  • x:对应数值1
  • -:对应数值0

本质上是对应的二进制:

rwx r-x r- -则可以表示成为:

111 101 100

再将其每三位转换成为一个十进制数,就是754。

[root@localhost ~]# chmod 754 a.txt

2.3.2 递归修改文件权限

加入想一次修改某个目录下所有文件的权限,包括子目录中的文件权限也要修改,要使用参数-R表示启动递归处理。

注:仅把/home/user目录的权限设置为rwxrwxrw
[root@localhost ~] chmod 777 /home/user 
注:表示将整个/home/user目录与其中的文件和子目录的权限都设置为rwxrwxrwx
[root@localhost ~] chmod -R 777 /home/user 

2.3.3 修改所属用户和所属组

源文件:

-rwxrwxrwx 1 root root 12172 8月 15 23:18 conkyrc.sample
drwxr-xr-x 2 root root 48 9月 4 16:32 Desktop
-r--r--r-- 1 root root 331844 10月 22 21:08 libfreetype.so.6
drwxr-xr-x 2 root root 48 8月 12 22:25 MyMusic
-rwxr-xr-x 1 root root 9776 11月 5 08:08 net.eth0
-rwxr-xr-x 1 root root 9776 11月 5 08:08 net.eth1
-rwxr-xr-x 1 root root 512 11月 5 08:08 net.lo
drwxr-xr-x 2 root root 48 9月 6 13:06 vmware

可以看到conkyrc.sample文件的所属用户组为root,所有者为root。
执行下面命令,把conkyrc.sample文件的所有权转移到用户user:

修改文件所属者
[root@localhost ~] chown user conkyrc.sample
[root@localhost ~] ls -l
-rwxrwxrwx 1 user root 12172 8月 15 23:18 conkyrc.sample
drwxr-xr-x 2 root root 48 9月 4 16:32 Desktop
-r--r--r-- 1 root root 331844 10月 22 21:08 libfreetype.so.6
drwxr-xr-x 2 root root 48 8月 12 22:25 MyMusic
-rwxr-xr-x 1 root root 9776 11月 5 08:08 net.eth0
-rwxr-xr-x 1 root root 9776 11月 5 08:08 net.eth1
-rwxr-xr-x 1 root root 512 11月 5 08:08 net.lo
drwxr-xr-x 2 root root 48 9月 6 13:06 vmware

要改变所属组,可使用下面命令:

[root@localhost ~] chown :users conkyrc.sample

你可能感兴趣的:(Linux那点事-文件权限)