一,用户权限基础知识
1,用户的权限有:
- r:读
- w:写
- x:执行
2,文件的权限:
- r:可以执行cat、head、tail等命令读取文件中的内容
- w:可以用vi/vim或者重定向等操作向文件中写入内容或着修改内容
- x:可以执行文件
3,目录的权限:
- r:可以执行ls命令,来查看目录下有哪些文件
- w:可以在目录执行文件创建和删除等操作
- x:可以执行cd命令
4,用户的角色:
- 属主用户(u)
- 属组用户(g)
- 其他用户(o)
- 全部用户(a)
5,文件的权限位:
-rw-r--r--
- rw- r-- r--一般文件 属主:读写权限 属组:读权限 其他用户:读权限
6,权限位的解释
 1)第一位:表示文件的类型  
 
- -:一般文件
- d:目录文件
- l:链接文件
 2)第二位 - 第四位:表示文件属主所有具有的权限  
 
 3)第五位 - 第七位:表示文件的属组所具有的权限  
 
 4)第八位 - 第十位:表示系统中其他的用户所具有的权限  
 
 
 注意:  
 
 每一类用户的权限顺序都是:读、写、执行  
 
 如果相对应的权限,就会出现字符,没有就会显示 -  
 
 
二,用户的几个命令
1,chown命令
 作用:修改文件的属主  
 
 格式: chown userName [-R] fileName  
 
 选项:  
 
 -R :在修改目录的时候,将目录的目录中的文件一并修改  
 
 例:修改 11.txt 文件的属主 
 
chown tom 11.txt2,chgrp命令
 作用:修改文件的属组  
 
 格式: chgrp  用户名  [-R]  文件名  
 
 选项:  
 
 -R :在修改目录的时候,将目录的目录中的文件一并修改  
 
 例:将 1.txt 文件的属组改成 root 
 
chgrp root 1.txt3,chmod命令
 作用:修改文件的权限  
 
 格式: chmod  赋权 文件名  
 
 方式:  
 
- +:增加权限(在原有的基础上修改)
 例: chmod o+w 11.txt  给其他用户增加写的权限  
 
- -:去除权限(在原有的基础上修改)
 例: chmod g-r 11.txt  
 
- =:将权限修改位指定的权限(和原权限无关)
 例: chmod u=rwx,g=rw,o=r 11.txt  
 
 例:将 11.txt 文件全部用户的权限去掉 
 
chmod a=--- 11.txt4,数字表示权限:
- 0 无权限
- 1 执行
- 2 写
- 4 读
 例:把 11.txt 文件的属主的全改为可读可写可执行 
 
chmod 700 11.txt- 如果是一个数字修改的是其他用户
- 如果是俩个数字修改的是其他用户和属组
- 三个就属主、属组、其他用户
 /etc/skel <<<  用户家目录模板  
 
- 新用户的家目录怎么生成的
        将 /etc/skel 目录复制到 home' 下,改名位和用户名相同  
 
        将这个目录的属主、属组改为该用户  
 
         将目录的权限改位 700  
 
- 假设用户tom cp -r /etc/skel /home/tom chown -R tom.tom /home/tom chmod -R 700 /home/tom/etc/login.defs <<<控制新建用户的默认属性 
#QMAIL_DIR /var/spool/mail指定新用户的邮箱位置PASS_MAX_DAYS 99999新用户密码最长有效期PASS_MIN_DAYS 0新用户修改密码最短时间PASS_MIN_LEN 5用户密码最短长度PASS_WARN_AGE 7密码到期前警告时间长度UID_MIN新建普通用户的默认 uid 最小值UID_MAX新建普通用户的默认 uid 最大值CREATE_HOME默认创建家目录USERGROUPS_ENAB当前用户组中没有用户,是否删除用户组ENCRYPT_METHOD SHA512指定加密算法
 新建用户:  
 
 1. useradd  
 
 2. passwd  
 
 完成的操作:  
 
 1. /etc/passwd 添加一行  
 
 2. /etc/shadow 添加一行  
 
 3. /etc/group 添加一行  
 
 4.  创建用户家目录  
 
 5.  创建用户邮件文件  
 
 
 
 例:创建用户 jerry  
 
 要求:  
 
 uid 777  
 
 主组  hadoop ( 800 )  
 
 附加组  python ( 850 )  hbase ( 860 )  
 
 家目录  /home/jerry  
 
 描述  l am jerry  
 
 密码  123456 ,最少使用 3 天才能再次修改,最长使用 30 天,到期前 5 天发送报警  
 
 
 
 实现步骤  
 
 1. 创建用户基本信息( /etc/passwd )  
 
vi /etc/passwd
jerry:x:777:800:i am jerry:/home/jerry:/bin/bash2.检查用户
id jerry3.使用openssl来生成密码
 格式: openssl passwd -1 -salt "string"  
 
 说明:  
 
 -1  :表示 md5 加密算法  
 
 -salt :表示加密的时候插入杂质(提高安全性) 
 
 
openssl passwd -1 -salt "123456"$1$123456$wOSEtcyiP2N/IfIl15W6Z0
 4. 修改密码文件  
 
 
echo `zhangsan:$1$123456$wOSEtcyiP2N/IfIl15W6Z0:19864:3:30:5:::` >> /etc/passwd
 5. 创建用户组  
 
vim /etc/groupoop:x:800python:x:850:jerryhbase:x:860:jerry
 6. 创建用户家目录  
 
cp -r /etc/skel /home/jerrycd /homechown -R jerry.hadoop /home/jerry/
 7.创建用户邮件  
 
cd /var/spool/mail/touch jerrychmod 660 jerrychown jerry.mail jerry
 8. 测试用户是否可以正常使用  
 
 
三,用户授权
 如果普用用户需要执行特殊操作,有两种方法: 
 
- su - root 切换到root账户进行特殊操作,然后再回返到普通用户
- sudo 命令
1,su命令:
- 优点:使用简单
- 缺点:
- root密码容易泄露
- 普通用户执行操作不可控
2,sudo命令:
 作用:给普通用户授权,让普通用户执行特定的操作  
 
- 缺点:需要进行权限配置
- 优点:
- 不要切换到root用户(不用知道root密码)
- 用户可执行预定的操作
- 可以记录每个用户执行过的命令
 sudo 使用:  
 
- 第一步:通过sudo配置文件为普通用户授权
- 第二步:普通用户执行特殊操作
 sudo 的配置文件:  
 
- /etc/sudoers
 格式:  
 
root ALL=(ALL) ALL用户名 主机 =( 用户名 ) 全部命令%aa 代表给 aa 组授权ALL: 全部命令/usr/bin/touch 授权单个命令/usr/bin/touch,/usr/bin/ls 授权多个命令用 , 隔开/usr/bin/* 授权 /usr/bin 下的全部命令
 修改配置文件:  
 visudo添加一行zhangsan ALL=(root) /usr/bin/touch,/usr/bin/ls用普通用户执行命令:用管理员身份执行需用: sudo 命令 来执行sudo touch /a前面有 % 代表是给用户组授权