有的时候,我们可能希望某些文件只有部分用户可以访问,就可以借助用户组来创建了。
一般来说,每个用户创建的时候都默认会有属组,这个组就是自己:
$ id
uid=1003(guest) gid=1003(guest) groups=1003(guest)
先创建两个用户:
$ ls -lh
total 8.0K
drwxrwx--- 2 lilei lilei 4.0K Jan 26 15:50 lilei
drwxrwx--- 2 sxiang sxiang 4.0K Jan 26 15:46 sxiang
查看用户权限:
$ ls -lh /home
total 12K
drwxrwx--- 2 lilei lilei 4.0K Jan 26 15:54 lilei
drwxrwx--- 2 sxiang sxiang 4.0K Jan 26 15:46 sxiang
drwxrwx--- 2 xiaoming xiaoming 4.0K Jan 26 15:55 xiaoming
切换xiaoming 用户尝试进入lilei 家目录:
xiaoming 16:00:29 /home
$ cd lilei
bash: cd: lilei: Permission denied
果然不行。
首先创建一个用户组:
# 创建用户组
root 16:09:08 /home
$ groupadd team
# 查看
$ cat /etc/group | grep team
team:x:1004:
接着添加:
$ usermod -G team xiaoming
root 16:10:49 /home
$ usermod -G team guest
root 16:10:59 /home
$ cat /etc/group | grep team
team:x:1004:xiaoming,guest
看看xiaoming 能否访问同一组的guest:
$ ls -lh
total 16K
drwxrwx--- 2 guest guest 4.0K Jan 26 16:09 guest
drwxrwx--- 2 lilei lilei 4.0K Jan 26 15:54 lilei
drwxrwx--- 2 sxiang sxiang 4.0K Jan 26 15:46 sxiang
drwxrwx--- 2 xiaoming xiaoming 4.0K Jan 26 15:55 xiaoming
按理来说同一属组的权限已经全部打开:
$ id
uid=1003(guest) gid=1003(guest) groups=1003(guest),1004(team)
guest 16:12:06 /home
$ cd xiaoming/
bash: cd: xiaoming/: Permission denied
惊了!竟然还是不行。
再复习一下权限的编码:
看看home 下的属组:
$ ls -lh
total 16K
drwxrwx--- 2 guest guest 4.0K Jan 26 16:09 guest
drwxrwx--- 2 lilei lilei 4.0K Jan 26 15:54 lilei
drwxrwx--- 2 sxiang sxiang 4.0K Jan 26 15:46 sxiang
drwxrwx--- 2 xiaoming xiaoming 4.0K Jan 26 15:55 xiaoming
原来属组没有改啊:
chown :team xiaoming
chown :team guest
$ ls -lh
total 16K
drwxrwx--- 2 guest team 4.0K Jan 26 16:09 guest
drwxrwx--- 2 lilei lilei 4.0K Jan 26 15:54 lilei
drwxrwx--- 2 sxiang sxiang 4.0K Jan 26 15:46 sxiang
drwxrwx--- 2 xiaoming team 4.0K Jan 26 15:55 xiaoming
修改完毕后再试试:
$ su xiaoming
xiaoming 16:20:19 /home
$ cd lilei/
bash: cd: lilei/: Permission denied
xiaoming 16:20:22 /home
$ cd guest/
xiaoming 16:20:26 /home/guest
就可以进入同一属组的目录了。
因此在设置用户组时一定要注意修改文件的所属用户组。虽然用户可以加入多个用户组,可是文件只能属于一个用户和一个用户组。