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权限