一、用户管理
1.linux系统中将用户分为两大类权限
一种分法:一种是root管理员,一种是普通用户。
另外一种分类是:系统账号和虚拟账号。
2.系统账号/etc/passwd(最开始用来记录用户名和密码等信息,出于安全考虑,最后将密码放到shadow中。)
passwd文件格式
每一行是一个用户的信息,其中用:分割
第一列——用户名
第二列——密码,如果是x,表示密码存储在shadow文件中。
第三列——用户标识号,UID。一般此编号为唯一
第四列——所属组标识号,GID。
第五列——用户的详细信息。电话、邮件。现在基本没什么用了,原来有用过做为通讯录。
第六列——记录用户的家用户所在的目录
第七列——用户登录后所使用的shell程序
最开始都是在passwd中,由于权限,所有用户都能获取到passwd中,为了安全,现在用到了shadow。现在用于存放用户的登录名和一些基本信息
/etc/shadow(遮蔽技术,记录账号对应的密码,以及密码的相关设置)
shadow文件格式
每一行对应的passwd中的用户,用:分割列
第一列——对应passwd中的用户名
第二列——加密后的密码 *和!表示没有相应的密码
第三列——从1970.1.1开始到最后一次修改密码,中间的天数 现在显示的时间为装系统那天距离1970.1.1的天数
第四列——在多久后可以修改密码 0表示随时可以修改密码
第五列——多少天后必须修改密码 9999表示可以一直不用修改
第六列——在密码失效多少天之前进行警告 7表示的是提前7天可以警告
第七列——多少天后密码过期,账号禁用 空着的表示可以一直使用下去
第八列——具体日期禁用账号到1970.1.1之间的天数 同上
第九列——保留
/etc/shadow
第五类手册是现实配置文件的。
man 5 passwd
man 5 shadow
3.增加用户命令
useradd 用户名
修改密码
passwd 用户名
增加一个新用户后,必修为用户指定密码,否则没有密码的用户是不能登录系统的。
此处的密码要符合密码规范,要英文字母跟数字混合等的。由于当前是在root用户在设置密码,这里可以不用遵守密码规范,但是当在普通用户模式下在设置密码时必须遵守。
root可以随便设置密码,普通用户只可以给自己设置
4.whoami 查询当前用户的身份
在普通用户下往别的切换需要密码
一般新建用户的UID从500之后开始增加。
用户组配置文件
/etc/group
group文件格式
第一列——组名
第二列——密码位
第三列——组标识号
第四列——组成员列表
man 5 group
/etc/gshadow
gshadow文件格式
第一列——组名
第二列——加密密码、
第三列——管理员
第四列——成员列表
man 5 gshadow
useradd michael 添加一个新用户后会对四个文件都产生影响
5.man useradd 中文帮助
useradd lucy -g root -M(不创建家目录) -d(指定家目录所在的位置)/tmp/lucy -u 789 -m (创建家目录)
6.创建一个组
man groupadd
groupadd g11004
useradd nicolasman -g g11004
用户管理命令
useradd 增加
usermod 修改
userdel 删除
组管理
groupadd 增加组
groupmod 修改组信息
groupdel 删除组
练习:
创建用户组develop
创建用户组manage
创建tom,并指定tom初始化组为develop组,指定tom的家目录是/tmp/tom
创建用户lucy,并指定lucy初始化组为develop组,指定lucy的UID是1024,不创建家目录
修改tom用户,将tom的组更改为manage组。并更改家目录到/home/tom下。
更改组名develop为devel组
切换身份到tom用户后,再切换到lucy
因为没有家目录,所以没有配置,因此显示最原始的bash版本。
userdel -r 用户名
连家目录一起删掉
ls -ld /tmp/tom 能显示出来
ls /home/lucy 显示不出来,没有创建家目录
gpasswd
root用户可以指定某个组的管理员及成员。使用gpasswd的-A选项和-M选项。被指定成组管理员的用户可以对组进行密码设置。这样可以防止其他组用户,通过newgrp命令临时切换到此组中。(A是赋予管理员权限,M只是向组中添加一个用户)
gpasswd -A tom -M lucy manage
使用newgrp命令
newgrp 组名 临时更改自己的组到其他的组,但是需要组密码
groups 查看自己属于哪些组
sudo 临时切换
su命令用于身份切换。退出时使用exit。如果需要临时,或者只有一条命令使用管理权限的话,可以使用sudo命令完成。
在使用sudo之前,需要配置相应的/etc/sudoers
一般在权限要求较高的系统中,sudo用于给指定用户提供额外特权。
sodu可以配置用户只能使用哪些命令,包括命令只能使用哪些权限。
vi /etc/sudoers
root ALL=(ALL) ALL
用户名 主机 身份 命令
root 用户名 ALL 指定主机(ALL)所有用户 ALL 所有命令
使用sudo
sudo 命令 选项 参数···
需要当前用户密码
打开配置文件的2种方法:
vim /etc/sudoers 修改配置文件可以通过vi修改
visudo 或者是通过专用的visudo命令来修改,可以使用参数(参数查看man sudo)
sudo -u tom /bin/mkdir /tmp/aaa 用tom用户在/tmp下建立一个名为aaa的目录
sudo + 命令即可 会提示输入密码
tom ALL =(ALL) /sbin/ifconfig eth0 down
只允许tom用户使用此命令的指定参数,其他命令及参数都无法执行
=================================================
文件权限
ls -l 可以查看文件的信息,其中显示了文件的权限
除了文件类型外,一共9位,每3位对应一个功能
第一组 对应 所有者操作权限
第二组 对应 组用户操作权限
第三组 对应 其他人操作权限
r 4 read 读取
w 2 write 写入
x 1 exec 执行 目录的x表示可以进入
- 0 无
rw-rw-rr 所有者读写,组成员读写,其他人只读 644
rw-r--r-- 644
rwxr-xr-x 755
chmod 更改文件权限位
chmod 755 install.log
a =所有组
u =用户
g =组
o =其他
+ =增加权限
- =去除权限
= =指定权限
chmod a+x install.log 表示将install.log文件的权限位,所有的x都打开
chmod u-x install.log 将用户位的执行权限去掉
chmod a=rx install.log 所有三组都指定为rx权限
chown更改文件所有者
chown nicolas.manage install.log
将文件的所有者改为nicolas,并将组改为manage中间用.或:分割
.前表示是属主,.后表示的是属组
chown nicolas install.log 更改install.log的属主是nicolas
chgrp 更改文件所有组
chgrp manage install.log
chmod、chown、chgrp都有-R选项,可以递归修改目录下的所有文件。
练习:
将一个目录的权限设置成tom用户可以读写进入,develop组可以读取和进入,其他人无权限。