Linux文件权限问题
1.文件拥有者,群组,其他人
假设有一家人,家里只有三兄弟,分别是王大毛、王二毛与王三毛三个人, 而这个家庭是登记在王大毛的名下的!所以,王大毛家有三个人,分别是王大毛、王二毛与王三毛, 而且这三个人都有自己的房间,并且共同拥有一个客厅
文件拥有者:王大毛、王二毛与王三毛三人各自拥有自己的房间(私人空间)
群组:共同拥有客厅,所以可以一起看电视,相互打闹(组内互相可改,跨组不行)
其他人:张家人与王家没有关系, 这个时候,除非王家认识张家人,然后开门让张家人进来王家,否则张家人永远没有办法进入王家, 更不要说进到王家人的房间,不过,如果张家通过关系认识了王三毛,并且跟王三毛成为好朋友, 那么张家人就可以通过三毛进入王家
2.Linux文件属性
查询 | 指令 |
---|---|
系统上的相关信息 | /etc/passwd |
群组 | /etc/group |
密码 | /etc/shadow |
可以通过使用 su - 用户名
来切换不同的用户
用普通用户切换到root(管理员用户)时需要输入管理员账户的密码
用管理员用户切换到普通用户不需要输入账户密码
使用ls -al
来查阅目录中所有文件
第一栏代表文件类型与权限:
· r (read)
:可读取此一文件的实际内容,如读取文本文件的文字内容等;
· w (write)
:可以编辑、新增或者是修改该文件的内容(但不含删除该文件);
· x (eXecute)
:该文件具有可以被系统执行的权限。
范例:
文件
拥有者权限:可读可写可执行
群组权限:可读可执行
其他人:可读
第二栏表示有多少档名连结到此节点(i-node)
第三栏表示这个文件(或目录)的拥有者账号
第四栏表示这个文件的所属群组
第五栏为这个文件的容量大小,默认单位为bytes
第六栏为这个文件的建档日期或者是最近的修改日期
第七栏为这个文件的档名
例题:
假设test1, test2, test3同属于testgroup这个群组,如果有下面的两个文件,请说明两个文件的拥有者与其相关的权限为何?
-rw-r--r-- 1 root root 238 Jun 18 17:22 test.txt
-rwxr-xr-- 1 test1 testgroup 5238 Jun 19 10:25 ping_tsai
- 文件test.txt的拥有者为root,所属群组为root。至于权限方面则只有root这个账号可以存取此文件,其他人则仅能读此文件;
- 另一个文件ping_tsai的拥有者为test1,而所属群组为testgroup。其中:
- [ test1 可以针对此文件具有可读可写可执行的权力]
- [而同群组的test2, test3两个人与test1同样是testgroup的群组账号,则仅可读可执行但不能写(亦即不能修改) ]
- [至于没有加入testgroup这一个群组的其他人则仅可以读,不能写也不能执行 ]
drwxr-xr-- 1 test1 testgroup 5238 Jun 19 10:25 groups/
- 文件拥有者test1[rwx]可以在本目录中进行任何工作;
- testgroup这个群组[r-x]的账号,例如test2, test3亦可以进入本目录进行工作,但是不能在本目录下进行写入的动作;
- other的权限中[r–]虽然有r ,但是由于没有x的权限,因此others的使用者,并不能进入此目录!
3.更改Linux文件属性
- chgrp:改变文件所属群组
chgrp [-R] dirname/filename
-R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件、目录 都更新成为这个群组之意。常常用在变更某一目录内所有的文件之情况。
范例:
[root@study ~]# chgrp users initial-setup-ks.cfg
[root@study ~]# ls
-l -rw-r--r--. 1 root users 1864 May 4 18:01 initial-setup-ks.cfg
- chown:改变文件拥有者
[root@study ~]# chown [-R] 账号名称 文件或目录
[root@study ~]# chown [-R] 账号名称:组名 文件或目录
[root@study ~]# chown [-R] 账号名称.组名 文件或目录
范例:
范例:
#将 initial-setup-ks.cfg 的拥有者改为bin这个账号:
[root@study ~]# chown bin initial-setup-ks.cfg
[root@study ~]# ls
-l -rw-r--r--. 1 bin users 1864 May 4 18:01 initial-setup-ks.cfg
范例:
#将 initial-setup-ks.cfg 的拥有者与群组改回为root:
[root@study ~]# chown root:root initial-setup-ks.cfg
[root@study ~]# ls -l
-rw-r--r--. 1 root root 1864 May 4 18:01 initial-setup-ks.cfg
范例:
#将 initial-setup-ks.cfg 的拥有者与群组改回为root:
[root@study ~]# chown yang.root initial-setup-ks.cfg
[root@study ~]# ls -l
-rw-r--r--. 1 yang root 1864 May 4 18:02 initial-setup-ks.cfg
- chmod:改变文件的权限
1.数字类型的改变:
r:4
w:2
x:1
每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的:
owner = rwx = 4+2+1 = 7
group = rwx = 4+2+1 = 7
others= — = 0+0+0 = 0
格式:
[root@study ~]# chmod [-R] xyz 文件或目录 选项与参数:
xyz : 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。
-R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都会变更
范例:
[root@study ~]# ls -al .bashrc
-rw-r--r--. 1 root root 176 Dec 29 2013 .bashrc
[root@study ~]# chmod 777 .bashrc
.bashrc这个文件所有的权限都设定启用
[root@study ~]# ls -al .bashrc
-rwxrwxrwx. 1 root root 176 Dec 29 2013 .bashrc
2.符号类型改变文件权限:
- user(u)
- group(g)
- other(o)
- all(a)
范例:
chmod a+w .bashrc
#将.bashrc文件现有的所有权限再加上一个w(写权限)
4.绝对路径和相对路径:
- 绝对路径:由根目录(/)开始写起的文件名或目录名称, 例如 /home/dmtsai/.bashrc;
- 相对路径:相对于目前路径的文件名写法。 例如 ./home/dmtsai 或 …/…/home/dmtsai/ 等等。反正开头不是 / 就属于相对路径的写法
根据项目当前所在目录进行变化,项目与home保持同级
./ :当前目录下查找
脚本存在目录上一层与home同级,在上一级目录中找home
…/ : 返回上一级目录