linux基础笔记-4-用户管理

8.用户管理

8.1 用户

用户组,用于方便地指派权限。

用户和用户组都可看作标识符。进程可看作用户的代理

每个用户都有uid,每个组都有gid。
uid存储在/etc/passwd,gid存储在/etc/group。

计算机对用户名称进行解析转换为uid

用户密码存储在/etc/shadow里,即影子口令
组也有密码,存储在/etc/gshadow

3个重要文件:/etc/passwd,/etc/gshadow,/etc/group。

添加用户实际操作这三个文件

用户类别:管理员(id为0)和普通用户(1-65536)
普通用户又分为系统用户(1-499)和一般用户(500-65535)。
{ 管 理 员 i d : 0 普 通 用 户 i d : 1 − 65536 { 系 统 用 户 i d : 1 − 499 一 般 用 户 i d : 500 − 65535 \begin{cases}管理员 & id:0 \\普通用户 & id:1-65536 \begin{cases}系统用户 & id:1-499 \\一般用户 & id:500-65535 \end{cases} \end{cases}\\ id0id:165536{id:1499id:50065535
系统用户可运行后台进程,不需要(或者说不允许)登录系统。

用户组分为管理员组和普通组;普通组分为系统组和一般组。
用户组也可以分为基本组和私有组。

  • 私有组:创建用户时没有指定属组则自动创建一个与用户同名的组。
  • 基本组:用户的默认组。
  • 附加组,或者叫额外组:默认组以外的其它组。

举例:
一个进程,用户为foo,属组为foo。
访问对象a.txt:764 属主bar,属组foo,
这里,用户与属主不一样,用户foo属于对象属组,以权限6访问。

8.2 权限

关于权限rwx:

  • r:可以对目录执行ls
  • w:可以创建、编辑文件
  • x:可执行;可以cd进入目录,也可以ls -l查看详细信息。

一般目录必须有x权限,文件一般不建议有x权限。

三组用户使用能力:所有者,属组,其他用户。简称ugo(a),a代表all。

安全上下文(secure context),暂时简单理解为访问控制属性。

/etc/shadow权限为400;

ls -l `which passwd`,权限为755,u=rws,特殊权限s使得普通用户可以修改密码。

umask

touch生成文件的权限由umask遮罩码决定,

  • 文件权限=666-umask
  • 目录权限=777-umask

umask xxx可以设置码值
文件默认没有执行权限,若有,则权限+1.
常用umask:027

8.3 passwd

whatis passwd查看

man 5 passwd显示字段描述

用户名:加密密码:uid:gid:注释:家目录:默认shell

关于这里的shell,/etc/shells保存了所有合法shell。

8.4 shadow

man 5 shadow查看字段

$x$y$z
美元符分隔,x为加密方式,y为salt,z为密码。

例如,x为1时,md5加密,md5sum命令可计算该值。

加密

有三种:

  • 对称
  • 公钥
  • 单向(散列/指纹)

单向加密主要的有:md5(message digest),sha(secure hash algorithm)

8.5 管理命令

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

组管理命令
groupadd,groupdel,groupmod,gpasswd

权限管理命令
chown,chgrp,chmod,umask

用户管理

useradd [option] USERNAME
	-u #uid
	-g #gid基本组(事先存在)
	-G #gid,gid,... 指定附加组,可有多个
	-c #"COMMENT"
	-d #指定家目录
	-s #指定shell路径(/etc/shells中的),shell为nologin时无法登录,shell可用echo $SHELL查看
	-m #创建家目录,详情查看man
	-M #不创建家目录,su后将没有目录环境
	-r #添加系统用户,无家目录,单独使用
	
userdel [option] USERNAME
	#默认不删除家目录
	-r #同时删除家目录

id #查看账户属性信息
	-u -g -G
	-n #可与以上3个搭配
	
finger USERNAME #查看用户账号信息

usermod #修改用户属性
	-u #改uid
	-g #gid基本组(事先存在)
	-G #附加组;一般搭配-a为追加,不覆盖原来的附加组
	-c #改变注释
	-d #改变家目录;一般搭配-m同时移动原来家目录的文件。
	-l #改变用户名
	-L #锁定用户,类似禁用,-U解锁;
	#其它 -e -f 
	
chsh USERNAME  #改变shell

chfn(finger)  #修改注释信息

passwd #改密码
#管理员可修改其他用户密码
	--stdin  eg. echo "abc" | passwd --stdin USERNAME
	-l -u  #锁定,解锁
	-d #删除密码

pwck #检查密码文件完整性

组管理

groupadd
	-g gid
	-r #添加系统组
	
groupmod
	-g GID
	-n GRPNAME
	
groupdel

gpasswd #添加密码

newgrp #临时切换到其他组

chage  #改变密码过期信息
	-d #最近一次修改时间
	-E #过期时间
	-I #非活动时间
	-m -M #最短/长使用期限
	-W #警告时间

权限管理

chown USERNAME file
	#改变属主
	-R #对于目录中的文件,可以递归修改
	--reference=/path/file file,...  参考修改,使属主属组相同
#也可改变属组
chown USERNAME:GROUPNAME #冒号也可改为点号'.'
chown :GROUPNAME

chgrp GRPNAME file
	#也支持-R
	
chmod MOD file,...
	-R,--reference  #也支持
	#若MOD为5,则变为------r-x
chmod ug=rx file
chmod g=r,o=r file
chmod u+x,g-x file
chmod +x file  #三类用户全部+x
	

练习

1.新建没有家目录的用户foobar

useradd -M foobar

2.复制/etc/skel为/home/foobar

cp -r /etc/skel /home/foobar

3.改变/home/foobar及其内部文件的属主属组均为foobar

chown -R foobar:foobar /home/foobar
ls -ld /home/foobar查看

4./home/foobar及其内部的文件,设置属组和其它用户没有任何访问权限
chmod -R go= /home/foobar
即家目录权限700
su foobar
cd ~才会进入foobar目录

5.手动添加用户foobar(5000),基本组foobar(5000),附加组mygroup.

vim /etc/group
foobar:x:5000:
mygroup:x:5000:foobar

vim /etc/passwd 
foobar:x:5000:5000:FOOBAR:/home/foobar:/bin/bash

vim /etc/shadow
foobar::17918:0:99999:7:::

#时间天数17918可以这样计算:先date +%s得到秒数,使用计算器bc,秒数/24/60/60
#现在没有密码,只能su切换,不能登录。手动添加密码步骤如下。

openssl passwd -1 -salt 'cafebabe'生成密码
#粘贴到shadow密码字段。

cp -r /etc/skel/ /home/foobar
chown -R foobar:foobar /home/foobar
chmod go= /home/foobar/
su后id验证。

8.6 shell

对于用户,shell有两种,

  • 登录式shell:
    su - USERNAME
    su -l USER NAME
    以及通过某终端登录。
  • 非登录式shell:
    su USERNAME
    图形终端下打开命令窗口
    自动执行的shell脚本

8.7 配置文件

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

所以,类似alias等习惯操作,可以修改bashrc
可以把bash理解为脚本解释器。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值