Linux系统上对文件的权限有着严格的控制,如果想对某个文件执行某种操作,必须具有对应的权限才可执行成功。
Linux下文件的权限类型一般包括读,写,执行。对应字母为 r、w、x。Linux下权限的粒度有 拥有者 、所属组 、其它人 三种。每个文件都可以针对三个粒度,设置不同的rwx(读写执行)权限。通常情况下,一个文件只能归属于一个用户和组, 如果其它的用户想有这个文件的权限,则可以将该用户加入具备权限的群组,一个用户可以同时归属于多个组。

在Linux下输入ll 即可查看文件类型
Linux系统下,不是以文件后缀区分文件类型的,而是以ll显示的第一个字符区分文件类型。
Linux系统下,文件类型有:

权限=人+事物
Linux系统中,人分三类
个人觉得者三者可以换种说法更好理解
拥有者:我 所属组:我的团队 其他用户:其他人
Linux系统中,文件的权限属性
这里需要注意 人与root和普通用户是不冲突的,并且是相互补充的。
root可是拥有者、所属组、其他用户
普通用户也可以是拥有者、所属组、其他用户
一:更改文件属性权限
chmod 修改文件属性权限 (两种方法)
chmod u+rwx,g+rwx,o+rwx Linux.text
(u代表拥有者的权限,g代表所属的权限,o代表其他人的权限)
这段代码代表 讲拥有者,所属组,其他人的权限全改为可读,可写,可执行

原来的权限

修改

修改后(这里之所以变颜色,是因为权限改为了可执行,所以会变绿色)
当然 也有更方便的方法
这里我们先讲此文件所有的权限,全部去掉


这里我再将它的所有权限启用


用八进制(理解上可以当作二进制)
chmod 777 Linux.txt 一个7代表拥有者,以此类推
7为 3种权限均开 0为三种权限均关 3为开启w,x(写,执行) 4代表开始r(读) 5代表r,x(读,执行)
以这些数组组合 我这里举个栗子 : 745 代表:拥有者:三种权限均开 rwx 所属组代表开启 r 其他人代表开启r,x 合起来就为 -rwxr----x
附加:如果我想进入一个目录,需要什么权限?
答:x(可执行权限) (易错,常考)
总结:两种方法 第一种较麻烦,但更直观,第二种方法较方便,但不易于观察 (两种方法各有优缺点,适合自己的才最重要)root可以直接无视所有权限!!!
因为修改这种权限是需要提高权限的,要用到sudo 但使用这个代码是需要配置文件,添加亲近用户的,较麻烦
当然,那可以直接进入root,修改这些
在root用户下
修改拥有者 chown(注意不是chmod)

将此文件的拥有者修改为 xxx (其他的普通用户)
修改所属组

将此文件的所属组修改为 xxx
两个也可以连起来

将拥有者修改给xxx1,所属组修改给xxx2
附加:文件的床架你这和拥有者一定是同一个人吗?
答:不一定,可以创建后给其他人(常考!)
附加:一个文件的拥有者,不一定能用上这个文件对吗?
答:对,我在一个目录下的一个文件的拥有者给你,但目录的访问权限(x)不给你 ,你照样访问不了这个文件
比方说:有一个房间内的电脑是你的,但房间的锁住的,钥匙不给你, 你进不去这个房间,照样用不上这台电脑
如果目录没有r权限,允许进入,允许在该目录下创建(写入)一个文件,不允许查看。
如果目录没有w权限,允许进入,允许在该目录下查看文件列表,但是不允许创建文件。
如果同时没有rw权限,允许进入,但不允许创建和查看目录下的文件的列表(不是文件内容!文件内容是否可以查看,文件自己的权限决定)
权限掩码的作用是根据用户的需求屏蔽掉不希望给别人的权限,比如普通文件的权限是“-rw-rw-rw-”,所有用户对文件都享有读写权限,而这带来的问题就是文件可以被任何人修改从而导致文件数据被篡改导致数据丢失。 这个时候用户可以通过设置文件掩码来屏蔽到本需要赋予其他用户的特定权限。 权限掩码在每个Linux系统里都有默认值,多数为0022或0002,当然用户也可以自己修改权限掩码的值。
比方说,我们先随便创建一个文件,查看它初始的权限是什么

这个可以叫做初始权限或者最终权限
一般普通文件默认权限为666 (rw-rw-rw-)目录文件默认权限为 777 (rwxrwxrwx)
那为什么不同呢?因为 最终权限=默认权限 & (~umask) 公式
比如权限掩码为0002 普通权限为 666
先按位取反权限掩码 000 000 010 取反 111 111 101 再与默认权限按位与 (&)(两个二进位都为1时,结果位才为1)
110 110 110 默认权限
111 111 101 权限掩码
------------------ 按位与 & (两个二进位都为1时,结果位才为1)
110 110 100 即 664 即 rw-rw-r--
粘滞位(Stickybit),又称粘着位,是Unix文件系统权限的一个旗标。最常见的用法在目录上设置粘滞位,
也只能针对⽬录设置,对于⽂件⽆效。则设置了粘滞位后,只有目录内文件的所有者或者root才可以删除或移动
该文件。如果不为目录设置粘滞位,任何具有该目录写和执行权限的用户都可以删除和移动其中的文件。实际应
用中,粘滞位一般用于/tmp目录,以防止普通用户删除或移动其他用户的文件。
在Linux系统中⽐较典型的例⼦就是“/tmp”、 “/var/tmp”⽬录。这两个⽬录作为Linux系统的临时⽂件
夹,权限为“rwxrwxrwx”,即允许任意⽤户、任意程序在该⽬录中进⾏创建、删除、移动⽂件或⼦⽬录等操作
简单来说 给一个目录附上粘滞位 可以防止普通用户删除文件
这个目录的文件只能由:超级管理员删除,该鲁莽的所有这,该文件的所有者
那怎么给目录附上粘滞位呢?

只需要在其他人加上t即可

可以看出,权限就多了一个t
功能:查看更详细的文件类型
大家好,我正在尝试设置一个开发环境,并且我一直在关注以下教程:Linktotutorial我做得不是很好,除了最基本的版本控制内容外,我对终端命令没有任何实际经验。我点击了第一个链接并尝试运行source~/.bash_profile我得到了错误;mkdir:/usr/local/rbenv/shims:权限被拒绝mkdir:/usr/local/rbenv/versions:权限被拒绝现在每次我加载终端时都会出现错误。bash_profile的内容;exportPATH=/usr/local/rbenv/bin:$PATHexportRBENV_ROOT=/usr/local/rbe
我正在为我的用户实现一些rubyonrails代码推特内容。我正在创建正确的oauth链接...类似http://twitter.com/oauth/authorize?oauth_token=y2RkuftYAEkbEuIF7zKMuzWN30O2XxM8U9j0egtzKv但在我的测试帐户授予对twitter的访问权限后,它会弹出一个页面,上面写着“您已成功授予对.我不知道用户应该在哪里输入此PIN以及他们为什么必须这样做。我认为这不是必要的步骤。Twitter应该将用户重定向到我在应用程序设置中提供的回调URL。有谁知道为什么会这样?更新我找到了thisarticle声明我需
我正在关注Ryan的RailsCast第339集。我已经安装了rbenv并且可以运行ruby-v。我退出了我的session,当我试图返回时(通过root的sudeployer,我得到了这个错误/home/deployer/.rbenv/bin/rbenv:line20:cd:/root:Permissiondenied这是rbenv文件:#!/usr/bin/envbashset-e[-n"$RBENV_DEBUG"]&&set-xresolve_link(){$(type-pgreadlinkreadlink|head-1)"$1"}abs_dirname(){localcwd="
Linux操作系统——网络配置与SSH远程安装完VMware与系统后,需要进行网络配置。第一个目标为进行SSH连接,可以从本机到VMware进行文件传送,首先需要进行网络配置。1.下载远程软件首先需要先下载安装一款远程软件:FinalShell或者xhell7FinalShellxhell7FinalShell下载:Windows下载http://www.hostbuf.com/downloads/finalshell_install.exemacOS下载http://www.hostbuf.com/downloads/finalshell_install.pkg2.配置CentOS网络安装好
文章目录一基础定义二创建逻辑卷2-1准备物理设备2-2创建物理卷2-3创建卷组2-4创建逻辑卷2-5创建文件系统并挂载文件三扩展卷组和缩减卷组3-1准备物理设备3-2创建物理卷3-3扩展卷组3-4查看卷组的详细信息以验证3-5缩减卷组四扩展逻辑卷4-1检查卷组是否有可用的空间4-2扩展逻辑卷4-3扩展文件系统五删除逻辑卷5-1备份数据5-2卸载文件系统5-3删除逻辑卷5-4删除卷组5-5删除物理卷六LVM逻辑卷缩容6-1缩容注意事项6-2标准缩容步骤一基础定义LVM,LogicalVolumeManger,逻辑卷管理,Linux磁盘分区管理的一种机制,建立在硬盘和分区上的一个逻辑层,提高磁盘分
如何在Ruby中获取linux系统(这必须适用于Fedora、Ubuntu等)的软件/硬件信息? 最佳答案 Chef背后的优秀人才,拥有一颗名为Ohai的优秀gemhttps://github.com/opscode/ohai以散列形式返回系统信息,例如操作系统、内核、规范、fqdn、磁盘、空间、内存、用户、接口(interface)、sshkey等。它非常完整,非常好。它还会安装命令行二进制文件(也称为ohai)。 关于ruby-如何在Ruby中获取linux系统信息,我们在Stack
我在LinuxMint17.2上。我最近使用apt-getpurgeruby删除了ruby。然后我安装了rbenv然后rbenvinstall2.3.0所以现在,~/.rbenv/versions/2.3.0/bin/ruby存在。但是现在,我无法执行geminstallrubocop。我明白了:$geminstallrubocoprbenv:gem:commandnotfoundThe`gem'commandexistsintheseRubyversions:2.3.0但是我可以~/.rbenv/versions/2.3.0/bin/geminstallrubocop。但是,
我是Ruby和RoR的新手。我有一个带有Ubuntu镜像的干净Linode实例,我想从源代码编译Ruby而不是使用apt-get。我已经在谷歌上搜索了执行此操作的说明,但经过一些尝试后,当我尝试运行一些教程示例时,我不断收到有关缺少zlib和其他一些包的错误。任何人都可以给我详细的说明(或链接),教我如何在从源代码编译Ruby之前安装必要的必备包吗?我的目的是编译Ruby的最新稳定版本,然后安装Rubygems和Rails。提前感谢您的帮助!!! 最佳答案 Thisblogpost涵盖从源代码编译ruby所需的包和安装过程;它引
如何使用Capistrano将Rails应用程序部署到无法访问外部网络或存储库的生产或暂存服务器?我已经设法完成部署的一半,并意识到Capistrano没有在我的本地机器上下载gitrepo,但它首先连接到远程服务器并尝试在那里下载Git存储库。我希望有一个类似Javaee的构建系统,其中创建可交付成果并将该可交付成果发送到服务器。就像您构建.ear文件并将其部署到您想要的任何服务器上一样。显然在RoR中,你被迫(据我所知)在该服务器上构建应用程序,在那里创建一个gem存储库,在那里克隆最新的分支等等。有什么方法可以将准备运行的包发送到远程服务器吗? 最佳答
我在运行Ubuntu10.04LTS的远程VPS机器上以生产模式运行RubyonRails3.0.9(在开发模式下,我在MACOSSnow上使用RoRLeopard),我想知道如何管理以下场景。我使用Apache2和PhusionPassenger并且我将虚拟主机设置为如下所示:ServerNameproject_name.comDocumentRoot/srv/www/project_name.com/publicAllowOverrideallOptions-MultiViews此外,我使用Paperclipgem,由于网上很多人在生产模式下使用它,我在处理(图像)文件时遇到以下错