用户身份与能力
设计Linux系统的初衷之一就是为了满足多个用户同时工作的需求,所有Linux系统必须具备很好的安全性
UID
Linux系统中的管理员就是root,这其实是错误的,Linux系统的管理员之所以是root,并不是因为它的名字叫root,而是因为该用户的身份证号码UID(user IDentification)的数字为0(UID具有唯一性)
用户身份有这些:
1.管理员UID为0 :系统的管理员用户
2.系统用户UID1-999:Linux系统为了避免因莫格服务器程序出现bug,默认服务程序会独立的系统用户负责运行
3.普通用户UID从1000开始:由管理员创建的用于日常工作的用户
|注意:UID是不能冲突的,而且管理员创建的普通用户UID是从1000开始| |
为了方便管理同一组的用户,Linux系统还引入了用户组的概念GID
useradd命令
useradd命令用于创建新的用户,格式为“user add[选项] 用户名
默认的用户家目录会存放在/home目录中,默认shell解释器为/bin/bash
请注意/sbin/nologin,它是终端解释器的一员,与bash解释器有着天壤之别,一旦用户的解释器被设置为nologin,则代表该用户不能登入到系统中
- [ ] -lzl@690:~$ sudo -i [sudo] lzl 的密码:
- [ ] root@690:~# useradd -d /home/linux -u 8888 -s /sbin/nologin 690
- [ ] root@690:~# id 690
uid=8888(690) gid=8888(690) 组=8888(690) root@690:~#
useradd命令的用户参数
-d 指定用户的家目录
-e 用户的到期时间(格式为:YYYY-MM-DD)
-u 指定该用户的默认UID
-g 指定一个初始用户基本组
-G 指定一个或多个扩展用户组
-N 不创建与用户同名的基本用户组
-s 指定用户默认的Shell解释器
groupadd命令
用于创建用户组(格式:groupadd [选项])
root@690:~# groupadd zero
usermod命令
**usermod命令用于修改用户的属性。格式usermod 选项 用户名
Linux系统中一切都是文件,因此在Linux中创建用户也就是修改配置文件的过程。用户的信息保存在/etc/passwd文件中,可以直接用于文本编译器来修改用户的参数
usermod命令中的参数及作用
-c 填写用户账户的备注信息
-d -m 参数-m与-d连用,可重新指定用户的家命令并自动旧数据转移过去
-e用户的到期时间 ,格式为YYYY-MM-DD
-g 变更所属用户组
-G变更所属扩展组
-L锁定用户禁止其登入系统
-U解锁用户,允许并登陆系统
-s更改默认终端
-u修改用户的UID
查看690的用户信息
root@690:~# id 690
uid=8888(690) gid=8888(690) 组=8888(690)
将用户690加入到root用户组中,扩展组会出现root用户组的字样,而基本组不受影响
root@690:~# id 690
uid=8888(690) gid=8888(690) 组=8888(690)
root@690:~# usermod -G root 690
root@690:~# id 690
uid=8888(690) gid=8888(690) 组=8888(690),0(root)
用-u修改690用户的UID,-g修改基本组ID,-G修改扩展组ID
root@690:~# id 690
uid=8888(690) gid=8888(690) 组=8888(690)
root@690:~# usermod -G root 690
root@690:~# id 690
uid=8888(690) gid=8888(690) 组=8888(690),0(root)
root@690:~# usermod -u 690690 690
root@690:~# id 690
uid=690690(690) gid=8888(690) 组=8888(690),0(root)
root@690:~#
passwd命令
**passwd命令用于修改用户的密码,过期时间及认证信息等,格式为:passwd 选项 用户名
普通用户只能修改自己的信息,而root用户可以修改自己的或者他人的,而且root用户修改别人的不用密码。
passwd命令的参数及作用
-l 锁定用户,禁止登陆
-u 解锁用户,允许登陆
–stdin 允许通过标准输入修改用户的密码,如”echo“NewPass" | passwd --stdin Username
-d 使该用户可用空密码登入系统
-e 强制用户在下次登入时修改密码
-S显示用户的密码是否被锁定,以及密码所采用的加密算法名称
userdel命令
userdel命令用于删除用户,格式为”userdel 选项 用户名“
-f 强制删除用户
-r 同时删除用户及用户家目录
文件权限与归属
尽管在Linux一切都是文件,但是每个文件的类型不尽相同
-:普通文件
d:目录文件
l:链接文件
b:块设备文件
c:字符设备文件
P:管道文件
文件的读,写,执行权限可以简写为r w x;可用数字 4,2,1来表示
若某个文件权限为7这代表可读,可写,可执行(4+2+1)
若权限为6,则代表可读可写(4+2)
文件特殊权限
在复杂多变的生产环境中,单纯设置文件的rwx权限是无法满足我们对安全的和灵活的需求,因此使用了SUID,SGID,SBIT的特殊权限位。
SUID
是一种对二进制程序进行设置的特殊权限,可以让二进制程序的执行者临时拥有属主权限(仅对二进制程序有效)
-root@690:~# ls -l /etc/shadow
-rw-r----- 1 root shadow 1393 3月 24 11:18 /etc/shadow
SGID
主要实现两种功能
1.让执行者临时拥有属组的权限(对拥有执行权限的二进制程序进行设置)
2.在某个目录中创建的文件自动继承目录的用户组(只可以对目录进行设置)
root@690:~# cd /tmp
root@690:/tmp# mkdir testdir
root@690:/tmp# ls -ald testdir/
drwxr-xr-x 2 root root 4096 3月 24 13:26 testdir/
root@690:/tmp# chmod -Rf 777 testdir/
root@690:/tmp# chmod -Rf g+s testdir/
root@690:/tmp# ls -ald testdir/
drwxrwsrwx 2 root root 4096 3月 24 13:26 testdir/
上面设置777权限后,所有人都可以看到,并为该目录设置了SGLD后,就可以切换至一个普通用户,然后尝试在该目录创建文件,并查看新创建的文件会不会继承新创建的文件所在的目录的所属组名称
chmod命令是一个非常实用的命令,能够用来设置文件或目录的权限
SBIT
SBIT 特殊权限可确保用户只删除自己的文件,而不能删除其他用户的文件
文件的隐藏属性
即被隐藏起来的权限,默认情况下不能直接被用户发觉
chattr命令
chattr命令用于设置文件的隐藏权限,chattr 参数 文件
i:无法对文件修改
a:仅补充内容,无法删除
S:文件变更后立即同步到硬盘
s:彻底从硬盘中删除,不可恢复
A 不在修改这个文件或目录的最后访问时间
b:不在修改i文件或目录的存取时间
D:检查压缩文件中的错误
d:使用dump命令备份时忽略本文件/目录
c:默认将文件或目录进行压缩
u:删除文件后,仍保存硬盘中,以保证日后恢复
t: 让文件系统支持尾部合并
X:可以直接访问压缩文件中的内容
lsattr命令
lsattr命令用来显示文件的隐藏权限,格式为“lsattr 参数 文件”
在Linux系统中查看隐藏权限必须用lsattr来查看,用ls看不出来
root@690:~# ls -al 690
-rw-r--r-- 1 root root 9 3月 24 16:09 690
root@690:~# lsattr 690
-------------e-- 690
root@690:~# chattr -a 690
root@690:~# lsattr 690
-------------e-- 690
文件访问控制列表
如果希望对某个指定的用户进行单独的权限控制,就需要用到文件访问控制列表(ACL)
setfacl命令
setfacl命令用于管理文件的ACL规则,格式为setfacl 参数 文件名称
getfacl命令
getfacl命令用于显示文件上设置的ACL信息 格式:getfacl 文件名称
su命令与sudo服务
su命令可以解决切换用户身份的需求
sudo命令用于给普通用户提供额外的权限来完成原本的root管理员才能完成的任务,格式sudo参数 命令名称
-h;列出帮助信息
-l 列出当前用户可以执行的命令
-u 以指定用户身份执行命令
-k:清空密码的有效时间,下次执行sudo时需要再次密码验证
-b:在后台执行指定的命令
-p:更改询问密码的提示语
sudo有以下功能
1.限制用户执行制定的命令
2.记录用户执行的每一条命令
3.配置文件提供集中的用户管理,权限与主机等参数
4.验证密码后五分钟后,无需用户再次验证密码、