# 用户权限下放sudo
- 超级用户下放权限配置:
vim /etc/sudoers        //无语法检测

visudo                        //编辑文件/etc/sudoers,但有语法检测
- 文件内容编辑:
@@
        99 ## Allow student to run useradd in my host
        100 student    desktop126.example.com=(root)    /usr/sbin/useradd
@@
注意:
**怎么去查看主机名?                                                hostname

**怎么查看命令useradd所在的文件?                     which useradd

**怎么实现第一次无密码执行命令?                        NOPASSWD: /usr/sbin/useradd
- 下放权限的用户怎么使用
                sudo useradd hello
# 用户认证信息的控制
- 一个文件: /etc/shadow
(user:passwd:最后一次修改密码时间:最短有效期:最长有效期:警告期:非活跃期:失效期:保留)
- 两个命令:
chage(-d,-m,-M,-W,-I,-E)
passwd(-S,-d,-l,-u,-n,-x,-w,-i)
*****************************************************
# 权限
## 1. 查看文件属性(详细信息)
ls -l
-rw-r--r-- 1 root root 0 Dec 30 21:43 hello
drwxr-xr-x 2 root root 6 Dec 30 21:44 test
第一个字节:代表文件类型
-    //普通文件
d    //目录
s    //socket文件
l    //链接文件

u:文件所有人对于该文件的权限
g:文件所属组成员对该文件所拥有的权限
o:其他人对文件所拥有的权限
r(read):读权限
        对于文件:cat
        对于目录:ls
w(write):写权限
        对于文件:vim,gedit
        对于目录:touch/mkdir,rm/rmdir
x(exec):执行权限
        对于文件:普通文件不需要执行权限;
        对于目录:能否cd到该目录
## 修改文件所有人和所属组
chown
        chown student 文件
        chown student.student 文件
        chown student 目录 -R
        chown student:student 目录 -R
        chown --reference=find.all file
            //参考find.all修改file文件的所有人和所有组
chgrp
        chgrp student 文件
        chgrp student 目录 -R
        chgrp --reference=find.all file
## 修改文件权限
- 通过字符方式修改
chmod      <+|-|=> 目标
chmod     u+r,g-w,o=r /mnt/file
chmod     u=rw,g=r,o-r /mnt/file
- 通过数字方式修改
        r:4 w:2 x:1
        7:rwx 6:rw- 5:r-x 4:r--
        3:-wx 2:-w- 1:--x 0:---
        u:rwx g:rx o:-
练习:
1.新建用户组,shengchan,caiwu,jishu
2.新建用户要求如下:
        * shengchan组是tom用户的附加组
        * caiwu组是harry用户的附加组
        * jishu组是leo用户的附加组
        * 新建admin用户,此用户不属于以上提到的三个部门
3.新建目录要求如下:
        * /pub目录为公共存储目录对所有用户可以读,写,执行,
        但用户只能删除属于自己的文件;
        * /sc 目录为生产部存储目录只能对生产部人员可以写入,
        并且生产部人员所建立的文件都自动归属到shengchan组中;
        * /cw 目录为财务部存储目录只能对财务部人员可以写入,
        并且财务部人员所建立的文件都自动归属到caiwu组中;
        * admin用户能用touch工具在/sc目录和/cw目录中任意建立文件,但不能删除文件。
## 系统默认权限的设定
umask值:系统默认要去掉的权限;注意:默认普通文件不需要执行权限。
- 从系统安全角度来看,umask越大越安全。
- 如何设定umask
        /etc/bashrc
        /etc/profile
## 特殊权限
1). o+t权限:sticky,粘制位
效果:只针对于目录,当目录上有o+t的权限时,所有用户在该目录下均可创建文件,但只有文件所有人和
root用户可以删除该目录下的文件。
设定方式:
        chmod o+t 目录
        chmod 1777 目录
在系统中的应用:
        [root@desktop126 ~]# ll -ld /tmp/
        drwxrwxrwt. 28 root root 4096 Dec 31 01:39 /tmp/
2). u+s权限:suid,冒险位
效果:只针对于二进制可执行文件,该命令发起的程序是以该命令所有人的身份去执行。
设定方式:
        chmod u+s 二进制可执行文件
        chmod 4755 二进制可执行文件
在系统中的应用:
        [root@desktop126 ~]# ll /usr/bin/passwd
        -rwsr-xr-x. 1 root root 27832 Jan 29 2014 /usr/bin/passwd
        [root@desktop126 ~]# ll /etc/shadow
        ---------- 1 root root 1493 Dec 30 21:37 /etc/shadow
3). g+s权限:强制位
效果:
        针对二进制可执行文件:该命令发起的程序是以该命令所有组的身份去执行;
        针对目录:目录新建文件的所属组与该目录的所有组保持一致;
设定方式:
        chmod g+s 文件|目录
        chmod 2755 文件|目录
## ACL权限:file access control list,文件系统访问控制列表
- 如何查看文件是否有acl权限?
        ll /etc/passwd
        -rw-r--r--<.> 1 root root 2173 Jan 6 21:08 /etc/passwd
        //注释:第11位为.时代表没有acl权限;为+时代表有acl权限。
- setfacl
        setfacl -m ::rwx 文件名
                //添加或者修改acl权限
        setfacl -m d:::rwx 目录名
                //添加或者修改目录下新建文件默认acl权限
        例子:
        setfacl -m u:user2:rw hello
                //指定user2用户对hello文件有读写权限
        setfacl -m g:user2:rw hello
                //指定user2用户组对hello文件有读写权限
        setfacl -m m:r hello
                //指定该文件中最大生效的权限,但不稳定,会随着其他的设定而修改
        setfacl -x : 文件名
                //删除某一个acl权限
        setfacl -x d:: 目录名

        //删除某目录下新建文件默认的一个acl权限
例子:
        setfacl -x u:user2 hello
                //删除user2用户对hello文件的特殊权限
        setfacl -x g:user2 hello
                //删除user2用户组对hello文件的特殊权限
        setfacl -b 文件名
                //删除该文件所有的acl权限
        setfacl -b 目录名
                //删除某目录下新建文件默认的所有的acl权限
例子:
        setfacl -b hello
- getfacl
 例子:
        [root@server136 ~]# getfacl hello
        # file: hello            //文件名
        # owner: root        //文件所有人
        # group: root        //文件所属组
        user::rw-               //文件所有人对该文件的权限
        user:user1:rw-     //特定用户user1对该文件的权限
        user:user2:rw-       

        group::r--                //文件所属组成员对该文件的权限
        group:user2:rw-    //特定用户组user2对该文件的权限
        mask::rw-              //默认给最大的权限
        other::r--                //其他人对该文件的权限
注意:
        - umask ---022 777-022=755 644
        - mask---系统默认最多要给的权限;
        - rhel6版本及以前的版本不支持acl功能;
系统默认要去掉的权限;
#2.查找文件
## find命令
find 目录 寻找的条件 条件内容
    寻找的条件:
        -name  //根据
        -user
        -group
        -perm     //根据权限寻找(-666,并且;/666,或者)
        -type      //man find(搜寻-type)
        -mmin    //最后修改时间(-4,4min以内修改的)
        -size      //根据文件大小
        -maxdepth
        -mindepth
条件的连接:
        -o            //或者

        -a            //并且

对找到的所有执行:
        -exec    
                        eg: find /etc -name passwd -exec cp {} /mnt \;
*****练习:
1. 找出系统中包含特殊权限的文件;
2. 找出/home目录下所有的隐藏普通文件;
3. 将/etc目录下文件大于100K 的文件复制/newetc目录中;
4. 在/etc目录下查找,文件中含有数字并且以.conf结尾的普通文件,查找深度<3,找到后复制到/mnt目
录下
## locate 查找文件
- 速度更快,但新建文件必须更新后才能找到
- 更新方式:updatedb
#3. 打包
tar cvf etc.tar /etc
        c: create
        v:显示过程
        f:指定包名
tar tf etc.tar
        t:显示包的内容
tar f etc.tar -r westosfile
        -r:向包中添加文件
tar f /root/etc.tar --get westosfile
        --get:获取包中的westosfile文件
tar f /root/etc.tar --delete westosfile
        --delete:删除包中的westosfile文件
tar xf etc.tar -C /mnt/
        x:解开包
        -C:指定解包的目录
#4. 压缩
## gz格式压缩:
tar cvf etc.tar /etc/        //对/etc目录打包,并指定名称为etc.tar

du -sh etc.tar                //查看etc.tar包的大小gzip etc.tar
du -sh etc.tar.gz           //对etc.tar进行gz格式压缩

gunzip etc.tar.gz          //查看压缩后etc.tar.gz的大小
tar zcf etc.tar.gz /etc
tar zxf etc.tar.gz
## bz2格式压缩:
        bzip2 etc.tar
        bunzip2 etc.tar.bz2
        tar jcf etc.tar.bz2 /etc/
        tar jxf etc.tar.bz2
## xz格式压缩:
        xz etc.tar
        unxz etc.tar.xz
        tar Jcf etc.tar.xz /etc/
        tar Jxf etc.tar.xz -C /mnt
## zip格式压缩:
        zip -r etc.tar.zip etc.tar
        unzip etc.tar.zip
*****练习:
1).运行tar命令对/home目录进行存档另存,存储格式及位置为
/backups/user-YYYY-MM-DD.tar.gz,从而保证用户信息的保密与安全;
2). 将上述打包的/backups/user-YYYY-MM-DD.tar.gz解压到/mnt目录下;
作业:
1). (密码管理)某管理员建立一用来管理帐号的用户admin,满足以下条件:
- uid=7777,gid=7777,用户描述为“系统管理员”;
- 新建用户组bank1,bank2,使新建的用户组为admin用户的附加组;
- 设置admin用户的密码为“adminpassword”;
- 修改密码使用天数为0,使该用户首次登陆必须改密码;
- 修改密码最短有效期为7,使该用户设置密码等待7天后才可以再次更改密码;
- 给admin用户下放权限,使得该用户可以新建用户(无密码方式)。