用户管理与权限
实验目的:
掌握用户与组管理
掌握高级权限的使用
掌握访问控制列表
实验步骤:
步骤一、用户管理
创建用户useradd的几个参数:
-c描述
-d 家目录
-u uid号
-g 私有组
-G 把这个用户附加到其它组中去
-s shell环境变量 /bin/bash /sbin/nologin它无法登陆到本地,远程用户可以
创建一个用户user2,我们怎么样知道我们创建了user 2了呢?Id一下用户
[root@freeit ~]# useradd user2
[root@freeit ~]# id user2
uid=1001(user2) gid=1001(user2) 组=1001(user2)
我们也可以查看用户的配置文件/etc/passwd,里面记载这所有用户的信息
[root@freeit ~]#vim /etc/passwd
在/etc/passwd下,有三种用户:
第一种:超级管理员root,uid为0
第二种:系统服务用户,uid为1~999
第三种:(红帽7)普通(本地)用户,uid为1000往后
我们的红帽6系统服务用户uid是1-499.
Usermod 修改服务用户
Userdel –r 删除服务用户
-r参数:
创建一个用户或组大概会在这六个地方创建信息
/etc/passwd /etc/shadow /etc/group /etc/gshadow
/home /var/spool/mail
不添加-r参数删除,会删除这些/etc/passwd /etc/shadow /etc/group /etc/gshadow配置信息,但不删除/home /var/spool/mail这两个配置信息
添加-r参数删除会删除所有的配置信息
步骤二、组管理
创建一个dongshihui组,对这个组设置一个密码
[root@freeit ~]#groupadd dongshihui
[root@freeit ~]#gpasswd dongshihui
正在修改 dongshihui 组的密码
密码:
切换到普通用户user1上,把user1加入到dongshihui组中
[root@freeit ~]# su - user1
ABRT has detected 1 problem(s). For moreinfo run: abrt-cli list
[user1@freeit ~]$ newgrp dongshihui
密码:
[user1@freeit ~]$ id
uid=1000(user1) gid=1002(dongshihui) 组=1000(user1),1002(dongshihui)环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[user1@freeit ~]$
Groupdel -r删除组
步骤三、高级权限
SUID权限:
SUID权限仅仅只对可执行文件(命令文件)有效,对普通文件无意义,只出现在第三位,如果一个可执行文件有SUID权限,那么其它用户在执行这个可执行文件过程时会临时拥有这个可执行文件的所有者权限
[root@freeit mnt]# ll /bin/ls
-rwxr-xr-x. 1 root root 117616 1月 25 2014 /bin/ls
[root@freeit mnt]# ls -ld /root
dr-xr-x---. 14 root root 4096 5月 4 16:56 /root
[root@freeit mnt]# su - user1
上一次登录:一 5月 4 17:15:44 CST 2015pts/0 上
[user1@freeit ~]$ ls /root
ls: 无法打开目录/root: 权限不够
[user1@freeit ~]$ touch /root/user1
touch: 无法创建"/root/user1":权限不够
[user1@freeit ~]$ exit
登出
[root@freeit mnt]# chmod u+s /bin/ls
[root@freeit mnt]# chmod u+s /bin/touch
[root@freeit mnt]# ll /bin/ls
-rwsr-xr-x. 1 root root 117616 1月 25 2014 /bin/ls
[root@freeit mnt]# ll /bin/touch
-rwsr-xr-x. 1 root root 62432 1月 25 2014 /bin/touch
[root@freeit mnt]# su - user1
上一次登录:一 5月 4 17:19:35 CST 2015pts/1 上
[user1@freeit ~]$ ls /root
anaconda-ks.cfg test1 公共 模板 视频 图片 文档 下载 音乐 桌面
[user1@freeit ~]$ touch /root/test1
[user1@freeit ~]$ ll /root
总用量 4
-rw-------. 1 root root 1503 4月 27 17:37 anaconda-ks.cfg
-rw-rw-r--. 1 root user1 0 5月 4 17:21 test1
drwxr-xr-x. 2 root root 6 4月 27 09:47 公共
drwxr-xr-x. 2 root root 6 4月 27 09:47 模板
drwxr-xr-x. 2 root root 6 4月 27 09:47 视频
drwxr-xr-x. 2 root root 6 4月 27 09:47 图片
drwxr-xr-x. 2 root root 6 4月 27 09:47 文档
drwxr-xr-x. 2 root root 6 4月 27 09:47 下载
drwxr-xr-x. 2 root root 6 4月 27 09:47 音乐
drwxr-xr-x. 2 root root 6 4月 27 09:47 桌面
SGID权限:
SGID权限仅仅只对可执行文件(命令文件)有效,对普通文件无意义,只出现在第6位,如果一个可执行文件有SGID权限,那么其它用户在执行这个可执行文件过程中会临时拥有这个可执行文件的所属组权限。
[root@freeit mnt]# ll /bin/ls
-rwxr-xr-x. 1 root root 117616 1月 25 2014 /bin/ls
[root@freeit mnt]# chmod g+s /bin/ls
[root@freeit mnt]# ll /bin/ls
-rwxr-sr-x. 1 root root 117616 1月 25 2014 /bin/ls
[root@freeit mnt]# su - user1
上一次登录:一 5月 4 17:20:57 CST 2015pts/1 上
[user1@freeit ~]$ ls /root
anaconda-ks.cfg test1 公共 模板 视频 图片 文档 下载 音乐 桌面
sticky权限:
t权限仅仅只对目录有效,对任何文件无意义!只出现在第9位!
如果一个目录有t权限,那么只有文件所有者和root用户才能删除文件,其它用户无法执行删除文件的操作!
假如/tmp 目录权限是rwxrwxrwt
root用户可以在这个目录下创建和删除任何文件!
但是普通用户user1只能删除自己创建的文件,而不能删除user2用户的文件(即使user1对user2用户的文件的w权限)!
实际应用: 一般用于重要目录设置一个t权限.这样可以防止误删除文件.
[root@freeit mnt]# ls -ld /tmp
drwxrwxrwx. 18 root root 4096 5月 4 17:46 /tmp
[root@freeit mnt]# chmod o+t /tmp
[root@freeit mnt]# ls -ld /tmp
drwxrwxrwt. 18 root root 4096 5月 4 17:46 /tmp
[root@freeit mnt]# cd /tmp
[root@freeit tmp]# su user1
[user1@freeit tmp]$ touch user1
[user1@freeit tmp]$ su user2
密码:
[user2@freeit tmp]$ touch user2
[user2@freeit tmp]$ ll
-rw-rw-r--. 1 user1 user1 0 5月 4 17:59 user1
-rw-rw-r--. 1 user2 user2 0 5月 4 18:00 user2
[user2@freeit tmp]$ rm -rf user1
rm: 无法删除"user1":不允许的操作
步骤四、文件访问控制列表
传统权限设置无法针对单个用户来设置权限!
FACL(File AccessControl List)就是对传统权限的补充,可以实现针对单个用户做单独权限设置
getfacl file|dir 查看这个文件或目录的权限(针对单个用户的)
setfacl -m u|g|o|a:username|groupname:r|w|x file|dir 设置权限
在/tmp目录下有个test文件,设置user1组用户有rwx权限,user1用户有rw权限,user2用户有r权限,如果做了?
[root@freeit /]# cd /tmp
[root@freeit tmp]# touch test
[root@freeit tmp]# ll
总用量 0
-rw-r--r--. 1 root root 0 5月 8 11:22 test
[root@freeit tmp]# getfacl test
# file: test
# owner: root
# group: root
user::rw-
group::r--
other::r—
可以看到getfacl查看的权限就是传统权限,只不过换了个形式,现在我们对test文件设置下访问控制列表,再来查看。
[root@freeit tmp]# setfacl -m g:user1:rwx test
[root@freeit tmp]# setfacl -m u:user1:rw test
[root@freeit tmp]# setfacl -m u:user2:r test
[root@freeit tmp]# getfacl test
# file: test
# owner: root
# group: root
user::rw-
user:user1:rw-
user:user2:r--
group::r--
group:user1:rwx
mask::rwx
other::r--
用getfacl查看的权限其中既有传统权限又有Facl权限
注意事项:
在红帽6系统中,后来创建的分区时ext4格式的,这个分区时不带Facl功能的
在红帽7系统中,分区只要时xfs格式的,这些分区都会带Facl功能的
步骤五、权限委派
权限委派就是将一部分功能委派给其它人
查看/home,发现只有student一个用户,切换student用户下,useradd234用户,权限拒绝
[root@desktop30 Desktop]# cd /home
[root@desktop30 home]# ls
student
[root@desktop30 home]# su student
[student@desktop30 home]$ useradd 234
bash: /usr/sbin/useradd: Permission denied
修改/etc/sudoers文件,使得student用户有执行useradd命令的权限
[root@desktop30 Desktop]# vim /etc/sudoers
## Next comes the main part: which userscan run what software on
## which machines (the sudoers file can beshared between multiple
## systems).
## Syntax:
##
## user MACHINE=COMMANDS
##
## The COMMANDS section may have otheroptions added to it.
##
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
student ALL=(ALL) /usr/sbin/useradd 委派给student用户有执行useradd命令的权限
修改了/etc/sudoers文件,赋予student有执行useradd命令的权限
[student@desktop30 home]$ useradd 234
bash: /usr/sbin/useradd: Permission denied 为什么还是权限拒绝?
[student@desktop30 home]$ sudo useradd 234 权限委派在执行的时候前面一定要加一个sudo命令,否则是无效的
We trust you have received the usuallecture from the local System
Administrator. It usually boils down tothese three things:
#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.
[sudo] password for student: 输入student用户的密码
[student@desktop30 home]$
[student@desktop30 home]$ ls
234 student
student用户创建用户234成功,成功委派了用户student有创建用户的权限