二shell文件权限和脚本执行

Posted vnx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二shell文件权限和脚本执行相关的知识,希望对你有一定的参考价值。

一、认识权限和用户管理
1、查看权限
 
权限类型:
    1、r 读
    2、w 写
    3、x 可执行
 
Linux用户
    1、所有者(u)
    2、所属组(g) (所有者及所有者所在组的全部用户)
    3、其他用户(o)(其他组的所有用户(包括文件所有者))
    4、所有用户(a)
 
文件权限解读
    文件类型 所有者权限  所属组权限  其他用户权限            所有者  用户所在的组  文件大小  创建时间  文件名
[[email protected] ~]# ll
总用量 100
-rw-------. 1 root root 1752 5月 22 00:29 anaconda-ks.cfg
-rw-r--r--. 1 root root 44184 5月 22 00:28 install.log
[[email protected] ~]# head -1 /etc/passwd
root:x:0:0:root:/root:/bin/bash
[[email protected] ~]# head -1 /etc/group
root:x:0:
[[email protected] ~]# cat /etc/group
root:x:0:
bin:x:1:bin,daemon
二、用户与权限
1、用户管理
(1)、用户查看
       
 id  username

(2)、用户添加 

 useradd  username

创建用户,同时会产生新的用户组,并且用户属于该组

(3)、用户删除
    
userdel  -r  username 
2、用户组
用户与组的关系:
(1)、把用户加入组
[[email protected] ~]# id test2
uid=501(test2) gid=501(test2) 组=501(test2)
[[email protected] ~]# gpasswd -a test2 root          #把用户test2加入到root组
Adding user test2 to group root
[[email protected] ~]# id test2
uid=501(test2) gid=501(test2) 组=501(test2),0(root)  #test2同时属于两个组
    同时属于两个组后,两个组的权限都具备,即两个组权限之和
 
(2)、把组中用户删除
[[email protected] ~]# gpasswd -d test2 root
Removing user test2 from group root
3、权限分配
    第一二种修改过用户对文件的权限
(1)、chmod权限分配
    a、字母权限分配
         chmod  u+x file
         chmod   u-x file
    (对用户单独设置权限用此方式。)
 
    b、数字权限
        chmod 755  file
数字对应权限如下:
    r        4
    w       2
    x        1
755        rwx r-x r-x
754        rwx r-x r--
默认644
(当所有用户的权限都要修改时用词方法)
    缺点:不能对用户的细化权限分配
 
(2)、acl
 
权限细化需求
1、root file rw-
2、root file r--
3、other file r--
4、user1 file rw
5、user2 file rx
6、user3 file wx    (不能查看,但是能写入)
7、user4 file rwx  (rwx只是对内容有权限,无法删除)
 
acl权限分配:
1、setfacl设置文件权限 
setfacl -m u:user1:rw file01.txt 
setfacl -m u:user2:rx file01.txt 
2、getfacl查看文件权限
getfacl file01.txt  
3、删除文件权限
    setfacl -x user:user4 file01.txt
4、清空文件权限
    setfacl -b file01.txt           擦除对文件所有的权限(恢复文件的原始状态权限:644)
 
5、创建和删除文件权限:
#需要对目录设置acl权限即可
 setfacl -m u:user4:rwx mnt/
注意:
dr-xr-xr-x.   2 root root  4096 5月  24 14:19 mnt
切换到目录的一瞬间需要目录的x权限,否则不能切换目录。
 
6、如何对目录及子目录和文件设置acl权限
setfacl -m u:user4:rwx -R /mnt/                R参数代表递归
 
7、目录中后期添加的子目录和文件如何继承父目录的权限
方法一: setfacl -m u:user4:rwx -R /mnt/     繁琐                       (应用实例:网站文件管理)
方法二:setfacl -m d:u:user4:rwx -R /mnt/         d代表default权限,会继承默认权限
 
用户对程序、命令的权限
(3)、sudo
设置用户对命令的执行权限-visodo:
1、设置:
# visudo
user4 localhost=/usr/sbin/useradd,/usr/sbin/userdel
 
2、使用有密码的sudo授权命令
$ sudo /usr/sbin/useradd user5
$ sudo /usr/sbin/userdel -r user5
 
3、使用无密码的sudo授权命令  (使用情境:在脚本里输入命令)
$ sudo /usr/sbin/useradd user6
$ sudo /usr/sbin/userdel -r user6
设置形式: 
user5 ALL=NOPASSWD: /usr/sbin/useradd,/usr/sbin/userdel
sudo  ALL=NOPASSWD: /usr/sbin/userdel -r user4
 
 
三、Shell文件权限和脚本执行
1、Shell脚本
    (1)、用途:完成特定的、较复杂的系统管理任务
    (2)、格式:集中保存多条Linux命令,普通文本文件
    (3)、执行方式:按照预设的顺序执行解释执行
 
2、编写可执行的Shell脚本
   (1)、 建立包含执行语句的脚本文件
   (2)、 #脚本文件中包含的内容
            运行环境设置:#!/bin/bash
            注释信息:以#开始的说明性文字
            可执行的Linux命令行
    (3)、为脚本文件添加可执行权限
3、执行Shell脚本的方式:
    (1)、bash test.sh          #不需要写解析器,并且不需要给脚本设置执行权限
    (2)、./test.sh                #需要写解析器,需要给脚本设置执行权限
4、一个Shell脚本例子:
#!/bin/bash
#tesh.sh
 
echo disk space:
echo
df -Th
echo
echo free space:
free -m
echo
echo users:
for i inls /home
do
  id -u $i
done
运行Shell脚本:
    直接执行具有x权限的脚本文件:例如:./test.sh
    使用指定的解释器程序执行脚本内容:例如:bash test.sh 、sh test.sh
 
5、Shell脚本示例:
    每周五17:30清理FTP服务器的公共共享目录
        检查/var/ftp/pub/目录,将其所有子目录及文件的详细列表、当时的时间信息追加保存到/var/log/pubdir.log
文件中,然后清空该目录
yum -y install vsftpd*
#!/bin/bash
#ftp目录统计
 
date >>/var/log/pubdir.log
 
ls -lhR /var/ftp/pub >>/var/log/pubdir.log
 
rm -rf /var/ftp/pub
命令执行通过后即可添加到任务计划中:
crontab -e   
查看任务计划:
crontab -l

 

 
 
 

以上是关于二shell文件权限和脚本执行的主要内容,如果未能解决你的问题,请参考以下文章

shell文件权限和脚本执行

shell脚本应用for,while和case应用

shell脚本应用for,while和case应用

linux下权限问题,如何让无root管理员权限的用户执行需root权限执行的脚本文件

linux下权限问题,如何让无root管理员权限的用户执行需root权限执行的脚本文件

Linux入门第二篇:shell命令及运行原理和Linux权限的概念