3_4 Linux用户及权限详解
用户、组、权限
安全上下文(security 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
用户:UID(id标识用户)、/etc/passwd(用户信息库,存储用户对应id)
组:GID、/etc/group
解析:名称解析
影子口令:
用户:/etc/shadow (存放密码)
组:/etc/gshadow
用户类别:
管理员:id为0
普通用户:1-65535
系统用户:1-499,用来运行后台进程,不允许登录系统
一般用户:500-60000
用户类别:
管理员组:
普通组:
系统组:
一般组:
用户类别(分法2):
基本组:
私有组:创建用户时,如果没有为其指定所属的组,系统会自动为其创建一个与用户名同名的组
附加组、额外组:默认组以外的其它组
查看passwd文件:
cat /etc/passwd
用whatis passwd可以查看passwd在man文档有几个章节
七个字段:
一:account,登录名
二:password,密码占位符
三:UID
四:GID
五:comment,用户注释信息
六:HOME DIR,家目录
七:shell,用户的默认shell
cat /etc/shells:查看用户合法shell
cat /etc/shadow:查看shadow文件,可以用man 5 shadow
一:登录名
二:encrypted password:加密的密码。。两个叹号表示锁定,不能登录。。写入文件前会加入随机生成的杂质,再生成密文。防止密码系统猜到密码
三:密码上次修改时间
四:密码最少使用时间
五:密码最长使用期限
六:还有多久过期
七:密码过期延长时间,不改不让使用。这几天没登陆,需要用管理员解锁
八:密码有效天数。过期无法登录
九:保留字段
加密方法:
对称加密:加密和解密使用同一个密码
公钥加密:每个密码都成对出现,一个为私钥(secret key),一个为公钥(public key)。。时间比对称慢三个数量级以上,多用于密钥交换
单向加密,散列加密:也叫指纹加密,提取数据特征码(每个数据有个唯一的特征码,类似人的指纹,不可逆)。常用于数据完整性校验
1、雪崩效应(初始输入数据一点点改变,特征码结果变化很大)
2、定长输出
MD5:message Digest(5是版本号),128位定长输出
SHA1:Secure Hash Algorithm,160位定长输出。还有SHA1 256和512位定长输出
添加用户:useradd(用which useradd)。adduser,软连接到useradd,本质上一样
useradd USERNAME
管理员改其它用户密码:
passwd USERNAME
为什么添加用户会主动添加一些属性:
cd /etc/default 然后cat useradd
cat /etc/group
添加组:groupadd GROUPNAME
04_01用户管理命令详解
用户管理命令:
useradd、userdel、usermod、passwd、chsh、chfn、finger、id、chage
useradd [options] USERNAME
-u UID(大于等于500,其它用户未使用,默认/etc/passwd里最后一个用户id号加一。。一般情况下与组id相同))
-g GID(基本组。可用组名或者组id,指定前组要先存在)
-G ,...(附加组)
-c “COMMENT” 注释信息
-d /path/to/somedirectory 指定家目录 如:useradd -c “Tony Blare” -d /home/blare user4
-s 指定shell(目录。。。此shell一定存在于/etc/shells文件里)
-m -k 强行创建家目录并复制skel文件
-M 不给用户创建家目录
-r:添加系统用户
/etc/login.defs 设置用户信息
/etc/shells:指定了当前系统可用的安全shell
环境变量:
PATH
HISTSIZE
SHELL
查看此用户用什么shell:echo $SHELL
userdel
userdel [options] USERNAME (默认不删除家目录)
-r 同时删除用户的家目录
id 查看用户的账号属性信息
id [options] [USERNAME] 不加用户,默认当前用户
-u
-g
-G
-n
finger 查看用户账号信息
finger [options] USERNAME
修改用户账号信息:
usermod
-u 改用户id
-g GID 改基本组
-G 改附加组。会覆盖之前的附加组
-a -G 一起使用,追加附加组
-c 注释信息
-d 改家目录。改后无法访问之前家目录中的文件
-d -m 移动此前文件至新家目录中
-s 改shell
-l 改用户名
-L 锁定账号
-U 解锁账号
chsh 改用户默认shell
chsh USERNAME
chfn 改注释信息
chfn USERNAME
密码管理
passwd [USERNAME] 管理员才可指定用户
--stdin 从标准输入读取 如echo “Redhat” | passwd user --stdin
-l 锁定账号
-u 解锁账号
-d 删除密码。(红帽禁止空密码用户登录)
-n 密码最短使用期限 -x -w -i
pwck 检查用户账号完整性
chage
-d 最近一次的修改时间
-E 过期时间
-I 非活动时间
-m 最短使用期限
-M 最长使用期限
-w 警告时间
组管理命令:
groupadd、groupdel、groupmod、gpasswd
groupadd 创建组
-d 指定id。默认上一个组往下加一
-r 添加为系统组
groupmod 改组信息
-g GID
-n GRPNAME改组名
groupdel 删除组
gpasswd 给组加密码
newgrp 临时登录更改用户基本组。可用exit退出
加用户 可直接改passwd shadow group三个文件
权限管理:
chown、chgrp、chmod、umask
04_02权限及权限管理
权限管理
r:读
w:写
x:可执行
三类用户:
u:属主
g: 属组
o: 其它用户
chown:改变文件属主。(只有管理员可以使用此命令)
# chown USERNAME file,...
-R 修改目录及其内部文件的属主
--reference=/path/to/somefile [-R] file,... 参考。把后面的文件的属主属组都 改为和第一个一样
# chown [USERNAME] :GRPNAME 可用此命令同时改属主数组。不加用户时可只改属组
chgrp:
#chgrp GRPNAME file,...
-R
--reference=/path/to/somefile
chmod 修改文件的权限
修改三类用户观的权限:
chmod MODE file,... 三位数字,少了默认前面补0
-R 修改目录及其内部文件的权限
--reference=/path/to/somefile [-R]
修改某类用户或某些类用户权限:
u,g,o,a(all)
chmod 用户类别=MODE chmod g=rw[-] 没给出的可用省略
chmod go=r
chmod g=rx,o= file
修改某类用户某位或某些位权限:
u,g,o,a(all)
chmod 用户类别+|- MODE file,...
chmod u+x,g-x file
chmod [a]+wx file
练习:
1、新建一个没有家目录的用户openstack
2、复制/etc/skel为/home/openstack
3、改变/home/openstack及其内部文件的属主属组均为openstack
4、/home/openstack及其内部文件,属组和其它用户没有任何访问权限
su - openstack
ls -l /etc/shadow
权限400 :
权限设置对管理员没有用
普通用户为啥能改密码?ls -l `which passwd` 属主有个s权限
bc:计算器 q退出
scal=2:保留两位小数
openssl passwd 可用生成加密密码
whatis passwd 查看有sslpasswd
man sslpasswd
openssl passwd -1(这是一) -salt '12345678’(八位)
umask :遮罩码(一般用户默认002,root022)
创建文件:666-umask 默认不能有执行权限,如果算得结果有执行权限,则将其权限加1:
创建目录 777-umask
站在用户登录的加偶来说,shell的类型:
登录式shell:
正常通过某终端登录
su - USERNAME
su -l USERNAME
非登录式shell:
su USERNAME
图形终端下打开命令窗口
自动执行的shell脚本
bash的配置文件:
全局配置
/etc/profile,/etc/profile.d/*.sh,/etc/bashrc
个人配置
~/.bash_profile,~/.bashrc
profile类的文件:
设定环境变量(个人和全局冲突时,以个人为准)
运行命令或脚本
bashrc类的文件
设定本地变量
定义命令别名
登录式shell如何读取配置文件?
/etc/profile ——> /etc/profile.d/*.sh --> ~/.bash_profile --> ~/.bashrc--> /etc/bashrc
非登录式shell如何读取配置文件?
~/.bashrc--> /etc/bashrc --> /etc/profile.d/*.sh