[Linux] linux 权限管理

用户和用户组

Linux是一个多用户操作系统,因此,对文件的操作管理就显得非常重要,哪些用户对哪些文件可以操作(包括可读、可写、可执行),哪些不可操作,需要进行管理。
在Linux中,用户和用户组的信息分别保存在/etc/passwd/etc/group中,用户密码口令保存在/etc/shadow中,先来看/etc/passwd中:

# 用户名:口令:UID:GID:描述注释:主目录:登录shell
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
# ......

其中口令在/etc/shadow中加密保存。
再来看/etc/group中:

# 组名:口令:GID:组成员用户列(用逗号分隔)
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:syslog,jyq
tty:x:5:
disk:x:6:
lp:x:7:
# ......

再来看看/etc/shadow中:

# 用户名:口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
root:$6$pdb6Fgpe$QfmYi.IB2SeUPv1iD7rJLLEgm1KR0Z6UhpZxU50NpuJzlQ8aLqyOqchBaPETsRo.JvQ2M5fP7TlHCCDFTUTF31:17477:0:99999:7:::
daemon:*:17212:0:99999:7:::
bin:*:17212:0:99999:7:::
sys:*:17212:0:99999:7:::
sync:*:17212:0:99999:7:::
games:*:17212:0:99999:7:::
man:*:17212:0:99999:7:::
jyq:$1$FXWUpzv8$EsteiUKC3OSJnGJ5v5y/t1:17477:0:99999:7:::

如果要改变文件的所属用户或用户组,使用chownchgrp.前提是用户和用户组必须在/etc/passwd和/etc/shadow中存在才行。同时这个操作必须是root用户才可以。

$ chgrp [-R] [user] [filename/dirname]
-R 表示递归修改文件路径中的所有文件
$ chown [-R] [user] [filename/dirname]

如:

# 新建一个文件,并查看其所属用户和用户组
$ mkdir test.txt
$ ll
rwxrwxr-x  2 jyq  jyq   4096 Jun 17 20:07 test.txt/
# 修改所属用户
$ sudo chown root test.txt/
$ ll
drwxrwxr-x  2 root jyq   4096 Jun 17 20:07 test.txt/
# 修改用户组
$ sudo chgrp root test.txt/
$ ll
drwxrwxr-x  2 root root  4096 Jun 17 20:07 test.txt/

查看文件属性

可以使用ll 或者ls -l来查看:

jyq@ubuntu:~$ ll
total 120
drwxr-xr-x 10 jyq  jyq   4096 Jun 13 16:01 ./
drwxr-xr-x  3 root root  4096 Nov  7  2017 ../
-rw-------  1 jyq  jyq   3386 Jun 13 15:57 .bash_history
-rw-r--r--  1 jyq  jyq    220 Nov  7  2017 .bash_logout
-rw-rw-r--  1 jyq  jyq   3771 Mar 18 16:09 .bashmyrc
-rw-r--r--  1 jyq  jyq   3771 Nov  7  2017 .bashrc
drwx------ 13 jyq  jyq   4096 Mar 16 17:22 .cache/
drwx------ 15 jyq  jyq   4096 Mar 15 07:52 .config/
-rw-r--r--  1 jyq  jyq     25 Nov  7  2017 .dmrc

第一列代表文件的类型和权限,其余列代表的含义分别为:连接到该文件节点的文件个数、所属用户、所属用户组、容量大小(B为单位)、最近修改时间、文件名。

在第一列中,共有十个字符,这十个字符代表意义为:

第一个字符:文件类型
第2-4字符:用户权限
第5-7字符:用户组权限
第8-10字符:其他用户权限

第一个字符代表文件类型,如目录、块文件、链接文件等。

d表示目录
-表示文件
l表示链接文件
b表示块设备,是设备文件中的可供存储的接口设备
c表示串行端口设备,如键盘、鼠标。

剩下的9个字符分为三组,每组三个字符,分别表示用户的权限,用户组的权限,其他用户权限,每组字符分别为可读、可写、可执行:

r:表示只读权限
w:表示可写权限
x:表示可执行权限
-:表示不具有此权限

因此,drwxr-xr-x就代表:
* d:该文件为目录
* rwx:该用户具有可读可写可执行的权限
* r-x:该用户所处用户组具有可读可执行权限,但不可写;
* r-x:其他用户具有可读可执行权限,但不可写;

修改文件权限

修改文件权限使用chmod命令,该命令有两种方式进行修改

方式一 使用数字改变权限

chmod [-R] 数字 文件/目录
  • R:表示递归修改一个目录下的文件
  • 数字是权限的表示,r=4,w=2,r=1.因此,700表示用户具有所有权限,用户组和其他用户不具有任何权限,以此类推,如:
jyq@ubuntu:~/PythonWorkSpace$ ls -l
total 0
-rw-rw-r-- 1 jyq jyq 0 Jun 13 16:51 test
jyq@ubuntu:~/PythonWorkSpace$ chmod 777 test
jyq@ubuntu:~/PythonWorkSpace$ ls -l
total 0
-rwxrwxrwx 1 jyq jyq 0 Jun 13 16:51 test
jyq@ubuntu:~/PythonWorkSpace$ chmod 000 test
jyq@ubuntu:~/PythonWorkSpace$ ls -l
total 0
---------- 1 jyq jyq 0 Jun 13 16:51 test
jyq@ubuntu:~/PythonWorkSpace$ chmod 700 test

方式二 使用符号类型改变权限

chmod [ugoa] [+-=] [rwx] 文件或目录
  • u表示用户,g表示用户组,o表示其他用户,a表示所有
  • +表示添加某权限,-表示去掉某权限,=表示设置某权限;
  • r表示只读,w表示可写,x表示可执行

如:

jyq@ubuntu:~$ ll
total 124
-rw-r--r--  1 jyq  jyq   3771 Nov  7  2017 .bashrc
# 为所有用户添加可写权限
$ chmod u+w,g+w,o+w .bashrc
jyq@ubuntu:~$ ll
total 124
-rw-rw-rw-  1 jyq  jyq   3771 Nov  7  2017 .bashrc
# 为所有用户添加可读可写可执行
jyq@ubuntu:~$ chmod a=rwx .bashrc
jyq@ubuntu:~$ ls -a -l
-rwxrwxrwx  1 jyq  jyq   3771 Nov  7  2017 .bashrc
# 恢复原来的权限
jyq@ubuntu:~$ chmod u=rw,g=r,o=r .bashrc
jyq@ubuntu:~$ ll
total 124
-rw-r--r--  1 jyq  jyq   3771 Nov  7  2017 .bashrc

猜你喜欢

转载自blog.csdn.net/FightFightFight/article/details/80723159