添加权限

假设您创建一个 “Hello world” 的 shell 脚本。当您第一次创建脚本时,它通常是不可执行的。使用 chmod 命令和 +x 选项添加执行权限,如清单 5 所示。

清单 5. 创建可执行的 shell 脚本
[ian@echidna ~]$ echo 'echo "Hello world!"'>hello.sh
[ian@echidna ~]$ ls -l hello.sh
-rw-rw-r--. 1 ian ian 20 Nov 30 13:05 hello.sh
[ian@echidna ~]$ ./hello.sh
bash: ./hello.sh: Permission denied
[ian@echidna ~]$ chmod +x hello.sh
[ian@echidna ~]$ ./hello.sh
Hello world!
[ian@echidna ~]$ ls -l hello.sh
-rwxrwxr-x. 1 ian ian 20 Nov 30 13:05 hello.sh

您可以按类似的方法使用 +r 来设置读权限,使用 +w 设置写权限。事实上,您可以联合使用 rwx。例如,使用 chmod +rwx 将会设置文件的所有读、写和执行权限。chmod 会添加尚未设置的权限。

可选性

您在上面的例子中可能已经注意到,执行权限被设置给所有者、组 和 其他。为了更具可选性,您可以给模式描述加前缀 u 来设置用户权限,g来设置组权限,还有 o 为其他人设置。需要指出的是 a 设置所有用户的权限,这就相当于忽略它。清单 6 显示了如何添加用户和组写和执行权限到 shell 脚本的其他副本。

清单 6. 有选择性地添加权限
[ian@echidna ~]$ echo 'echo "Hello world!"'>hello2.sh
[ian@echidna ~]$ chmod ug+xw hello2.sh
[ian@echidna ~]$ ls -l hello2.sh
-rwxrwxr--. 1 ian ian 20 Nov 30 13:08 hello2.sh
删除权限

有时您需要删除权限,而不单单是添加。简单地将 + 改变为 -,就能删除任何已设置的指定权限。清单 7 显示了如何删除两个 shell 脚本上的其他用户的所有权限。

清单 7. 删除权限
[ian@echidna ~]$ ls -l hello*.sh
-rwxrwxr--. 1 ian ian 20 Nov 30 13:08 hello2.sh
-rwxrwxr-x. 1 ian ian 20 Nov 30 13:05 hello.sh
[ian@echidna ~]$ chmod o-xrw hello*.sh
[ian@echidna ~]$ ls -l hello*.sh
-rwxrwx---. 1 ian ian 20 Nov 30 13:08 hello2.sh
-rwxrwx---. 1 ian ian 20 Nov 30 13:05 hello.sh

请注意,您可以一次改变一个或者多个文件的权限。正如在 topic 103 的文章中看到其他命令一样,您甚至可以使用 -R(或者 --recursive)选项在目录和文件上进行递归操作。

设置权限

现在已经可以添加或者删除权限了,您可能会想,怎样才能只设置一些特殊权限。使用 = 替换 + 或者 - 来完成这个动作。要在上述脚本中设置权限,这样其他用户就没有访问权利,您可以使用 chmod o= hello* 替换我们用于删除权限的命令。

如果您想对用户、组合或其他设置不同的权限,您可以通过逗号分隔不同的表达;例如,ug=rwx,o=rx,或者您可以使用稍后提到的数字权限。

sh变更权限的更多相关文章

  1. 小白学Python-S3-day04-用户信息的增删改查、变更权限

    一.用户信息 文件中每一行就是用户的详细信息,每一行是按照冒号为分隔符分成七段 第一段用户名,第二段密码占位符,第三段UID,第四段GID,第五段是描述信息,第六段是家目录.第七段是 是否 可以登录操 ...

  2. 【sh文件权限】无法启动tomcat -bash: ./startup.sh: Permission denied

    今天在Linux上启动Tomcat,结果弹出:-bash: ./startup.sh: Permission denied 的提示. 这是因为用户没有权限,而导致无法执行, 用命令chmod 修改一下 ...

  3. windows下执行build_native.sh报权限问题

    编辑build_native.sh 在前面加上 chmod 777 -R ./* 

  4. kali linux下运行.sh文件权限不够解决办法

    我要装一个生成免杀的神奇,系统提示权限不够 2 于是我想到了sudo,可还是不行 3 于是找到了方法 chmod   a+x   文件名 4 再运行一下,成功 5 有时有的方法很简答,只要你愿意找.

  5. 执行shell文件是,提示chmod: 更改'./shell1.sh' 的权限: 不允许的操作。

  6. Spring Boot动态权限变更实现的整体方案

    1.前言 ​ 在Web项目中,权限管理即权限访问控制为网站访问安全提供了保障,并且很多项目使用了Session作为缓存,结合AOP技术进行token认证和权限控制.权限控制流程大致如下图所示: ​ 现 ...

  7. CentOS学习笔记--文件权限概念

    Linux 文件权限概念 当你的屏幕出现了『Permission deny』的时候,不要担心,『肯定是权限设定错误』啦!(以下节选自 鸟哥的 Linux 私房菜 第六章.Linux 的文件权限与目录配 ...

  8. Linux档案权限与目录配置

    一.档案权限: Linux 最优秀的地方之一,就在于他的多人多任务环境.而为了让各个使用者具有较保密的档案数据,因此档案的权限管理就变的很重要了. Linux 一般将档案可存取的身份分为三个类别,分别 ...

  9. Linux学习之CentOS(四)----Linux文件属性、所有者、群组、其他组及文件权限操作简要总结

    Linux文件属性.所有者.群组.其他组及文件权限操作简要总结 首先介绍一个重要的知识点:文件属性控制权限 [root@www ~]# ls -al total 156 drwxr-x--- 4 ro ...

随机推荐

  1. 经典算法mark

    在平时找工作的时候,或多或少会遇到一些算法问题,很多都是比较经典或者网上已经流传很久的.只是我们没有接触过,所以不知道怎么解决. 在这儿,我自己总结一些我遇到的一些经典算法,给自己增加一点记忆,也给需 ...

  2. convertquota - 把老的配额文件转换为新的格式

    总览 (SYNOPSIS) convertquota [ -ug ] filesystem 描述 (DESCRIPTION) convertquota 把老的配额文件 quota.user 和 quo ...

  3. WPF动画 - Loading加载动画

    存在问题: 最近接手公司一个比较成熟的产品项目开发(WPF桌面端),其中,在登陆系统加载时,60张图片切换,实现loading闪烁加载,快有密集恐惧症了!!! 代码如下: private void L ...

  4. C#筆記--DataGridView使用

    1.databingcomplete 当数据源的内容更改时,或者当 DataSource.DataMember 或 BindingContext 属性的值更改时,会引发此事件. 例如,如果要基于内容更 ...

  5. JavaSE-10 多态

    学习要点 多态的优势和应用场合 父类和子类之间的类型转换 instanceof运算符的使用 父类作为方法形参实现多态 父类作为返回值实现多态 使用多态的原因 需求描述: 在宠物管理系统中,宠物饿了,需 ...

  6. How To: IDENTIFY THE ASM DEVICE FROM ASMLIB

    使用oracleasm querydisk可以查询到device的major和minor,从而对应. for i in `oracleasm listdisks` do oracleasm query ...

  7. PLSQL连接Oracle 报错ORA-12154:TNS:无法解析指定的连接标识符

    原因是图中第三行数据库应该填ip地址,我填了数据库名! 之前不懂原理,现来填坑,并不是应该填ip,而是填tnsname.ora中配置的名字(红框部分) ​

  8. 转载,Django组件

    知识预览 一 Django的form组件 二 Django的model form组件 三 Django的缓存机制 四 Django的信号 五 Django的序列化 回到顶部 一 Django的form ...

  9. STM32F407 串口通信:分类&常见接口 个人笔记

    串行通信的分类 常见串行通信接口 STM32 UART STM32串口异步通信需要定义的参数: ① 起始位 ② 数据位(8位或者9位) ③ 奇偶校验位(如果有的话是第9位) ④ 停止位(1,15,2位 ...

  10. Qt笔记——各种组件和其他细碎用法

    LineEdit 获取文本:ui->usrLineEdit->text() 清空内容:ui->pwdLineEdit->clear(); 定位光标:ui->usrLine ...