权限管理
1、核心
目录和文件
2、谁用?
三种角色:
属主u(文件的所有者,只有一个)user
属组g(文件所属的组)group
其他人o(无关)other
3、怎么用?
读r(read)
写w(write)
执行x(execute)
4、查看文件/目录的权限(ls -l)
[root@server ~]# ls -l /etc/passwd
- rw- r-- r--. 1 root root 1047 Sep 28 11:16 /etc/passwd
- | rw- r– r–. | 1 | root | root | 1047 | Sep 28 11:16 | /etc/passwd |
---|---|---|---|---|---|---|---|
① | ② | ③ | ④ | ⑤ | ⑥ | ⑦ | ⑧ |
[root@server ~]# ls -l /etc/passwd
①:类型,-为普通文件,d为目录
②:权限
③:文件数(inode)
④:属主
⑤:属组
⑥文件大小(B)
⑦创建/修改时间
⑧文件/目录名
5、修改文件的所属chown( chown - change file owner and group)
格式:chown root:staff /u
[root@localhost ~]# mkdir /dir1
[root@localhost ~]# groupadd grp1
[root@localhost ~]# useradd us1
[root@localhost ~]# useradd -G grp1 us2
[root@localhost ~]# man chown
[root@localhost ~]# ll -d /dir1
drwxr-xr-x. 2 root root 6 Sep 30 04:22 /dir1
[root@localhost ~]# chown us1:grp1 /dir1/
[root@localhost ~]# ll -d /dir1
drwxr-xr-x. 2 us1 grp1 6 Sep 30 04:22 /dir1
6、修改权限chmod ( chmod - change file mode bits)
方法一:
所属+-=权限
设置/dir1的权限,属主只读,属组只读,其他人无权限访问
[root@localhost ~]# chmod u=r--,g-x,o=--- /dir1
[root@localhost ~]# ll -d /dir1
新建文件file1,取消所有权限,设置属主完全权限,属组读写,其他人只读
[root@localhost ~]# touch file1
[root@localhost ~]# ll file1
[root@localhost ~]# chmod u+x file1
[root@localhost ~]# chmod g+w file1
方法二:数字法
r=4
w=2
x=1
7、权限对目录和文件的影响
8、解决问题的流程
①目录/文件
②建组
③建用户
④修改所属
⑤修改权限
命令 | 文件 | 目录 |
---|---|---|
新建 | touch file | mkdir dir |
拷贝 | cp file1 file2 | cp -r dir1 dir2 |
删除 | rm -f file | rm -rf dir |
移动 | mv file1 file2 | mv dir1 dir2 |
项目练习:
项目1:
Geecy软件开发公司即将开始在Linux系统上进行两个项目的开发。开发人员David和Peter组成一个小组,负责A项目的开发;开发人员Jack和Mike组成另一个小组,负责B项目的开发。系统管理员Ray需要为这四名开发人员分别建立用户帐号,并满足以下要求:
(1)建立目录“/project_a”,该目录里面的文件只能由David和Peter两人读取、增加、删除、修改以及执行,其他用户不能对该目录进行任何的访问操作;
(2)建立目录“/project_b”,该目录里面的文件只能由Jack和Mike两人读取、增加、删除、修改以及执行,其他用户不能对该目录进行任何的访问操作;
(3)建立目录“/project”,该目录里面的文件只能由David、Peter、Jack和Mike四人读取、增加、删除、修改以及执行,其他用户只可以对该目录进行只读的访问操作。
解决方案参考:
? 建立目录:
# mkdir /project
# mkdir /project_a
# mkdir /project_b
? 增加用户组:
# groupadd prj
# groupadd prj_a
# groupadd prj_b
? 增加用户:
# useradd -G prj_a,prj david
# useradd -G prj_a,prj peter
# useradd -G prj_b,prj jack
# useradd -G prj_b,prj mike
? 修改用户密码:
# echo "redhat" | passwd --stdin david
# echo "redhat" | passwd --stdin peter
# echo "redhat" | passwd --stdin jack
# echo "redhat" | passwd --stdin mike
? 修改目录的组拥有者:
# chown :prj /project
# chown :prj_a /project_a
# chown :prj_b /project_b
? 修改目录权限:
# chmod 774 /project
# chmod 770 /project_a
# chmod 770 /project_b
项目2:
某软件开发公司即将开始在Linux系统上进行项目的开发。要实现的环境是,公司有软件开发,网络和技术支持3个部门,对应建立3个用户组为soft,network,support。
三个部门里各有2个用户,分别为soft01,soft02;network01,network02;support 01,support 02。
就公司的具体情况建立相应的目录及访问权限:
1.首先服务器采用用户验证的方式,每个用户可以访问自己的主目录,并且只有该用户能访问主目录,并具有完全的权限,而其用户无任何权限。
2.建立一个soft的文件夹,只能由soft组的用户读取、增加、删除、修改以及执行,其他用户不能对该目录进行任何的访问操作;
3.建立一个network的文件夹,只能由network组的用户读取、增加、删除、修改以及执行,其他用户不能对该目录进行任何的访问操作;
4.建立一个support的文件夹,只能由support组的用户读取、增加、删除、修改以及执行,其他用户不能对该目录进行任何的访问操作;
5.建立一个network_support的文件夹,只能由network和support组的用户读取、增加、删除、修改以及执行,其他用户不能对该目录进行任何的访问操作;
6.建议一个公共的只读文件夹public,该目录里面的文件只能由soft,network,support个用户组读取、增加、删除、修改以及执行,其他用户只可以对该目录进行只读的访问操作。
思考题
创建用户和用户组
请按照以下要求创建用户、用户组:
新建一个名为adminuser的组,组id为40000
新建一个名为natasha的用户,并将adminuser作为其附属组
新建一个名为harry的用户,并将adminuser作为其附属组
新建一个名为sarah的用户,其不属于adminuser组,并将其shell设置为不可登陆shell
natasha、harry和sarah三个用户的密码均设置为glegunge
在/home目录下创建名为admins的子目录,并按以下要求设置权限:
/home/admins的所属组为adminuser
该目录对adminuser组的成员可读可执行可写,但对其他用户没有任何权限,但root不受限制