今天给大家介绍一下Linux中的用户与权限
基于账号的访问控制
账户类别:用户账号、组账号
识别方式:UID、GID
用户账号
超级用户root、系统用户、普通用户
组账号
基本组(私有组)
附加组(从属组)
保存用户帐号的基本信息
每个用户记录一行,以:分割为7个字段
字段1:用户帐号的名称
字段2:密码字串或占位符 x
字段3:用户帐号的UID号
字段4:所属基本组的GID号
字段5:用户全名
字段6:宿主目录
字段7:登录Shell程序的路径
保存组帐号的基本信息
每个组记录一行,以:分割为4个字段
字段1:组帐号的名称
字段2:密码占位符 x
字段3:组帐号的GID号
字段4:本组的成员用户列表
保存组帐号的管理信息
每个组记录一行,以:分割为4个字段
字段1:组帐号的名称
字段2:加密后的密码字符串
字段3:本组的管理员列表
字段4:本组的成员用户列表
useradd 添加用户
格式:useradd [选项]… 用户名
常用命令选项
-u:指定 UID 标记号
-d:指定宿主目录(家目录),缺省为 /home/用户名
-G:指定所属的附加组
-s:指定用户的登录解释器
[root@localhost ~]# useradd nsd01
[root@localhost ~]# grep nsd01 /etc/passwd
[root@localhost ~]# id nsd01
[root@localhost ~]# useradd nsd02
[root@localhost ~]# grep nsd /etc/passwd
[root@localhost ~]# useradd -u 1200 nsd03
[root@localhost ~]# grep nsd /etc/passwd
[root@localhost ~]# useradd nsd04
[root@localhost ~]# grep nsd /etc/passwd
[root@localhost ~]# ls /home/
[root@localhost ~]# useradd -d /opt/nsd05 nsd05
[root@localhost ~]# ls /home/
[root@localhost ~]# ls /opt/
[root@localhost ~]# grep nsd /etc/passwd
[root@localhost ~]# cat /etc/shells
[root@localhost ~]# useradd -s /sbin/nologin nsd06
[root@localhost ~]# grep nsd /etc/passwd
[root@localhost ~]# groupadd abc
[root@localhost ~]# useradd -G abc nsd07
[root@localhost ~]# id nsd07
[root@localhost ~]# useradd -G abc nsd08
usermod修改用户
格式:usermod [选项]… 用户名
常用命令选项
-l:更改用户帐号的登录名称
-u:用户id
-d:家目录路径
-s:登录解释器
-G:附加组 //重置附加组
[root@localhost ~]# usermod -d /opt/nsd06 nsd06
[root@localhost ~]# grep nsd /etc/passwd
[root@localhost ~]# ls /opt/nsd06
[root@localhost ~]# usermod -u 1500 nsd08
[root@localhost ~]# grep nsd /etc/passwd
[root@localhost ~]# id nsd08
[root@localhost ~]# groupadd tarena
[root@localhost ~]# usermod -G tarena nsd08
[root@localhost ~]# id nsd08
passwd命令(对用户设置密码)
格式:passwd [选项]… 用户名
常用命令选项
–stdin:从标准输入(比如管道)取密码
[root@localhost ~]# passwd nsd01
[root@localhost ~]# su - nsd01
[root@localhost ~]# passwd nsd01
[root@localhost ~]# passwd nsd02
[root@localhost ~]# echo 123 | passwd --stdin nsd03
userdel 删除用户
格式:userdel [-r] 用户名
添加 -r 选项,宿主目录/用户邮件也一并删除
[root@localhost ~]# userdel nsd01
[root@localhost ~]# ls /home/
[root@localhost ~]# rm -rf /home/nsd01/
[root@localhost ~]# userdel -r nsd02
[root@localhost ~]# ls /home/
<hr style=" border:solid; width:100px; height:1px;" color=#000000 size=1">
访问方式(权限)
– 读取:允许查看内容-read r
– 写入:允许修改内容-write w
– 可执行:允许运行和切换-execute x
权限适用对象(归属)
– 所有者:拥有此文件/目录的用户-user u
– 所属组:拥有此文件/目录的组-group g
– 其他用户:除所有者、所属组以外的用户-other o
使用 ls -l 命令
– ls -ld 文件或目录…
以-开头:文本文件 以d开头:目录 以l开头:快捷方式
[root@localhost ~]# ls -ld /etc/
[root@localhost ~]# ls -l /etc/passwd
[root@localhost ~]# ls -l /etc/shadow
[root@localhost ~]# ls -ld /home/student
[root@localhost ~]# ls -ld /tmp
常见报错信息: Permission denied :权限不足
使用 chmod 命令
– chmod [-R] 归属关系±=权限类别 文档…
[-R]:递归设置权限
[root@localhost ~]# mkdir /nsd01
[root@localhost ~]# ls -ld /nsd01/
[root@localhost ~]# chmod u-w /nsd01
[root@localhost ~]# ls -ld /nsd01/
[root@localhost ~]# chmod u+w /nsd01
[root@localhost ~]# ls -ld /nsd01/
[root@localhost ~]# chmod g+w /nsd01
[root@localhost ~]# ls -ld /nsd01
[root@localhost ~]# chmod g=r /nsd01
[root@localhost ~]# ls -ld /nsd01
[root@localhost ~]# chmod o=--- /nsd01
[root@localhost ~]# ls -ld /nsd01
[root@localhost ~]# chmod u=rwx,o=rx /nsd01
[root@localhost ~]# ls -ld /nsd01
[root@localhost ~]# chmod u=rwx,g=rx,o=rx /nsd01
[root@localhost ~]# ls -ld /nsd01
[root@localhost ~]# chmod ugo=rwx /nsd01
[root@localhost ~]# ls -ld /nsd01
附加权限(特殊权限)
Set GID
占用属组(Group)的 x 位
显示为 s 或 S,取决于属组是否有 x 权限
对目录有效
在一个具有SGID权限的目录下,新建的文档会自动继承此目录的属组身份
[root@A ~]# mkdir /nsd07
[root@A ~]# chmod g+s /nsd07
[root@A ~]# chmod g-s /nsd07
[root@A ~]# chmod g-x /nsd07
[root@A ~]# chmod g+s /nsd07
[root@A ~]# chmod g+x /nsd07
[root@A ~]# chown :tarena /nsd07
[root@A ~]# mkdir /nsd07/aa
[root@A ~]# mkdir /nsd08
[root@A ~]# chown :tarena /nsd08
[root@A ~]# mkdir /nsd08/bb
[root@A ~]# chmod g+s /nsd08
[root@A ~]# mkdir /nsd08/cc
[root@A ~]# touch /nsd08/a.txt
[root@A ~]# ls -l /nsd08/a.txt
Set UID
? 附加在属主的 x 位上
– 属主的权限标识会变为 s
– 适用于可执行文件,Set UID可以让使用者具有文件属主的身份及部分权限
[root@A ~]# /usr/bin/mkdir /opt/haha
[root@A ~]# ls /opt/
[root@A ~]# cp /usr/bin/mkdir /usr/bin/xixidir
[root@A~]# ls /usr/bin/xixidir
[root@A ~]# /usr/bin/xixidir /opt/abc
[root@A ~]# ls /opt/
[root@A ~]# chmod u+s /usr/bin/xixidir
[root@A ~]# ls -l /usr/bin/xixidir
[root@A ~]# su - zhangsan
[zhangsan@A ~]$ /usr/bin/mkdir dc01
[zhangsan@A ~]$ ls -l
[zhangsan@A ~]$ /usr/bin/xixidir dc02
[zhangsan@A ~]$ ls -l
[zahngsan@A ~]$ exit
Sticky Bit
附加在其他人的 x 位上
– 其他人的权限标识会变为 t
– 适用于开放 w 权限的目录,可以阻止用户滥用 w 写入权限(禁止删除别人的文档)
[root@A ~]# mkdir /nsd09
[root@A ~]# ls -ld /nsd09
[root@A ~]# chmod 777 /nsd09
[root@A ~]# ls -ld /nsd09
分别切换用户lisi,用户zhangsan
[lisi@A ~]$ touch /nsd09/lisi.txt
[lisi@A ~]$ ls /nsd09/
[zhangsan@A ~]$ touch /nsd09/zhangsan.txt
[zhangsan@A ~]$ ls /nsd09
[lisi@A ~]$ rm -rf /nsd09/zhangsan.txt //删除成功
[zhangsan@A ~]$ rm -rf /nsd09/lisi.txt //删除成功
[root@A ~]# chmod o+t /nsd09
[root@A ~]# ls -ld /nsd09
分别切换用户lisi,用户zhangsan
[lisi@A ~]$ touch /nsd09/lisi.txt
[lisi@A ~]$ ls /nsd09/
[zhangsan@A ~]$ touch /nsd09/zhangsan.txt
[zhangsan@A ~]$ ls /nsd09
[lisi@A ~]$ rm -rf /nsd09/zhangsan.txt //删除失败
[zhangsan@A ~]$ rm -rf /nsd09/lisi.txt //删除失败
acl访问控制列表
? acl访问策略
– 能够对个别用户、个别组设置独立的权限
– 大多数挂载的EXT3/4、XFS文件系统默认已支持
setfacl命令和getfacl命令使用
格式:setfacl [选项] u:用户名:权限 文件…
setfacl [选项] g:组名:权限 文件…
常用命令选项
-m:定义一条ACL策略
-x:清除指定的ACL策略
-b:清除所有已设置的ACL策略
-R:递归设置ACL策略
getfacl 文档… //查看ACL策略
[root@A ~]# mkdir /nsd11
[root@A ~]# chmod o=--- /nsd11
[root@A ~]# ls -ld /nsd11
[root@A ~]# setfacl -m u:lisi:rwx /nsd11
[root@A ~]# setfacl -m u:zhangsan:rwx /nsd11
[root@A ~]# setfacl -m u:gelin01:rx /nsd11
[root@A ~]# setfacl -m u:gelin02:rx /nsd11
[root@A ~]# getfacl /nsd11
[root@A ~]# setfacl -x u:lisi /nsd11 //删除用户lisi ACL策略
[root@A ~]# getfacl /nsd11
[root@A ~]# setfacl -x u:zhangsan /nsd11 //删除用户zhangsan ACL策略
[root@A ~]# getfacl /nsd11
[root@A ~]# setfacl -b /nsd11 //删除所有ACL策略
[root@A ~]# getfacl /nsd11
以上就是今天所讲的内容
包括用户与权限的添加与设置,内容较多,大家慢慢学习。