Linux中的用户类别以及用户的管理和权限修改
用户类别
管理员 0
普通用户 1-65535,2^16个
系统用户 199-999,专门用来运行后台进程和服务的用户,不允许登陆系统
一般用户 1000-60000,后面的很少使用
用户组类别
按照用户类别的分法分为管理员组合普通组。
常用分法
基本组,用户的默认组 redhat redhat bluefly
附加组 额外组,默认组以外的其他组
私有组 创建用户时,如果没有为其指定所属组,系统会自动为其创建一个同名的私有组
主组
GID为GroupId,即组ID,用来标识用户组的唯一标识符
UID为UserId,即用户ID,用来标识每个用户的唯一标示符
扩展:
用户组:将同一类用户设置为同一个组,如可将所有的系统管理员设置为admin组,便于分配权限,将某些重要的文件设置为所有admin组用户可以读写,这样可以进行权限分配。
每个用户都有一个唯一的用户id,每个用户组都有一个唯一的组id
用户的UID大于500的都是非系统账号,500以下的都为系统保留的账号,比如root账号,至高权限的账号的UID为0,我们创建用户的时候默认的账号的UID都是大于500,如果你要指定账号的UID可以使用-u这个参数来指定。其它没什么大的意义。
用户管理
useradd
-u UID 指定UID
-g GID 指定基本组
-G GID1,GID2,… 指定附加组
-c “注释信息” 指定用户注释信息
-d /path/to/dir/ 指定某个目录为用户家目录(一定事先不能存在的)
-s /shell 指定用户使用的shell
相关文件
/etc/skel
用户家目录中的默认隐藏配置文件
/etc/login.defs
用户的相关默认属性
passwd 修改用户密码
–stdin
echo “redhat” | passwd --stdin USERNAME
-n 指定密码最短使用期限
-x 指定密码最长使用期限
-w 指定警告时间
-d 删除用户密码,在redhat中,空密码用户禁止登陆
密码和PAM相关
useradd adduser是这个命令的别名
useradd USERNAME
添加用户就是在/etc/passwd、/etc/shadow、/etc/group中添加用户相关信息
默认属性都来自什么地方呢?来自/etc/default/useradd
/etc/default/useradd
文件格式
GROUP=100 组
HOME=/home 家目录
INACTIVE=-1 密码宽限期限
EXPIRE= 账户过期期限
SHELL=/bin/bash 指定shell
SKEL=/etc/skel 默认文件
CREATE_MAIL_SPOOL=yes 邮件配置
userdel
userdel USERNAME
-r 删除用户时删除用户家目录和用户的邮箱
id 查看用户的ID信息,选项同useradd
-u 显示UID
-G 显示附加GID
-g 显示GID
usermod 修改用户相关信息,选项同useradd
-u 修改UID
-g 修改基本组,基本组必须事先存在
-G 这个选项会覆盖之前的附加组,和-a选项配合使用
usermod -a -G 追加附加组
-c 修改用户注释信息
-s 修改用户shell
-l 修改登陆名
chsh -s修改用户shell
pwck 检查用户账号完整性,并进行报告
组管理
groupadd 添加一个组
-g GID
-r 添加系统组
groupdel 删除一个组
groupmod 修改一个组
-g GID
-n GRPNAME 修改组名
gpasswd 修改组密码
newgrp 登陆一个新组
使用exit退出新组
用户 UID /etc/passwd
组 GID /etc/group
影子口令
用户 /etc/shadow
组 /etc/gshadow
/etc/passwd 冒号隔开的七个字段
account 用户名
password 密码,x为密码占位符,目标为/etc/shadow第二个字段
UID 用户ID
GID 基本组ID,额外组信息在/etc/group文件中
CECOS 用户基本信息
HOME DIR 用户家目录,系统用户不允许登陆
shell 用户的默认shell,/etc/shells保存了所有的合法shell
/etc/shadow 冒号隔开的九个字段
account 用户名
password 加密后的密码,格式为
???$*
!!或者* 账户锁定 salt
最后一次修改时间 从1970年1月1日到最后一次密码改变的时间所经过的天数
密码最短使用期限 为0表示不限制
密码最长使用期限 密码使用多长时间之后必须要改密码,99999表示可不更改
密码过期警告时间 密码过期前多少天进行警告,提示用户改密码,但是不锁定用户
密码过期宽限期限 密码过期后必须改密码的时间,如果还没改,锁定用户,就只能找网管了
账号过期精确时间 如果为99999,意味着永不过期
保留字段
/etc/group
文件格式为:
组名:组密码:GID:以该组作为额外组的用户名,以逗号为分隔符
/etc/gshadow
umask 查看权限掩码,文件默认权限为666,目录默认权限为777
umask 权限掩码 更改权限掩码
chmod 改变文件或者目录的权限
u 所属用户
g 所属组
o 其他
a 所有人
r== 4
w== 2
x==1
增加权限 +
取消权限 -
指定权限位 rwx == 777
chown 改变文件或者目录的所属用户和所属组
chown USERNAME:GROUPNAME FILENAME -R
安全上下文
secure context
进程访问文件时,先查看用户权限,如果不是,再查看进程的发起用户是不是目标文件所属组成员
系统任何进程开始都保存为一个文件,由用户执行可执行程序后成为进程,而能否执行,取决于用户对可执行文件有没有权限,而程序一旦执行后转为进程,那么进程就与之前的可执行文件无关,进程的权限为进程发起者的权限,而进程能否访问某个文件,则取决于发起者是否有权限访问目标文件,而这一切就叫做安全上下文
特殊权限
SUID: 运行程序时,进程的属主是程序文件自身的权限,而不是进程发起者
chmod u[+|-]s FILENAME 如果文件原来有执行权限就显示为s,反之显示S
SGID: 运行程序时,进程的属组是程序文件自身的属组,而不是进程发起者的基本组
chmod g[+|-]s DIRNAME
Sticky:在一个公共目录,每个用户都可以创建文件,删除自己的文件,但不能删除别人的文件 对目录有效
chmod o[+|-]t DIRNAME
扩展权限
setfacl Filesystem Access Control list
getfacl
-m 设定
u: 用户
g: 组
setfacl -m u:UID:perm
-x 取消
u: 用户
g: 组
lsattr 额外属性
隐藏属性
chattr
文件系统
# df -h
# free -m
# fdisk /dev/sda
p
n
e
n
+5G
p
w
# partprobe
# fdisk -l
# mkfs.ext4 /dev/sda5
# mount /dev/sda5 /mnt
# touch /mnt/hehe
# ll /mnt
hehe
# umount /dev/sda5 umount /mnt
# blkid
# vim /etc/fstab
UUID=FKJLASJDFLJALSDJFLAJSDF /mnt ext4 defaults 0 0
:wq
# reboot
# ll /mnt
hehe
挂载LVM
mount /dev/sr0 /mnt
mount 需要挂载的设备或者文件系统 挂载的目标
/dev/sda
sata接口的第一块硬盘
/dev/sda
/dev/sda1
/dev/sda2
/dev/sdb
/dev/sdb1
/dev/sdb2
/dev/sdc
/dev/sr0
/dev/cdrom
软件安装
rpm
-ivh 安装
-e 删除
-qa 查询所有安装的软件包 ,一般在后面跟上管道符使用grep来过滤关键字
-ql 查看软件包释放的文件列表
-qf 查看某个文件是哪个软件包释放的
rpm redhat package manager
1、 手工添加用户和组
[root@localhost ~]# vim /etc/passwd
[root@localhost ~]# vim /etc/group
[root@localhost ~]# vim /etc/passwd
[root@localhost ~]# vim /etc/group
[root@localhost ~]# mkdir /home/fengg/
[root@localhost ~]# cd /home/
[root@localhost home]# ll
[root@localhost home]# chown fengg:fengg fengg/
[root@localhost home]# chmod 700 fengg/
[root@localhost home]# ll
[root@localhost home]# ll -a /etc/skel/
[root@localhost home]# cp -r /etc/skel/.bash* /home/fengg
[root@localhost home]# su – fengg
2、扩展权限的添加删除
[root@localhost ~]# vim /etc/group
[root@localhost ~]# cd /data/
[root@localhost data]# rm -rf *
[root@localhost data]# touch shuzibiao
[root@localhost data]# vim /etc/passwd
[root@localhost data]# useradd maomao -G feng
[root@localhost data]# id maomao
[root@localhost data]# chgrp feng shuzibiao
[root@localhost data]# chmod 740 shuzibiao
[root@localhost data]# vim shuzibiao
[root@localhost data]# su - maomao
[maomao@localhost ~]$ cd /data/
[maomao@localhost data]$ ll
[maomao@localhost data]$ cat shuzibiao
[maomao@localhost data]$ exit
[feng@localhost data]$ setfacl -m u:feng:- shuzibiao
[root@localhost data]# setfacl -m u:feng:- shuzibiao
[root@localhost data]# getfacl shuzibiao
[root@localhost data]# su - feng
[feng@localhost ~]$ cd /data
[feng@localhost data]$ cat shuzibiao
[root@localhost data]# setfacl -m u:feng:r shuzibiao
[root@localhost data]# setfacl -m g:redhat:- shuzibiao
[root@localhost data]# getfacl shuzibiao
[root@localhost data]# setfacl -x u:feng shuzibiao
[root@localhost data]# setfacl -x g:redhat shuzibiao
[root@localhost data]# getfacl shuzibiao
[root@localhost data]#
3、分区格式化和挂载
[root@localhost data]# ll /dev/sd*
[root@localhost data]# fdisk /dev/sdb
Command (m for help): n
Select (default p): p
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): +5G
Command (m for help): p
Command (m for help): wp
[root@localhost data]# ll /dev/sd*
[root@localhost ~]# mkfs.xfs /dev/sdb1
[root@localhost ~]# mount /dev/sdb1 /data/
[root@localhost ~]# vim /etc/fstab
[root@localhost ~]# mount -a
[root@localhost ~]# umount /data
[root@localhost ~]# vim /etc/fstab
[root@localhost ~]# df -h
[root@localhost ~]# mount -a
[root@localhost ~]# df -h
[root@localhost ~]# vim /etc/fstab
[root@localhost ~]# blkid