Linux如何查看文件操作权限呢?
1. 如何查询用户和组
- 使用whoami命令查看当前用户:
- 使用groups查看当前用户所属组:
- groups 用户(查看用户所属组)
- id用户(查看用户所属组)
- 直接查看组文件,more etc/group组文件
more的相关命令:
- 按回车:默认下一行数据;
- 按空格键盘,默认下一页,以当前屏幕为单位;
- 按Ctrl+ B 上一页,以当前屏幕大小为单位;
- 按B 回到文档第一页面
从左到右依次代表:
- 组名
- 组密码:(一般使用x进行加密)
- GID
- 属于该组的用户列表
千万不能直接通过修改/etc/group文件来添加用户到一个组,要使用usermod命令。在添加用户到不同组之前,首先得创建一个组
小胖提问:为什么有些组没有列出用户呀?
在列表中,有些组并没有列出用户。这并不是说这些组没有成员,当一个用户在/etc/passwd文件中指定某个组作为默认组时,用户账户不会作为该组成员再出现在/etc/group文件中。
2. 如何查看文件权限
例如,我们使用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命令:
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