系统用户: 1.登陆操作系统 2.方便做权限的不同设置
组:方便管理众多的用户,方便对用户进行分类
唯一标识:UID,GID
管理员 root 的 UID 为 0
基本组:Linux 自己创建的组,与用户同名,系统自动将用户加入
附加组(从属组):管理员自建创建,管理员将用户加入
Linux 一个用户必须至少属于一个组
grep zhangsan /etc/passwd
zhangsan:x:1004:1004::/home/zhangsan:/bin/bash
用户名:密码占位符:用户 UID:基本组 GID:描述信息:家目录(宿主目录):解释器
– -u 用户 id、-d 家目录路径、-s 登录解释器、-G 附加组 -g 基本组
useradd hh
grep hh/etc/passwd
id hh
uid=1001(hh) gid=1001(hh) 组=1001(hh)
useradd -u 1100 hh useradd -d /opt/hh hhuseradd -s /sbin/nologin hhgroupadd tarena//新增tarena组
useradd -G tarena hh2 #创建 hh2用户并添加到 tarena 组里面
useradd -g users -G adm,root admin
id admin
uid=1235(admin) gid=100(users) 组=100(users),4(adm),0(root)
usermod -aG tarena hh # 将 hh 用户添加到 tarena 组里
id hh
uid=1001(hh) gid=1001(hh) 组=1001(hh),1002(hhh)
passwd -d 用户名用户密码信息存放在 /etc/shadow 文件
grep root /etc/shadow
root:$6$UiGI4Tc2$htsXYn5cJnOqv3P1VLcUSgfjDu2pL5yiJBuua6foZAHdwqeuLHfYUfS/vBn27Wjvoe
l8EJgtdsMjyquqvKAmf1:16261:0:99999:7:::
用户名:密码加密之后的字符串:从 1970/01/01 到最近一次密码修改经过的天数:密码最短有
效天数,默认是 0:密码最长有效天数,默认是 99999:密码过期前警告天数,默认是 7:
密码过期后多少天禁用此账户:账号失效时间,默认是空:保留字段(未使用)
– -u 用户 id、-d 家目录路径、-s 登录 Shell、-G 附加组(重置附加组)
usermod -u 1500 -s /sbin/nologin nsd08 usermod -d /opt/stu08 nsd08 usermod -G tarena nsd08– userdel [-r] 用户名
-r:连用户家目录一并删除
/etc/skel/目录是用来存放新用户配置文件的目录,当我们添加新用户的时候,这个目录下的所有文件会自动被复制到新添加的用户的家目录下。
通过修改、添加、删除/etc/skel 目录下的文件,我们可为新创建的用户提供统一的、标准的、初始化用户环境。
~/.bash profile:每次登录时执行
~/.bashrc:每次进入新的Bash环境时执行
~/.bash logout:每次退出登录时执行
全局配置文件:/etc/bashrc、./etc/profile
vim /root/.bashrc
alias hn='hostname'
hn #失败
bash: hn: 未找到命令...
需要新开启一个终端
hn #验证定义别名是否生效
localhost.localdomain
注:.bashrc 只会对自己的用户生效
[root@localhost ~]# su - nsd10
[nsd10@localhost ~]$ hn #失败,.bashrc 只会对自己的用户生效
bash: hn: 未找到命令...
全局生效,配置文件/etc/bashrc
[root@localhost ~]# vim /etc/bashrc
alias xixi='echo xixi'
新开启一个终端测试
[root@localhost ~]# xixi
xixi
– groupadd [-g 组 ID] 组名
[root@localhost ~]# groupadd adminuser
[root@localhost ~]# grep adminuser /etc/group
adminuser : x : 1505:
组名字 :密码占位符:组 GID:组成员列表(组成员可以是 0-N)
添加:
– gpasswd -a 用户名 组名
删除:
– gpasswd -d 用户名 组名
gpasswd -a dc adminuser
grep adminuser /etc/group
gpasswd -d dc adminuser
grep adminuser /etc/group
– groupdel 组名
不能删除基本组
访问方式(权限)
读取:允许查看内容-read r
写入:允许修改内容-write w
可执行:允许运行和切换-execute x
Permission denied:权限不足
对于文本文件:
r 读取权限:cat less head tail
w 写入权限:vim > >>
x 可执行权限: Shell 脚本编写时可以赋予
权限适用对象(归属)
所有者(user u):拥有此文件/目录的用户。
所属组(group g):拥有此文件/目录的组。
其他用户(other o):除所有者、所属组以外的用户。
解析文件/目录权限
使用 ls -l 命令
ls -ld 文件或目录...
以 - 开头: 文本文件
以 d 开头:目录
以 l 开头: 快捷方式
设置基本权限
#所有者取消 w 的权限
[root@localhost ~]# chmod u-w /nsd01
#所属组只读权限
[root@localhost ~]# chmod g=r /nsd01
#其他人没有任何权限
[root@localhost ~]# chmod o=--- /nsd01
#同时设置权限
[root@localhost ~]# chmod u=rwx,o=rx /nsd01
[root@localhost ~]# ls -ld /nsd01
[root@localhost ~]# chmod u=rwx,o=rx,o=rx /nsd01
[root@localhost ~]# chmod ugo=rwx /nsd01
[root@localhost ~]# ls -ld /nsd01
递归修改权限,目录本身包括此目录里面会发生变化
chmod -R o=--- /opt/aa/
注:修改权限的是目录里面的内容,目录本身权限没有被修改
如果想要对目录本身有修改的权限,找此目录的父目录进行修改即可
权限位的8进制数表示
r、w、x分别对应4、2、1,对3组分别求和
7:rwx 6:rw- 5:r-x 4:r-- 3:-wx 2:-w- 1:–x 0:—
#数字的形式修改权限:
[root@localhost ~]# chmod 750 /nsd03
[root@localhost ~]# chmod 700 /nsd03
[root@localhost ~]# chown root:zhangsan /nsd04/ #同时修改所有者(属主)和所属组(属组)
[root@localhost ~]# chown root/nsd04/ #仅修改所有者
[root@localhost ~]# chown :zhangsan/nsd04/ #仅修改所属组
[root@localhost ~]# chown -R root /opt/aa #递归修改所有者
[root@localhost ~]# chmod u-x /nsd05/
[root@localhost ~]# gpasswd -a zhangsan stugrp
[root@localhost ~]# su - zhangsan
[zhangsan@localhost ~]$ cd /nsd05/
-bash: cd: /nsd05/: 权限不够
[root@localhost ~]# umask
0022 #第一个 0 为附加权限
[root@localhost ~]# umask -S
u=rwx,g=rx,o=rx
[root@localhost ~]# mkdir -m 750 /nsd06• 附加在属组的 x 位上
– 属组的权限标识会变为 s(无执行权限显示大 S,有执行权限显示小 s)
– 适用于目录,Set GID 可以使目录下新增的文档自动设置与父目录相同的属组
当一个设置了SGID位的可执行文件运行时,该文件将具有所属组的特权,任意存取整个组所能使用的系统资源。若一个目录设置了SGID,则所有被复制到这个目录下的文件,其所属的组都会被重设为和这个目录一样,除非在复制文件时加上-p(preserve,保留文件属性)的参数,才能保留原来所属的群组设置。
• 附加在其他人的 x 位上
– 占用其他人(Other)的x位
– 显示为t或T,取决于其他人是否有x权限
– 适用于开放 w 权限的目录,可以阻止用户滥用 w 写入权限(禁止操作别人的文档)
– 在设置了粘滞位的文件夹下,即使用户有写入权限,也不能删除或改名其他用户文档
对一个文件设置了sticky-bit之后,尽管其他用户有写权限,也必须由属主执行删除、移动等操作。对一个目录设置了sticky-bit之后,存放在该目录的文件仅准许其属主执行删除、移动等操作
[root@localhost ~]# mkdir /NB
[root@localhost ~]# echo 100 > /NB/rmb.txt
[root@localhost ~]# chmod o=--- /NB
[root@localhost ~]# groupadd caiwu
[root@localhost ~]# chown :caiwu /NB
[root@localhost ~]# chmod g+w /NB
[root@localhost ~]# setfacl -m u:dc:rx /NB/ ###设置权限
[root@localhost ~]# getfacl /NB/
getfacl: Removing leading '/' from absolute path names
# file: NB/
# owner: root
# group: caiwu
user::rwx
user:dc:r-x **
group::rwx
mask::rwx
other::---
设置 acl 访问控制策略
• 使用 getfacl、setfacl 命令
– getfacl 文档…
– setfacl [-R] -m u:用户名:权限类别 文档…
– setfacl [-R] -m g:组名:权限类别 文档…
– setfacl [-R] -x u:用户名 文档… #删除指定的 ACL 策略
– setfacl [-R] -b 文档… #删除所有 ACL 策略
• 附加在属主的 x 位上
– 属主的权限标识会变为 s
– 适用于可执行文件,Set UID 可以让使用者具有文件属主的身份及部分权限
当其他用户执行带 SUID 标记的程序时,具有此程序属主的身份和相应的权限
– 传递所有者身份
当一个设置了SUID位的可执行文件被执行时,该文件将以所有者的身份运行,也就是说无论谁来执行这个文件,他都有文件所有者的特权。如果所有者是root的话,那么执行人就有超级用户的特权了。这时该位将变成一个安全漏洞,因此不要轻易设置该位。
[root@localhost ~]# cp /usr/bin/mkdir /usr/bin/hahadir
[root@localhost ~]# chmod u+s /usr/bin/hahadir #添加 s 权限
测试:
[root@localhost ~]# su - lisi
[lisi@localhost ~]$ /usr/bin/mkdir test01 #以 test01 代替/usr/bin/mkdir
[lisi@localhost ~]$ ls -ld test01/ #所有者不发生变化
drwxrwxr-x. 2 lisi lisi 6 6 月 28 15:57 /test01/
[lisi@localhost ~]$ /usr/bin/hahadir test02
[lisi@localhost ~]$ ls -ld test02 #所有者发生变化
drwxrwxr-x. 2 root lisi 6 6 月 28 15:57 /test02