Linux入门——用户 ,组,权限
Posted angge
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux入门——用户 ,组,权限相关的知识,希望对你有一定的参考价值。
Linux是一个多任务多用户的系统,多用户可以同时登陆同一台主机。为了考虑到每个人的隐私权和工作空间,这时候文件所有者(owner)就是即用户的角色就变得尤为重要了,同时为了用户与用户之间方便合作,共享一些公共资源,这时,为了实现资源的快速分配,我们把多个用户放在一个公共的空间,分别赋予他们不同的读写执行等操作的权限,这些用户共同组成的一个整体,就是所谓的用户组(group)。
用户与组的主要配置文件
1/etc/passwd:用户及其属性信息 文件格式
用户名:密码位:xuid:gid:描述位:家目录:shell:
2/etc/group 组及其属性信息 文件格式
组名:组密码:组id:附加组成员列表
3 /etc/shadow 用户密码及其相关属性 文件格式
用户名:密码(加密):密码的上次修改日期: 密码最小存活期: 密码最大存活期: 密码过期前多少天开始提醒用户:密码过期后多少天帐户过期:帐户过期:保留位:
4 /etc/gshadow:组密码及其相关属性 文件格式
组名:组密码(加密):组管理员: 附加组成员列表
用户和组管理命令
Id
id 用户名 显示指定用户的信息
useradd
-u UID 指定 UID
-o 与-u 配合,不检查uid的唯一性
-g GID/组名 指定用户的主要组
-G GID/组名 指定用户的附加组
-s /sbin/nologin 指定用户的默认shell
useusermod
-g GID/组名 修改用户的主组(该组要先存在)
-G GID/组名 设置用户的附加组
usermod -G ‘‘ zhangsan 删除所有的附加组
-s shell 修改用户的默认shell
Userdel
userdel 用户名 删除用户不删除家目录(可在/etc/home下查看)
userdel -r 用户名 删除用户时,连同家目录和mail文件一同删除
su
su – 用户名 在root在切换不需要密码,其他用户需要切换密码
groupadd
groupadd 组名
groupmod
group -n 新组名 当前组名 修改组名
group -g 新ID 当前组名 修改GID
groupdel
groupdel 组名 删除组
gpasswd
gpasswd -a 用户名 组名 将指定用户以附加组方式加入到指定组
gpasswd -d 用户名 组名将指定用户从指定组中删除
gpasswd -A 用户名 组名 设置组管理员(管理员可以修改组密码,及修改组成员)
gpasswd -M ‘ ‘ 组名 删除组成的所有成员
groupmems
groupmems -g 组名 -a 用户名 往组中增加成员
groupmems -g 组名-d 用户名 从组中删除成员
groupmems -g 组名-l 列出组成员 (不包含主组)
groupmems -g 组名-p 清空该组的所有组员
总结:将某已在用户以附加组方式加入某组当中
1.usermod -G 组名 用户名
2.gpasswd -a 用户名 组名
3.groupmems -g 组名 -a 用户名
要明白 每个用户有且只能有一个主要组,但用户可以有零到多个附加组每个文件只能有一个所属人,和一个所属组
练习
1创建组weiguo,shuguo,创建用户liubei为shuguo组管理员,caocao为魏国组管理员
2创建用户kongxiuxiu,guanyu其附加组为weiguo,创建用户zhangfei其主组为shuguo
3彻底删除用户kongxiu,把guanyu的附加组weiguo改为shuguo
理解并设置文件权限
我们必须要牢记用户在访问文件时权限顺序是 owner > group >other
也就是当用户访问一个文件时,首先判断当前用户是否为该文件的所属人owner,如果是owner,则应用owner位的权限;如果不是owner,则判断该用户的所属组当中,是否有一个组与该文件的group相同,如果有,则应用group位的权限,如果都不是,则应用other位权限
用ll可以看到一个文件(如果文件没有设置acl)的权限
-:文件的类型:-,d,l,b,c,p,s
rw-:owner
r--:group
r--:other
. 表示该文件是否有selinux的context值
r read 读取文件 (列出目录文件)
w write 写权限 (可以在目录中修改创建或删除文件 需要x 权限)
x excute 执行权限 (目录基本权限,只有执行权限才能有其他操作)
Chgrp
chgrp 组名 文件/目录名(修改用户的group)(owner可以修改文件的属于组,但owner一定要属于目标组)
chgrp -R 递归
Chown
chown 用户名 文件/目录名 修改用户的owner
chown -R 递归同时修改目录下的子文件子目录
Chmod
符号模式
chmod u/g/o +-= rwx 文件名
例:chmod o+w a 向文件a的other位添加w权限
数字模式
1代表x 2代表w 4代表r
1:x 2:w 3:wx 4:r 5:rx 6:rw 7:rwx
例:chmod 777 a 设置文件a的权限为rwxrwxrwx
练习
1创建目录/app/house,要求owner为liubei,仅刘关张对该目录有完整权限,其他人无任何权限
注意:前面我已经把刘关张都加入了shuguo组
2分别使用刘关张三用户在house创建各自的room目录,名为xxx_room,要求各自的room只能自己有完整权限,其他人没有任何权限
3创建一个共享目录为/app/house/common,要求刘关张在该目录下所创建的文件,彼此之间都可以读写,其他人无任何权限。
特殊权限
Suid
chmod u+s
当对于一个可执行的二进制文件作用了suid之后,任何人在执行该文件时,临时拥有其所有人的权限
Sgid
chmod g+s
1.当对于一个可执行的二进制文件作用了sgid之后,任何人在执行该文件时,临时拥有其所有组的权限
2.当对于一个目录作用了sgid权限之后,任何人在该目录下所创建的文件的所属组,均与该目录的所属组相同
Sticky
对于一个目录作用了sticky权限,该目录下的文件仅其所属人和目录的所属人及root可以删除。
ACL
开启acl的方式
centos7 默认支持acl
centos6及之前,操作系统安装时所创建的文件系统默认支持acl,而操作安装之后使用mkfs格式化的文件系统默认未开启acl,需要手工开启,方法如下:
1.tune2fs -o acl /dev/sda5
2.mount -o acl /dev/sda5 /app
ACl权限判断顺序
owner > acl user > group > other
设置ACL
setfacl -m u:liubei:rwx testdir
设置默认权限
setfacl -Rm u:liubei:rwx testdir/ 设置当前的权限
setfacl -Rm d:u:liubei:rwx testdir/ 设置未来文件的权限
删除所有权限,清空acl结构
setfacl -b testdir
acl 扩展属性 打包工具不支持存储
练习
1、在/app/dir里创建的新文件自动属于shuguo组,组weiguo的成员如:caocao能对这些新文件有读写权限,组wuguo的成员如:sunquan只能对新文件有读权限,其它用户不能访问这个文件夹
2、备份/app/dir里所有文件,删除/testdir/dir,然后恢复/testdir/dir,并恢复/testdir/dir中所有ACL权限。
以上是关于Linux入门——用户 ,组,权限的主要内容,如果未能解决你的问题,请参考以下文章