陈鑫
用户 、组
-rw-r--r--. 1 root root 0 Dec 2 18:10 1
用户 组
多用户多任务的管理系统
linux 管理模式私有模式: 每一个用户对应一个和用户同名的组
(管理用户可以通过组来执行,可以对组下发权限,这样组下的用户也可以使用对应的权限)
公有模式:多个用户共用一个组
1.用户类别(最多可以创建65535个用户)
管理员: root UID (一个系统默认只有一个管理用户)
普通用户:redhat 1-60000
普通用户分为两类:
系统用户:系统安装自动创建 1-200 201-999
一般用户:手动添加 1000-60000 (用户自己创建出来的)
1.1创建用户 (只能在管理员下的身份创建)
useradd 用户名 /usr/sbin/useradd(默认的文件路径) (只能一个一个的添加,不能同时添加多个组) (sbin--管理员下的路径) (bin--所有用户下的路径)
格式:
useradd [选项] 一个用户名
-u 更改用户UID
-g 更改用户的基本组
-G 更改用户的附加组
-c 注释信息
-d 家目录
-s 更改shell字段 (可交互式shell、非交互式shell)
命令演示:
[root@localhost ~]# useradd 1 用户名不能是数字,必须是用户名 useradd: invalid user name '1' [root@localhost ~]# useradd xiao1 [root@localhost ~]# cat /etc/passwd (查看用户是否创建好在配置文件中查询) xiao1:x:1002:1002::/home/xiao1:/bin/bash [root@localhost ~]# su redhat bash: /etc/bashrc: Permission denied [redhat@localhost root]$ useradd xiao2 普通用户不能创建用户 useradd: Permission denied. useradd: cannot lock /etc/passwd; try again later. root用户创建用户时就在这配置文件 [redhat@localhost root]$ exit exit
查看创建的用户
[root@localhost ~]# cat /etc/passwd (查看用户是否创建好在配置文件中查询) xiao1:x:1002:1002::/home/xiao1:/bin/bash
如何判断该用户是否创建成功
法一: (cat查询所有用户,比较慢)
[root@localhost ~]# cat /etc/passwd (查看用户是否创建好在配置文件中查询) xiao1:x:1002:1002::/home/xiao1:/bin/bash
法二:切换用户
[root@localhost ~]# su xiao1 bash: /etc/bashrc: Permission denied [xiao1@localhost root]$ exit exit
法三: 通过grep过滤
[root@localhost ~]# grep '^xiao1' /etc/passwd xiao1:x:1002:1002::/home/xiao1:/bin/bash
法四:通过id 命令
id 用户名 (在系统中可能会有重名的用户名,但是每个用户的id是唯一的)
[root@localhost ~]# id xiao1 uid=1002(xiao1) gid=1002(xiao1) groups=1002(xiao1)
1.2查看用户
grep '^用户名' /etc/passwd
id 用户名
cat /etc/passwd (用户配置文件)
xiao1:x:1002:1002::/home/xiao1:/bin/bash
用户名:密码的占位符:UID:GID:描述信息,注释字段:用户的家目录:shell字 段/bin/bash登陆式shell /sbin/nologin非登陆式shell
1.3修改用户
usermod [option...] [选项参数] 用户名
-l 修改用户登录的用户名 #usermod -l newxiao1 xiao1 把xiao1改名为newxiao1
-u 更改用户UID #usermod -u 1111 newxiao1 #usermod newxiao1 -u 1111
-g 更改用户的基本组 #usermod -g redhat newxiao1
-G 更改用户的附加组 #groudadd g1 #usermod -G g1 newxiao1
-c 注释信息 #usermod -c18123827227 newxiao1
-d 家目录 #usermod -d 家目录 newuser
-s 更改shell字段 (可交互式shell、非交互式shell)
#usermod -s /sbin/nologin newuser
-L 锁定用户密码
-U 解锁用户密码eg:
#usermod -l new1 -u 1234 -g 1000 -c newuser newuser
1.4删除用户
userdel -r 用户 (删除用户以及创建用户相关的所有文件 ) (配置文件,家目录)
[root@localhost ~]# userdel -r xiao1
[root@localhost ~]# id xiao1
id: ‘xiao1’: no such user
注:默认也会删除用户的基本组,但是如果基本组中有其他用户,userdel -r删除不会删除基本组
[root@www ~]# useradd haha [root@www ~]# tail -1 /etc/group haha:x:1002: [root@www ~]# userdel -r haha [root@www ~]# tail -1 /etc/group user:x:1001: [root@www ~]# useradd xixi [root@www ~]# usermod -G xixi user [root@www ~]# tail -1 /etc/group xixi:x:1002:user [root@www ~]# userdel -r xixi ---xixi基本组中存在其他用户,删除用户不会删除基本组 userdel: group xixi not removed because it has other members. [root@www ~]# tail -1 /etc/group xixi:x:1002:user
1.5用户设置/修改密码 (笔试题会考格式)
passwd [用户名] (建用户密码) (如果有密码,则它是改密码,如果没有密码,则它是创建密码)
[root@localhost ~]# passwd xiao1
Changing password for user xiao1.
New password: 正常输入密码,不会显示的
Retype new password: 重复确认密码
passwd: all authentication tokens updated successfully.
然后登录验证这个用户
管理员和普通用户在设置密码的区别
[root@localhost ~]# passwd 默认更改当前用户密码 Changing password for user root. root管理员不需要输入原来的密码 New password: Retype new password: passwd: all authentication tokens updated successfully. [root@localhost ~]# su - redhat -bash: /etc/bashrc: Permission denied -bash: /etc/bashrc: Permission denied [redhat@localhost ~]$ passwd xiao1 普通用户是没有更改密码的权力的 passwd: Only root can specify a user name. [redhat@localhost ~]$ passwd redhat passwd: Only root can specify a user name. [redhat@localhost ~]$ passwd Changing password for user redhat. 普通用户只能设置更改自己的密码 Current password: 并且需要输入原来的密码 New password: 新设置的密码需要输入8位 有数字,字符,字母构成 BAD PASSWORD: The password is the same as the old one passwd: Authentication token manipulation error
管理员:可以指定用户名更改系统任意用户的密码,不严格匹配密码等级设置
普通用户:不可以指定用户名,只能更改自己的密码,需要输入之前的密码,严格匹配密码等级设置
更改密码的另二种方法
①echo mima | passwd --stdin 用户名 ( --stdin把前面一个命令的输出结果作为passwd命令的标椎输入)
[root@localhost ~]# echo 具体密码 | passwd --stdin 用户名
(密码可以看到)
②chpasswd 批量更改
[root@localhost ~]# vim users [root@localhost ~]# cat users | chpasswd ^C [root@localhost ~]# cat users redhat:1234 root:1234 xiao1:1234
也可以一个个更改:
[root@localhost ~]# echo redhat:123456 | chpasswd
-d 删除用户密码
-l 锁定用户密码
-u 解锁用户密码eg:
删除用户密码
[root@localhost ~]# passwd -d xiao1 Removing password for user xiao1. passwd: Success
1.6破解密码: (破解密码----红帽认证考试)
主机关机-->开机-->鼠标进入启动界面-->第一个引导菜单--> e-->找到linux标记的这一行在行尾(quiet)添加rd.break--->ctrl-x--->mount -o remount ,rw /sysroot --->chroot /sysroot -->passwd root -->设置密码--确认密码--->touch /.autorelabel -->exit -->exit (等待)
详:
第一个引导菜单:鼠标点击中间 再按 e 键
(两个菜单都可以)
找到linux标记的这一行在行尾(quiet)添加rd.break--->按 ctrl-x 键
跳转下一页等待加载
输入
mount -o remount ,rw /sysroot
(通过挂载的方式对 / 文件系统也就是 / 分区 设置一个 rw 权限)
注:系统默认文件系统对密码有一个只读的权限r,改密码也要一个权限写w
输入
chroot /sysroot
(切换文件系统,切换到 /分区)
接下来出现的提示符sh跟正常打开虚拟机一样
输入
passwd root -->设置密码--确认密码
可以不加root , 因为前面提示符#就代表管理员
如果是中文版,确认密码会出现乱码
输入
touch /.autorelabel (必不可少)
. + 隐藏文件autorelabel
在 / 文件系统下创建隐藏文件
注:这条密令是对linux主机安全模块Slinux进行初始化操作
输入
exit -->exit
第一次exit是从Shell退出到交换模式Switch
第二次是从交换模式退出到内核层,接下来加载到操作系统层
最后等待它系统自动重启,不是手动
密码设置成功之后,重新输入密码时,不是和自己设置普通用户进行验证
而是通过Not listed 指定用户名 root 进行验证
2.组类别
管理组: root GID=0
普通组: 1-60000
普通组分为这两类:
系统组
一般组
主组,基本组,私有组 == 用户的默认组 (默认组不需要自己创建,用户创建出来的时候就有了)
eg:root用户的默认组就是root组
linux系统默认的是私有模式,只要用户创建出来, 组也随之创建好,为主组(和用户同名)
若没有主组,也就没有用户了
附加组,额外组,用户组 == 默认组之外的组 (一个用户可以有多个组)
2.1组添加 (也是管理员才能做的一个操作)
groupadd 一个组名 (不能同时创建多个组)
创建组
groupadd 组名
2.2查看组
grep '^组名‘’ /etc/group (组的所有信息都在 组配置文件)
cat /etc/group 组配置文件(组名)
#man 5 group
redhat:x:1000:组名:组密码占位符:GID:组中的用户名
2.3 修改组信息
groupmod [option...][选项参数]组名
#groupadd grp2
-n 修改组名 #groupmod -n grp1 g1
-g 修改组id #groupmod -g 2222 g1
2.4 删除组
groupdel 组名
注:是能删除一个附加组,哪怕附加组中有用户也可以删除,但是不能删除一个基本组
2.5设置,修改组密码
gpasswd 组名
-a 把指定用户加入组 #usermod -G g1 redhat == #gpasswd -a redhat g1
-d 将指定用户从组移除 #gpasswd -d redhat g2
-M 指定多个用户加入组(指定新的组成员列表) #gpasswd -M user1,user2 g2 #gpasswd -M haha,xixi g2
-r 删除组密码
-A 指定组长 #gpasswd -A haha g2
-R 锁定组密码 #gpasswd -R g2
2.6 登入新组
newgrp 组名 切换组身份
练习题1
1.新建组,shengchan,caiwu,jishu
2.新建用户要求如下:
* wjx 是shengchan组的附加用户
* liuy 是caiwu组的附加用户
* zxx 是jishu组的附加用户
* 新建admin用户,此用户不属于以上提到的三个部门,以上用户密码设置为redhat
#groupadd shengchan #groupadd caiwu #groupadd jishu #useradd -G shengchan wjx #useradd liuy #usermod -G caiwu liuy #useradd zxx #gpasswd -a zxx jishu #useradd admin (1)passwd wjx (2)echo redhat |passwd --stdin liuy (3)echo zxx:redhat |chpasswd (4)vim users wjx:redhat liuy:redhat zxx:redhat admin:redhat #cat users | chpasswd
3.实验
创建学习组1,学习组2 ;他们的组gid分别为1111,2222,添加成员并将uid为1088,
和uid为1066的成员为两组的组长,其中一组组长有一个‘外号’laoda。
不同学习组成员进入其他组需要密码才能进入(设置密码);即使密码泄露也不希望组之外的成员进入。
#groupadd std1 #groupmod -g 1111 std1 #groupadd -g 2222 std2 #useradd u1 #useradd u2 #usermod -u 1088 u1 #usermod -c laoda u1 #useradd -u 1066 ha1 #useradd ha2 用户加入组 #usermod -G std1 u1 #gpasswd -a u2 std1 #gpasswd -M ha1,ha2 std2 #gpasswd -A u1 std1 #gpasswd -A ha1 std2 #gpasswd std1 #gpasswd std2 #gpasswd -R std1 #gpasswd -R std2
不允许用户远程登录
扩展
useradd haha /etc/passwd
/etc/group
/etc/shadow 密码文件
/etc/gshadow
/home/USERNAME (d)
/var/spool/mail/USERNAME (-)
groupadd /etc/group /etc/gshadow
/etc/shadow 用户密码文件
用户名:加密密码:最后一修改密码的天数(1970/1/1):密码生效最短时间:最长时间:警告时间:延长时间:精确过期时间(1970/1/1):保留字段 #passwd -x, --maximum=DAYS maximum password lifetime (root only) -n, --minimum=DAYS minimum password lifetime (root only) -w, --warning=DAYS number of days warning users receive
/etc/gshadow 组密码信息 7 5
组名:组密码:组长:组成成员
/etc/default/useradd 用户创建默认加载的配置文件
参数 | 含义 |
---|---|
GR0UP=100 | 这个选项用于建立用户的默认组,也就是说,在添加每个用户时,用户的初始组就是 GID 为 100 的这个用户组。但 CentOS 并不是这样的,而是在添加用户时会自动建立和用户名相同的组作为此用户的初始组。也就是说这个选项并不会生效。 Linux 中默认用户组有两种机制:一种是私有用户组机制,系统会创建一个和用户名相同的用户组作为用户的初始组;另一种是公共用户组机制,系统用 GID 是 100 的用户组作为所有新建用户的初始组。目前我们采用的是私有用户组机制。 |
HOME=/home | 指的是用户主目录的默认位置,所有新建用户的主目录默认都在 /home/下。 |
INACTIVE=-1 | 指的是密码过期后的宽限天数,也就是 /etc/shadow 文件的第七个字段。这里默认值是 -1,代表所有新建立的用户密码永远不会失效。 |
EXPIRE= | 表示账号过期时间,也就是 /etc/shadow 文件的第八个字段。默认值是空,代表所有新建用户没有失效时间,永久有效。 |
SHELL=/bin/bash | 表示所有新建立的用户默认 Shell 都是 /bin/bash。 |
SKEL=/etc/skel | 在创建一个新用户后,你会发现,该用户主目录并不是空目录,而是有 .bash_profile、.bashrc 等文件,这些文件都是从 /etc/skel 目录中自动复制过来的。因此,更改 /etc/skel 目录下的内容就可以改变新建用户默认主目录中的配置文件信息。 |
CREATE_MAIL_SPOOL=yes | 指的是给新建用户建立邮箱,默认是创建。也就是说,对于所有的新建用户,系统都会新建一个邮箱,放在 /var/spool/mail/ 目录下,和用户名相同。 |
/etc/login.defs 登录用户默认匹配的配置文件
注:配置文件中的#表示注释 MAIL_DIR /var/spool/mail \#创建用户时,要在目录/var/spool/mail中创建一个用户mail文件 PASS_MAX_DAYS 99999 \#密码最大有效期 PASS_MIN_DAYS 0 \#两次修改密码的最小间隔时间 PASS_MIN_LEN 5 \#密码最小长度,对于root无效 PASS_WARN_AGE 7 \#密码过期前多少天开始提示 #创建用户时不指定UID的话自动UID的范围 UID_MIN 500\#用户ID的最小值 UID_MAX 60000 \#用户ID的最大值 #自动组ID的范围 GID_MIN 500\#组ID的最小值 GID_MAX 60000 \#组ID的最大值 USERDEL_CMD /usr/sbin/userdel_local \#当删除用户的时候执行的脚本 CREATE_HOME yes \#使用useradd的时候是够创建用户目录 USERGROUPS_ENAB yes \#用MD5加密密码
练习题2
1.创建用户gentoo,附加组为bin和root,默认shell为/bin/csh,注释信息为"Gentoo Distribution"
useradd gentoo
gpasswd -a gentoo bin
gpasswd -a gentoo root
#usermod -s /bin/csh -c "Gentoo Distribution" gentoo
2.创建下面的用户/组,用户natasha,使用admins 作为附属,用户harry也使用admins 作为附属组,用户sarah不可交互登录系统,且不是admins 的成员,natasha,harry,sarah密码都是centos
5.查看UID、GID范围的配置文件,修改为1500-60000。并查看密码加密算法
cat /etc/login.defs
6.查看创建用户时的模板配置文件
cat /etc/default/useradd
7.修改创建用户时的默认设置,家目录/www,默认shell 为/sbin/nologin
cat /etc/default/useradd
3.权限
3.1 系统中的权限是在文件中标识
r w x r-x r--
4 2 1 4 1 4
所属用户权限 所属用户组权限 其他用户权限
3.2权限两种描述方式
(1)字符形式 r read w write x excute
(2)数值形式 r=4 w=2 x=1
-rw-------. 1 root root 1456 Nov 19 12:19 anaconda-ks.cfg 600
drwxr-xr-x. 2 root root 6 Nov 19 14:12 Desktop 755
3.3文件默认权限值
文本文件最高的权限值:666 (少了一个执行权限x=1)
权限掩码 权限过滤值:022 #umask
文本文件默认的权限值:644
目录文件最高的权限值:777
权限掩码 权限过滤值:022 #umask
目录文件默认的权限值:755
rw- rw- rw- 6 6 6
--- -wx -wx 0 3 3
rw- r-- r-- 6 3 3---- ---- --x 6 4 4
3.4 权限字符含义
文本文件:r read 读取文件内容 (cat tac more less head tail grep )
w write 编辑文件内容 (vim echo cat << >file)
x excute 解释运行文件的内容(命令文件)
目录文件:r 查看目录中的文件名 ls
w 创建文件 touch mkdir cp mv > rm
x cd (r-x)(rwx)
3.5 linux 中文件权限匹配规则
可执行文件进程的所属身份是用户发起者身份,
判断进程发起者身份是否是目标文件的所属用户,是,匹配目标文件所属用户的权限
不是,判断进程发起者身份是否是目标文件的所属组用户,是,直接匹配目标文件组权限,
不是,则直接匹配目标文件其他用户的权限
3.6更改文件的权限
chmod 权限 文件名
注:作为普通用户只能更改属于自己的文件的权限。
u所属用户位 g所属组 o其他用户 a 所有chmod ugo=rwx FILE1 //u user g group o other a all
==chmod a=rwx FILE1
==chmod -x FILE1
==chmod u=rwx,g+w,o-x FILE1
chmod 777 DIRNAME
chmod 7 DIRNAME = chmod 007 DIRNAME
chmod u= 7 DIRNAME --错误
不能数字字母同时存在
注:普通用户修改权限,用户只能更改属于当前用户文件的权限
chown 更改你文件所属用户:
chown 用户名 FILE...
chown 用户名;组名 FILE...
chgrp 更改你文件所属组
chgrp 组名 FILE...
eg:
[root@www ~]# ll aaa
-------rw-. 1 root root 5 Dec 4 14:30 aaa
[root@www ~]# chown xixi:haha aaa
[root@www ~]# ll aaa
-------rw-. 1 xixi haha 5 Dec 4 14:30 aaa
[root@www ~]# chown redhat aaa
[root@www ~]# ll aaa
-------rw-. 1 redhat haha 5 Dec 4 14:30 aaa
[root@www ~]# chgrp xixi aaa
[root@www ~]# ll aaa
-------rw-. 1 redhat xixi 5 Dec 4 14:30 aaa
757 ./a.txt
758 ll a.txt
759 chmod a=x a.txt
760 ll a.txt
761 ./a.txt
762 cat a.txt
[root@localhost ~]# cp /etc/fstab /var/tmp
[root@localhost ~]# useradd zhangsan
[root@localhost ~]# chomd zhangsan:zhangsan /var/tmp/fstabbash: chomd: command not found...
Similar command is: 'chmod'
[root@localhost ~]# chown zhangsan:zhangsan /var/tmp/fstab
[root@localhost ~]# ll /var/tmp/fstab
-rw-r--r--. 1 zhangsan zhangsan 579 Dec 3 23:50 /var/tmp/fstab
[root@localhost ~]# chmod a-x /var/tmp/fstab
[root@localhost ~]# chmod o+r /var/tmp/fstab
[root@localhost ~]# ll /var/tmp/fstab
-rw-r--r--. 1 zhangsan zhangsan 579 Dec 3 23:50 /var/tmp/fstab
(ll -d 文件)列出指定文件或目录
3.7特殊权限
umask 0022
chmod 4644 file
u+s=4 suid 所属用户的禁锢位
仅对可执行文件(命令文件) 设置有意义:
可执行文件(命令文件)设置u+s权限,可执行文件的进程所属用户是可执行文件自身的用户;
[root@localhost ~]# cd /pub
[root@localhost pub]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 33544 Dec 14 2019 /usr/bin/passwd[redhat@localhost pub]$ passwd //passwd 进程的用户身份是root(是执行文件自身的身份)
passwd 修改当前用户的密码, 更改的是/etc/shadow
[root@localhost pub]# ll /etc/shadow
----------. 1 root root 1399 Dec 3 23:51 /etc/shadow为什么普通用户可以修改/etc/shadow的密码信息?
是因为passwd进程的身份是root,作为root匹配目标文件可以忽略读写权限
设置情况:通过任意用户执行命令,通过root身份来执行就可以设置特殊权限u+s
g+s=2 sgid 所属组禁锢位
对可执行文件(命令文件) 设置有意义: (很少用)
可执行文件(命令文件)设置g+s权限,可执行文件的进程所属组是可执行文件自身的所属组;
(2)对目录文件设置有意义:
任意用户在该目录下创建的文件,文件的所属组都是目录的所属组
eg:
[root@www ~]# mkdir /pub
[root@www ~]# chmod 777 /pub
[root@www ~]# ll /usr/bin/touch
-rwxr-xr-x. 1 root root 96144 Jul 10 2021 /usr/bin/touch
[user@www ~]$ touch /pub/u1
[user@www ~]$ ll /pub/u1
-rw-rw-r--. 1 user user 0 Dec 4 16:20 /pub/u1
----------------------目录g+s------------------------------------
[root@www ~]# chmod g+s /pub
[root@www ~]# ll /pub -d
drwxrwsrwx. 2 root root 16 Dec 4 16:20 /pub
[user@www ~]$ touch /pub/u2
[user@www ~]$ ll /pub/
total 0
-rw-rw-r--. 1 user user 0 Dec 4 16:20 u1
-rw-rw-r--. 1 user root 0 Dec 4 16:22 u2
o+t=1 sticky 冒险位
仅对目录文件设置有意义:
目录文件设置o+t权限后,普通用户只能删除自己的文件不能删除别人的文件
[root@www ~]# ll -d /test
drwxrwxrwx. 3 root root 102 Dec 4 15:18 /test
[root@www ~]# ll /test
total 0
-rw-r--r--. 1 root root 0 Dec 4 15:09 r2
-rw-r--r--. 1 root root 0 Dec 4 15:09 r3
-rw-r--r--. 1 redhat redhat 0 Dec 4 15:10 red1
-rw-r--r--. 1 redhat redhat 0 Dec 4 15:10 red2
-rw-r--r--. 1 redhat redhat 0 Dec 4 15:10 red3
-rw-r--r--. 1 user user 0 Dec 4 15:10 u1
-rw-r--r--. 1 user user 0 Dec 4 15:10 u2
-rw-r--r--. 1 user user 0 Dec 4 15:10 u3
[user@www test]$ rm -f r2 删除任意用户的文件
--------------------目录o+t----------------------------------
[root@www ~]# chmod o+t /test
[root@www ~]# ll -d /test
drwxrwxrwt. 3 root root 92 Dec 4 16:28 /test[user@www test]$ rm -f r3
rm: cannot remove 'r3': Operation not permitted
[user@www test]$ rm -f u1
[user@www test]$ rm -f red1
rm: cannot remove 'red1': Operation not permitted
3.8 扩展权限
查看文件的权限列表:getfacl FILENAME
设置扩展权限列表:setfacl -m u:用户名:权限 FILENAME (-m 设置操作)
setfacl -m g:组名:权限 FILENAME
删除扩展层权限列表:setfacl -x u:用户名: FILENAME
清空扩展权限: setfacl -b FILENAME
[root@localhost ~]# getfacl a.txt
# file: a.txt
# owner: root
# group: root
user::--x
group::--x
other::--x
[root@localhost ~]# setfacl -m u:redhat:rwx a.txt
[root@localhost ~]# ll a.txt
---xrwx--x+ 2 root root 0 Dec 2 23:20 a.txt
[root@localhost ~]# getfacl a.txt
# file: a.txt
# owner: root
# group: root
user::--x
user:redhat:rwx
group::--x
mask::rwx
other::--x
[root@localhost ~]# setfacl -m g:redhat:rwx a.txt
[root@localhost ~]# getfacl a.txt
# file: a.txt
# owner: root
# group: root
user::--x
user:redhat:rwx
group::--x
group:redhat:rwx
mask::rwx
other::--x
[root@localhost ~]# setfacl -x u:redhat:rwx a.txt
setfacl: Option -x: Invalid argument near character 10
[root@localhost ~]# getfacl a.txt
# file: a.txt
# owner: root
# group: root
user::--x
user:redhat:rwx
group::--x
group:redhat:rwx
mask::rwx
other::--x
[root@localhost ~]# setfacl -b u:redhat:rwx a.txt
setfacl: u:redhat:rwx: No such file or directory
[root@localhost ~]# setfacl -b g:redhat:rwx a.txt
setfacl: g:redhat:rwx: No such file or directory
[root@localhost ~]# getfacl a.txt
# file: a.txt
# owner: root
# group: root
user::--x
group::--x
other::--x
补:
chown 和 chmod 都是Linux中常用的 解决权限问题的方法
对于初学者来说,使用chmod来改变文件权限是更常用的
但是更多时候,我们需要一种不去更改文件本身属性的方法。
chown 和 chmod 的区别:
1、操作内容不同
查看文件或文件夹属性时,我们可以看到:
使用chmod会修改第一列的内容,即文件或文件夹的读写执行权限;
而使用chown会修改第3、4列内容,即可访问该文件或文件夹的用户名和用户组。
即:
chmod是用来设置文件夹和文件权限的;
而chown是用来设置用户组的,比如授权某用户组。
2、用法不同
chown用法
作用:
用来更改某个目录或文件的用户名和用户组。
一般来说,这个指令只有是由系统管理者(root)所使用,一般使用者没有权限可以改变别人的档案拥有者,也没有权限可以自己的档案拥有者改设为别人。
语法:
chown [-cfhvR] [--help] [--version] user[:group] 文件名
也可以简化为:
chown 用户名:组名 文件路径
举例:
例1:chown root:root /tmp/tmp1
就是把tmp1的用户名和用户组改成root和root(只修改了tmp1的属组)。
例2:chown -R root:root /tmp/tmp1
就是把tmp1下的所有文件的属组都改成root和root。
chmod用法
作用:
用来修改某个目录或文件的访问权限。
Linux/Unix 的文件档案存取权限分为三级 : 档案拥有者(Owner)、群组(Group)、其他(Other Users)。利用 chmod 可以藉以控制档案如何被他人所存取。
举例:
例子:chmod -R 777 /home/linux
就是把该目录下的所有文件及文件夹的权限改为可读可写可执行的。
作业题:(红帽认证考题)
1.创建下列用户,组,和组的成员关系(servera)
• 创建组sysmgrs
• 一个名为 natasha 的用户,其属于 sysmgrs,这个组是该用户的从属组
• 一个名为 harry 的用户,属于 sysmgrs,这个组是该用户的从属组
• 一个名为 sarah 的用户,其在系统汇总没有可以交互的 shell (非登入时shell)
• 用户 natasha,harry,sarah 的秘密吗都要设定为:modteed
#groupadd sysmgrs
法一:#useradd -G sysmgrs(组名/id) natasha
法二:#useradd harry
#usermod -G sysmgrs harry
法三:#gpasswd -a sysmgrs harry (组密码的形式)
#useradd -s /sbin/nologin sarah
#echo modteed | passwd --stdin natasha
#echo modteed | passwd --stdin harry
#echo modteed | passwd --stdin sarah
2.拷贝文件/etc/fstab 到/var/tmp/fstab 配置文件/var/tmp/fstab 的权限
• 文件/var/tmp/fstab 的拥有者是 root 文件/var/tmp/fstab 属于 root 组
• 文件/var/tmp/fstab 对任何用户不可执行
#cp /etc/fstab /var/tmp #chown root.root /var/tmp/fstab #chmod a-x /var/tmp/fstab
• 用户 natasha 能够对文件/var/tmp/fstab具有读写权限 (可以从用户角度 或者从文件)
#useradd natasha
#setfacl -m u:natasha:rw /var/tmp/fstab
• 用户 harry 对文件/var/tmp/fstab 既不能读也不能写
#useradd harry #setfacl -m u:harry:--- /var/tmp/fstab-
• 其他用户(当前和将来的)能对文件/var/tmp/fstab 进行读操作
#chmod o=r /var/tmp/fstab
(若用加减,则要先查看该文件对应用户的权限)
3.创建一个共享目录/home/managers 特性如下
• /home/managers 目录的所有权是 sysmgrs
• sysmgrs 组成员对目录有读写和执行的权限。除此之外的其他用户没有任何权限(root 用户除外)(权限对root没有限制)
• 在/home/managers 目录中创建的文件,其组所有权会自动设置为属于 sysmgrs组
#mkdir 【-pv】 /home/managers (一级目录)
#chown sysmgrs:sysmgrs /home/managers (所有权:最好理解为所属用户和所属组)
#chmod g=rwx /home/managers
若所有权只改所属用户
#chown sysmgrs /home/managers
此时 对所属组改权限 要用到扩展权限
#setfacl -m g:sysmgrs:rwx /home/managers
#chmod o=- /home/managers
或者 #chmod 770 /home/managers
#chmod g+s /home/managers
新手小白,请多多指教~~~