2019独角兽企业重金招聘Python工程师标准>>>
Linux用户和用户组以及相关权限
注意:以下示例使用MacOS说明
示例一,该目录下只有一个软链接,显示该目录下的所有文件和目录的详细信息
➜ nginx ls -al
total 8
drwxr-xr-x 3 xinxingegeya staff 102 6 22 17:21 .
drwxr-xr-x 18 xinxingegeya staff 612 6 21 18:20 ..
lrwxr-xr-x 1 xinxingegeya staff 31 6 22 17:20 nginx.conf -> /usr/local/etc/nginx/nginx.conf
示例二,显示指定文件的详细信息,
➜ /etc ls -al hosts
-rw-r--r-- 1 root wheel 289 6 22 11:42 hosts
这里的ls -al和linux中显示的有所不同,不过差别不大,以上的各项分别代表的含义是:
the access permissions------(-rw-r--r--)
the number of links to this file------(1)------(文件的硬链接数量)
the ownership (user and unix group which own it)------(root wheel)------(文件的所有者和所属的用户组)
size in bytes------(289)------(文件的大小)
date of the last modification------(6 22 11:42)------(Month DAY_OF_MONTH TIME)------(文件的最后修改日期)
the name of the directory entry------(hosts)------(目录或文件的名字)
目录和文件权限
如下所示,
➜ /etc ls -al hosts
-rw-r--r-- 1 root wheel 289 6 22 11:42 hosts
当使用al选项会列出文件和目录的详细信息,最前面的第2~10个字符是用来表示权限。第一个字符一般用来区分文件和目录:
d:表示是一个目录。
-:表示这是一个普通的文件。
l:表示这是一个符号链接文件,实际上它指向另一个文件。
b,c:分别表示区块设备和其他的外围设备,是特殊类型的文件。
s,p:这些文件关系到系统的数据结构和管道,通常很少见到。
第2~10个字符又分为三部分,
rw-r--r--
rw- 拥有者(user)权限
r-- 用户组(group)权限
r-- 其他用户(other)权限
MacOS常见的用户和用户组:
➜ ~ dscacheutil -q group
name: admin
password: *
gid: 80
users: root xinxingegeya
name: staff
password: *
gid: 20
users: root xinxingegeya
name: wheel
password: *
gid: 0
users: root
修改文件和目录的用户组-chgrp(change group)
修改文件和目录的用户组-chgrp(change group) 示例如下,
➜ helloworld ls -al
total 8
drwxr-xr-x 4 xinxingegeya staff 136 6 22 14:21 .
drwxr-xr-x+ 89 xinxingegeya staff 3026 6 22 14:21 ..
drwxr-xr-x 2 xinxingegeya staff 68 6 22 14:21 dir1
-rw-r--r-- 1 xinxingegeya staff 6 6 22 14:20 hellworld.txt
➜ helloworld chgrp -R admin dir1
➜ helloworld ls -al
total 8
drwxr-xr-x 4 xinxingegeya staff 136 6 22 14:21 .
drwxr-xr-x+ 89 xinxingegeya staff 3026 6 22 14:22 ..
drwxr-xr-x 2 xinxingegeya admin 68 6 22 14:21 dir1
-rw-r--r-- 1 xinxingegeya staff 6 6 22 14:20 hellworld.txt
➜ helloworld
将目录dir1的用户组修改为admin,命令chgrp(change group),R参数表示递归操作该目录下的所有文件和目录,
chgrp -R admin dir1
修改文件和目录的拥有者和用户组-chown(change owner)
修改文件和目录的拥有者和用户组-chown(change owner) 示例如下,
➜ helloworld ll
total 8
drwxr-xr-x 2 xinxingegeya admin 68B 6 22 14:21 dir1
-rw-r--r-- 1 xinxingegeya wheel 10B 6 22 14:28 hellworld.txt
➜ helloworld chown xinxingegeya:staff dir1
➜ helloworld ll
total 8
drwxr-xr-x 2 xinxingegeya staff 68B 6 22 14:21 dir1
-rw-r--r-- 1 xinxingegeya wheel 10B 6 22 14:28 hellworld.txt
chown xinxingegeya:staff dir1
修改 dir1 目录的拥有者为xinxingegeya,其所在的用户组为staff。
当拥有者不存在时,如下
➜ helloworld chown xiaoming:staff dir1
chown: xiaoming: illegal user name
也可以直接指定用户组,比如,
➜ helloworld chown :admin dir1
➜ helloworld ll
total 8
drwxr-xr-x 2 xinxingegeya admin 68B 6 22 14:21 dir1
-rw-r--r-- 1 xinxingegeya wheel 10B 6 22 14:28 hellworld.txt
修改文件和目录的权限-chmod(change mode)
修改文件和目录的权限-chmod(change mode) 示例如下,
➜ helloworld ll
total 8
drwxr-xr-x 2 xinxingegeya admin 68B 6 22 14:21 dir1
-rw-r--r-- 1 xinxingegeya wheel 10B 6 22 14:28 hellworld.txt
➜ helloworld chmod g+w dir1
➜ helloworld ll
total 8
drwxrwxr-x 2 xinxingegeya admin 68B 6 22 14:21 dir1
-rw-r--r-- 1 xinxingegeya wheel 10B 6 22 14:28 hellworld.txt
给用户组增加w权限,
chmod g+w dir1
使用符号模式改变文件和目录的权限
使用符号模式可以设置多个项目:who(用户类型),operator(操作符)和permission(权限),每个项目的设置可以用逗号隔开。 命令chmod将修改who指定的用户类型对文件的访问权限,用户类型由一个或者多个字母在who的位置来说明,示例如下,
➜ helloworld ll
total 8
drwxrwxr-x 2 xinxingegeya admin 68 6 22 14:21 dir1
-rw-r--r-- 1 xinxingegeya wheel 10 6 22 14:28 hellworld.txt
➜ helloworld chmod u-x,g-x,o-x dir1
➜ helloworld ll
total 8
drw-rw-r-- 2 xinxingegeya admin 68B 6 22 14:21 dir1
-rw-r--r-- 1 xinxingegeya wheel 10B 6 22 14:28 hellworld.txt
以下两个命令等价,
chmod u-x,g-x,o-x dir1
chmod ugo-x dir1
使用八进制模式修改文件和目录权限
chmod命令可以使用八进制数来指定权限。文件或目录的权限位是由9个权限位来控制,每三位为一组,它们分别是文件所有者(User)的读、写、执行,用户组(Group)的读、写、执行以及其它用户(Other)的读、写、执行。历史上,文件权限被放在一个比特掩码中,掩码中指定的比特位设为1,用来说明一个类具有相应的优先级。
chmod的八进制语法的数字说明:
r 4
w 2
x 1
- 0
所有者的权限用数字表达:属主的那三个权限位的数字加起来的总和。如rwx ,也就是4+2+1 ,应该是7。
用户组的权限用数字表达:属组的那个权限位数字的相加的总和。如rw- ,也就是4+2+0 ,应该是6。
其它用户的权限数字表达:其它用户权限位的数字相加的总和。如r-x ,也就是4+0+1 ,应该是5。
示例如下,
➜ helloworld ll
total 8
drw-rw-r-- 2 xinxingegeya admin 68B 6 22 14:21 dir1
-rw-r--r-- 1 xinxingegeya wheel 10B 6 22 14:28 hellworld.txt
➜ helloworld chmod 644 dir1
➜ helloworld ll
total 8
drw-r--r-- 2 xinxingegeya admin 68B 6 22 14:21 dir1
-rw-r--r-- 1 xinxingegeya wheel 10B 6 22 14:28 hellworld.txt
======END======