42分钟
0 引子:
命令是同一个命令,进程是同一个进程,但是TOM JERRY对同一资源执行ls命令后看大的结果可能会截然不用,原因如下阐述:
linux上每一套资源分别定义了三套使用能力, 文件的属主 文件的属组 文件的其他用户访问权限
同时linux也需要能够识别用户 组 其他用户
对于计算机而言 怎么识别用户 组 其他人呢??
用户,组都是一个标识,
不同的人发起ls进程,进程是用户发起的进程,肯定和用户有关联,进程是用户操作计算机的代理,进程也是有属主 属组的,
谁发起了进程,那么进程就以谁的身份来运行,
如果tom 发起ls 那么ls进程属主属组都为tom(此时不应该看ls文件的属主 属组) 而文件inittab.new 属主tom也为tom 那么针对文件inittab.new的访问权限就是所有(属主 属组 其他) 这套流程叫做权限上下文
如果jerry 发起ls 能否执行就要靠inittab.new的属主 属组是否支持jerry。
执行命令也是一个文件,用户tom要执行ls文件的时候,需要先看ls文件能否让用户tom执行,一旦可以
那么ls变成一个进程,此时ls进程的属组就是tom的信息,然后ls 在查看 /usr/local时文件时候,此时就需要文件/usr/local的权限和tom的进程ls
做对比,对比过程为:看进程的属主和访问文件的属主是否一样,如果不一样,那么看进程的运行者是否属于文件的属组(而不是看进程的数组是否等于可执行文件的数组)
1 r w x 解释:
用户、组、权限
安全上下文(secure context):系统自动判断
权限:
r, w, x
文件:
r:可读,可以使用类似cat等命令查看文件内容;
w:可写,可以编辑或删除此文件;
x: 可执行,eXacutable,可以命令提示符下当作命令提交给内核运行; 一般情况下不建议文件默认有执行权限万一是病毒 但是目录默认是有执行权限的
目录:
r: 可以对此目录执行ls以列出内部的所有文件;
w: 可以在此目录创建文件;
x: 可以使用cd切换进此目录,也可以使用ls -l查看内部文件的详细信息;
rwx:
r--:只读
r-x:读和执行
---:无权限
0 000 ---:无权限
1 001 --x: 执行
2 010 -w-: 写
3 011 -wx: 写和执行
4 100 r--: 只读
5 101 r-x: 读和执行
6 110 rw-: 读写
7 111 rwx: 读写执行
755:rwxr-xr-x
rw-r-----: 640
660:rw-rw----
rwxrwxr-x:775
2 用户 组 概念:
用户:UID, /etc/passwd 用户信息数据库文件 里面有用户名 家目录 默认shell类型
组:GID, /etc/group
影子口令: 存放用户密码
用户:/etc/shadow
组:/etc/gshadow
用户类别:
管理员:0 uuid号
普通用户: 1-65535 uuid号
系统用户:1-499
一般用户:500-60000
用户组类别方式1:
管理员组:
普通组:
系统组:
一般组:
用户组类别方式2:
私有组:创建用户时,如果没有为其指定所属的组,系统会自动为其创建一个与用户名同名的组
基本组:用户的默认组
附加组,额外组:默认组以外的其它组
/etc/passwd /etc/shadow 文件内字段含义:
/etc/passwd
account: 登录名
password: 密码
UID:用户ID
GID:基本组ID
comment: 注释
HOME DIR:家目录
SHELL:用户的默认shell
/etc/shadow
account: 登录名
encrypted password: 加密的密码
3 各种管理操作:
useradd, userdel, usermod, passwd, chsh, chfn, finger, id, chage
useradd [options] USERNAME
-u UID(UID必须是尚未使用的id 而且要>=500) eg: useradd -u 1000 zm 后 tail -1 /etc/passwd
-g GID(基本组) eg: useradd -g mygroup zm 后 tail -1 /etc/passwd
-G GID,... (附加组 可以有多个)
-c "COMMENT" 增加注释
-d /path/to/directory 指定家目录
-s SHELL 指定使用shell类型, 可以通过 [root@chinadaas109 ~]# cat /etc/shells 来查看都有哪些shell类型 eg: useradd -s /bin/sh zm 然后[root@chinadaas109 ~]# echo $SHELL 查看shell类型
-m -k
-M
-r: 添加系统用户 系统用户是没有家目录的 即使手动-d指定也不会有
userdel:
userdel [option] USERNAME
-r: 同时删除用户的家目录 remove
id:查看用户的帐号属性信息
-u 只看用户 id -u zm
-g
-G
-n 显示名称而不显示id值 id -g -n zm
usermod
-u UID
-g GID
-a -G GID:不使用-a选项,会覆盖此前的附加组;
-c
-d -m: 指定新的家目录, -m表示包含在原来家目录下的数据也移动到新的家目录中
-s 修改shell类型
-l 修改登录名称
-L:锁定帐号
-U:解锁帐号
密码管理:
passwd [USERNAME]
--stdin: standard input 从标准输入当中读入数据作为密码
-l 锁定账号
-u 解锁账号
-d: 删除用户密码
组管理:
创建组:groupadd
groupadd
-g GID
-r:添加为系统组
groupmod
-g 修改组ID
-n 修改组名
groupdel 组名称
gpasswd:为组设定密码
chown , chmod
chown: 改变文件属主(只有管理员可以使用此命令)
# chown USERNAME file,... 将file的属主修改为username
-R: 修改目录及其内部文件的属主
--reference=/path/to/somefile file,... 把file和file后面的文件的属主设定的和/path/to/somefile的属主属组一样
chown USERNAME:GRPNAME file,... 对文件file同时改变 属主:属组 支持-R操作 eg: ]# chown -R zm:zm mydir
chown :GRPNAME file,... 对文件file只改变 :属组
chown USERNAME.GRPNAME file,... 等同于上面
# chgrp GRPNAME file,... 修改属组
-R
--reference=/path/to/somefile file,...
chmod: 修改文件的权限
修改三类用户的权限:
chmod MODE file,...
-R
--reference=/path/to/somefile file,...
eg: chmod 755 /tmp/abc
rwxr-x---
其中, rwx的顺序是固定的,谁在前谁在中,谁在后是固定的, ugo也是固定的,用户,组,其他人
修改某类用户或某些类用户权限:
u,g,o,a
chmod 用户类别=MODE file,...
eg: chmod u=rwx /tmp/abc
chmod g=rw- /tmp/abc
chmod o=rwx /tmp/abc
chmod u=7 /tmp/abc
chmod g=rx,o=w /tmp/abc
chmod g,o=w /tmp/abc
chmod -R go= /home/test 表示给组和其他人没有任何权限
修改某类用户的某位或某些位权限:
u,g,o,a 其中a表示all,修改所有权限
chmod 用户类别+|-MODE file,...
eg:
chmod u+x /tmp/abc 表示将用户权限增加x(可执行)
chmod u+x,g-w /tmp/abc
chmod +x /tmp/abc 表示将所有角色都增加x权限