linux基础3(属主属组权限管理)
chmod:修改权限
chown:写改属主,属组
umask:改创建文件时的默认权限,权限掩码
set位:
对文件或目录进行访问控制时,“读取”、“写入”、“执行”是最基本的三种权限类型。除此之外,在linux中还存在着SET位权限(SUID、SGID)、粘滞位(Sticky Bit)等为为文件或目录提供额外的控制方式。
SET位权限:
位权限多用于给可执行的程序或脚本文件进行设置,其中SUID表示对属主用户增加SET位权限,SGID表示对属组内的用户增加SET位权限。执行未见被设置了SUID、SGID权限后,任何用户在执行该文件时,将获得该文件属主、属组账号对应的身份。
为执行文件添加SET位权限一般使用chmod命令实现:
如使用“chmod u+s”设置SUID权限,使用“chmod +gs”设置SGID权限。
也可以使用数字形式,SUID对应八进制数字“4”、SGID对应八进制数字“2”:
如使用“chmod 4755”设置SUID权限,使用“chmod 2755”设置SGID权限,使用“chmod 6755”同时设置SUID和SGID权限
合理利用SUID、SGID设置SET位权限,可以在确保安全性的同时为linux系统的管理和使用带来方便。例如,linux系统中passwd命令的程序文件就被设置了SUID权限,正因为如此,尽管普通用户无法直接修改“/etc/shadow”文件,但仍然可以通过passwd命令修改自己的登录密码,从而以root用户的身份间接更新shadow文件中的密码信息。
另一方面,若没有确切的应用需要,不要轻易为可执行文件设置SET位权限,特别是那些属主、属组是root的执行程序,使用SET位权限时更应该谨慎。例如,若为vim编辑器程序设置SUID权限,将导致普通用户也可以使用vim编辑器修改系统中的任何配置文件。 需要去除SUID、SGID权限时,只需要使用“u-s”、“g-s”的权限模式即可。
粘滞位权限 :
粘滞位主要用于为目录设置特殊的附加权限,当目录被设置粘滞位权限后,即便用户对该目录有写入权限,也不能删除该目录中其他用户的文件数据。设置了粘滞位权限的目录,使用ls命令查看其属性时,其他用户权限处的“x”将变为“t”。 使用chmod命令设置目录权限时,“chmod +t”、“chmod -t”权限模式可分别用于添加、移除粘滞位权限。将数字权限模式“nnnn”中 的第1位数字改为“1”、“0”,也可以实现添加移除粘滞位权限。
umask命令:
用来设置限制新建文件权限的掩码。当新文件被创建时,其最初的权限由文件创建掩码决定。用户每次注册进入系统时,umask命令都被执行, 并自动设置掩码mode来限制新文件的权限。用户可以通过再次执行umask命令来改变默认值,新的权限将会把旧的覆盖掉。
用户权限管理 -ACL(访问控制管理):
setfacl
功能 : 修改本地文件 / 目录的 ACL权限
getfacl
功能 : 查看本地文件 / 目录的 ACL权限
文件属性:
chattr
功能 : 更改文件 / 目录的属性
lsattr
功能 : 显示文件 / 目录的权限
su:切换用户
sudo命令用来以其他身份来执行命令,预设的身份为root。在/etc/sudoers中设置了可执行sudo指令的用户。若其未经授权的用户企图使用sudo,则会发出警告的邮件给管理员。用户使用sudo时,必须先输入密码,之后有5分钟的有效期限,超过期限则必须重新输入密码。
第一个ALL是指网络中的主机,我们后面把它改成了主机名,它指明foobar可以在此主机上执行后面的命令。第二个括号里的ALL是指目标用户,也就是以谁的身份去执行命令。最后一个ALL当然就是指命令名了。例如,我们想让foobar用户在linux主机上以jimmy或rene的身份执行kill命令,这样编写配置文件:
foobar ALL=(jimmy,rene) ALL
用户管理
分散式管理
集中式管理
用户信息保存文件及位置 /etc/passwd
用户密码保护文件及位置/etc/shadow
linux组的信息保存位置 /etc/group
两个建立用户的自定义配置文件
/etc/default/useradd
/etc/login.defs
vim /etc/passwd
第一列 账号名
第二列 密码
第三列 UID
第四列 GID
第五列 备注信息
第六列 账户目录位置
第七列 账号使用的shell
vim /etc/shadow
第一列 账号名
第二列 密码
第三列 密码自新纪元 (1970-1-1) 起到用户前一次 修 改密码的天数
第四列 密码前次与下一次修改的时间间隔 , 一般为“ 0”位不设定,可随时修改
第五列 密码最大有效其时间 ( 天 ), 默认为 99999 天
第六列 密码失效前 , 提前 N( 天 ) 通知警告用户
第七列 密码失效后 , 宽限期天数 . 此段设置可以确 保 密码失效后延长 N 天在将密码失效
第八列 账号有效期
第九列 保留
属主属组管理
useradd (adduser) 名字 添加账户
-u 指定账户UID
-g: 指定账户初始化 ( 起始 ) 组 (passwd 区域 4)
-d: 指定账户的主目录 (passwd 区域 6)
-s: 指定新建账户所使用的 shell(passwd 区域 7)
useradd -g root -d /admin -s /bin/bash -u 614 test
账户名为test 初始组为root 账户主目录为/admin 所使用的shell为bash uid为614
usermod 修改用户
usermod -aG root test 把账户test添加到root组
usermod -G game zhangsan 添加附加组
useramod -g vfast tom tom的主要组为vfast
usermod -u 2000 harry
useradd -G game zhangsan 把zhangsan添加到game组(zhangsan是之前不存在用户)
useradd -d /home/body cjk 把cjk的家目录设为body
usermod -s /sbin/nologin tom tom用户的登陆shell为非交互式
/bin/bash
userdel 账户 删除用户
groupadd 组名 创建组
groupmod -n qqq test 把组名test改为qqq
gpasswd test 设定密码
gpasswd -A aa -M aa,bb,cc test 组为test。aa为管理员 bbcc账户为组员
gpasswd -d aa admin 将aa从admin组中移除
gpasswd -a aa admin 将aa添加到admin组中
修改密码
passwd name 设定修改密码(密码不可见)
passwd --stdin name 设定修改密码(密码可见)
echo “123” | passwd --stdin name 直接给用户设定密码
-l 锁定指定账号
-u 解锁指定账号
-d 清空指定账号口令
id 账户 查看当前用户UID GID 组名
-un: 显示账户名
-gn: 显示初始组组名
-Gn: 显示附加组组名
who 查看当前所有登录信息
whoami 显示账户
last 显示账户最后登录时间
lastlog 显示最近所有账户最后登录时间
权限管理
chmod 改变文件目录的权限
chmod u+rw,g+rw,o+r test u属主 g属组 o其他人 加权限
chmod u-rw,,g=x,o-rw test 减权限
chmod o-rwx /var/tmp/fstab 其他用户无权限
chmod 666 test
chmod 4644 test 让其他用户以属主身份执行可执行程序(suid)
chmod 2644 test sgid
chmod 1777 test 黏贴位 确保用户仅可以删除自己的文件
chmod u-s test (g)
chmod u+s
Set 位
suid: 让其他用户以属主身份执行可执行程序
sgid: 让其他用户以属组身份执行可执行程序
sticky: 黏贴位 , 确保用户仅可以删除自己的文件
umask 改创建文件时的默认权限,权限掩码
默认权限:0022 文件666 目录777
chown改变属主属组
chown test config 改变config的属主位test账户
chown .test config --------------组---------
chown -RV aa.aa config 改变config目录及子目录的属主组权限
chown root:root /var/tmp/fstab 把文件的属主属组都改为root
chgrp game test 把test文件的属组改为game组
-R 递归
-v 显示详细信息
getfacl config 查看本地文件ACL权限(不同角色分配不同权限)
setfacl -m u:aa:rw,g:aa:rw config 给aa对文件config文件用有rw权限
setfacl -R -m u:aa:rwx test 目录及子目录
setfacl -x u:aa test 去掉aa对test中的ACL权限
setfacl -b test 去掉test中所有ACL权限
chattr +i test 给test增加i只读属性
lsattr test 显示目录/文件权限
su test root切换到test 继续使用root的shell环境
su - test 用test的shell环境
sudo赋予普通用户特殊权限
配置文件位于/etc/sudoers