Linux用户权限

权限:r, w, x

文件:
r:可读,可以使用类似cat等命令查看文件内容;
w:可写,可以编辑或删除此文件;
x: 可执行,eXacutable,可以命令提示符下当作命令提交给内核运行;

目录:
r: 可以对此目录执行ls以列出内部的所有文件;
w: 可以在此目录创建文件;
x: 可以使用cd切换进此目录,也可以使用ls -l查看内部文件的详细信息;(一般目录都要有执行权限)

rwx: 
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

1.机算计如何将用户名转换成ID号?
通过查找内部的数据库解析(转换)成用户的ID号,名称解析。 
用户:UID(User Identifier) /etc/passwd 里面存储了每个用户对应的ID号
用户组:GID(Group Identifier)/etc/group 存储组的ID号
/etc/passwd除了存储了用户ID号还存储了各种用户信息,但是密码不存在这里面。
所以用户密码存在其他的文件中
影子口令:
用户: /etc/shadow
用户组: /etc/gshadow


2.用户类别:

管理员:0
普通用户: 1 ~65535
        系统用户:1~499
        普通用户:500~60000

什么是系统用户?
负责运行进程的用户

用户组相当于用户的一个容器,所以一个用户可能有多个组。
用户组类别:
私有组:创建用户时,如果没有为其指定所属的组,系统会自动为其创建一个与用户名同名的组
基本组:用户的默认组
附加组,额外组:默认组以外的其它组

进程:一段程序的执行过程,每个进程也有属主和属组。进程执行的时候机算计也会识别他的属主,属组。比如:
进程:tom tom
对象:rwxrw-r-- jerry tom a.txt
tom这个用户对a.txt进行访问,系统先会看这个进程的属主是否相同,如果相同则执行对象属主的权限,如果不同查看进程的属主是否属于对象的属组,相同则执行属组的权限,不同则执行其他组的权限。


passwd命令文档

/etc/passwd 分隔符为“:”
可以用cat /etc/passwd打开查看
account: 登录名
password: 密码占位符,真正的密码在/etc/shadow里面
UID:
GID:基本组ID
comment: 注释
HOME DIR:家目录
SHELL:用户的默认shell

/etc/shadow 分隔符为“:”
可以用cat /etc/shadow打开查看
1.login name(account): 登录名
2.encrypted password: 加密的密码
3.从1970年1.1日起到上次修改密码时的天数
4.密码最短使用天数(密码不可被更改的天数)
5.密码最长使用期限(密码需要重新更改的天数,99999为不强制)
6.密码需要修改前的警告天数
7.密码过期后的宽限天数
8.账号失效日期
9.保留

加密方法(简单说明)
对称加密:加密和解密使用同一个密码
公钥加密:每个密码都成对儿出现,一个为私钥(secret key),一个为公钥(public key)
单向加密,散列加密:提取数据特征码,常用于数据完整性校验
1、雪崩效应,蝴蝶效应(初始条件的微小改变,将会引起结果的巨大改变)防破解
2、定长输出
MD5:Message Digest, 128位定长输出
SHA1:Secure Hash Algorithm, 160位定长输出


用户管理:
useradd, userdel, usermod, passwd, chsh, chfn, finger, id, chage

组管理:
groupadd, groupdel, groupmod, gpasswd

权限管理:
chown, chgrp, chmod, umask

相关文件
/etc/passwd:
用户名:密码:UID:GID:注释:家目录:默认SHELL

/etc/group:
组名:密码:GID:以此组为其附加组的用户列表

/etc/shadow:
用户名:密码:最近一次修改密码的时间:最短使用期限:最长使用期限:警告时间:非活动时间:过期时间:


  • useradd 新增一个用户
    新增用户会自动定义一些属性在/etc/default/useradd下定义了默认属性
    在管理员下,可以用passwd加用户名改变账户的密码。
    useradd [options] USERNAME 
    -u UID 比如:useradd -u 1000 user1
    -g GID(基本组,组必须存在)useradd -g mygroup user2
    -G GID,... (附加组,可以有多个但必须得存在)
    -c "COMMENT" (指定其注释信息)
    -d /path/to/directory(指定家目录,后面加某个目录即可)
    -s SHELL (指定所用的shell,后面加次shell的路径,在/etc/shells里面显示了当前系统支持的shell)
    -m(强制为用户创建家目录) 
    -k(通常与-m一起使用)
    -M(不给目录创建家目录)
    -r: 添加系统用户(系统用户基本上不能登陆而且没有根目录)

  • userdel:删除用户
    userdel [option] USERNAME
    -r: 同时删除用户的家目录

  • id:查看用户的帐号属性信息
    -u:只看UID
    -g:只看GID
    -G:查看所有组
    -n:显示名称,通常与上面三个一起用

  • finger: 查看用户帐号信息
    finger USERNAME

修改用户帐号属性:

  • usermod
    -u UID 
    -g GID
    -a -G GID:不使用-a选项,会覆盖此前的附加组;
    -c
    -d -m:
    -s
    -l:修改username
    -L:锁定帐号
    -U:解锁帐号
  • chsh:专门用来该用户的默认shell(changeshell)
  • chfn:修改用户的finger信息即注释信息(changefinger)

  • 密码管理:
  • passwd [USERNAME]
    --stdin(standard in)从标准输入读入用户密码
    比如:echo "redhat" | passwd --stdin user1
    将用户user1的密码改为redhat
    -l :锁定用户账号
    -u:解锁用户账号
    -d: 删除用户密码
    还有许多选项自己man去看
    对于普通用户来说只能改变自己的密码
    对于管理员来说可以修改其他用户的密码

  • pwck:检查用户帐号完整性(passwd check)

  • chage(change age)修改用户时间
    -d: 最近一次的修改时间
    -E: 过期时间
    -I:非活动时间
    -m: 最短使用期限
    -M: 最长使用期限
    -W: 警告时间

组管理:
创建组:groupadd

  • groupadd:
    -g:指定GID
    -r:添加一个系统用户

  • groupmod:修改组的选项
    -g:修改GID
    -n:修改groupname

  • groupdel:删除组

  • gpasswd:给组加密码

  • newgrp:切换(登陆)用户的基本组(可以用exit退出)

权限管理
可读,可写,可执行
对三类用户都定义了权限
u: 属主
g: 属组
o: 其它用户

如何改变文件相关权限:

  • chown:change owner 改变文件属主(只有管理员才有权限)
    #chown USERNAME FILE,......(将这些文件的属主改为这个用户)
    当你改变目录(目录也是个文件)的属主时,目录里面的文件属主是不会改变的。
    -R:修改目录及其内部文件的属主
    --reference=/path/to/somefile file,......(把一个文件作为参考,将其他文件的属主改为这个参考文件的属主)
    chown USERNAME.GRPNAME file,...(同时该变文件属主和属组)
    chown USERNAME:GRPNAME file,...

  • chgrp GRPNAME file,...
    -R
    --reference=/path/to/somefile file,...

  • chmod:修改文件的权限(修改三类用户权限)
    1.修改三类用户的权限:
    chmod MODE file,...
    -R
    --reference=/path/to/somefile file,...
    此处的MODE为三类权限的缩写,如( rwxr-x---缩写750),如果给的位数不够,会在前面补0。
    2.修改某类用户或某些类用户权限:
    u(user),g(group),o(other),a(all)
    chmod 用户类别=MODE file,...
    如:chmod u=rwx /tmp/abc,不支持 u=7这种缩写!支持u=rx这种省略格 式,输出就为r-x。同时也可以同时定义两类用户权限:chmod u=rw,g=rw /tmp/abc或者chmod ug=rw /tmp/abc。如果chmod o= /tmp/abc,后面不加权限的话,则显示为---。
    3.修改某类用户的某位或某些位权限:
    u,g,o,a
    chmod 用户类别 + 或 - MODE file,...
    如:chmod u-x /tmp/abc属主的执行权限就没了。chmod +x /tmp/abc不加用户类型就可以将三类用户的权限都加上执行。chmod u-x,g+x /tmp/abc

文件默认权限:
再创建一个文件或目录的时候,系统会给其指定默认权限。
文件的默认权限可以通过umask来查看。
umask不带任何参数可以显示用户的umask
666-umask
777-umask

umask 023 将umask设定为023
文件:666-023=644 (文件默认不能具有执行权限,如果算得的结果中有执行权限,则将其权限加1)
目录:777-023=754

你可能感兴趣的:(Linux用户权限)