首页

文章

Linux操作系统文件访问权限详解

发布网友 发布时间:2022-03-21 03:29

我来回答

5个回答

懂视网 时间:2022-03-21 07:50

产品型号:Thinkpad E15

系统版本:centos8

linux文件权限详解

[root@xuegod63 ~]# ll /etc/passwd

-rw-r--r--. 1 root root 2053 9月  19 2017 /etc/passwd

文件权限基本解释:

-        rw-        r--       r--.     1 root root 2053 9月  19 2017 /etc/passwd

 其中:文件类型,可以为p、d、l、s、c、b和 –

p表示命名管道文件

d表示目录文件

l表示符号连接文件

-表示普通文件

s表示socket套接口文件,比如我们启用mysql时,会产生一个mysql.sock文件

c表示字符设备文件,例: 虚拟控制台 或tty0

b表示块设备文件   例: sda, cdrom

例:

[root@xuegod63 ~]# ll /dev/sda /dev/cdrom  /etc/passwd /dev/tty0

lrwxrwxrwx  1 root root    3 9月  19 2017 /dev/cdrom -> sr0

brw-rw----  1 root disk 8, 0 9月  19 2017 /dev/sda

crw--w----  1 root tty  4, 0 9月  19 2017 /dev/tty0

-rw-r--r--. 1 root root 2053 9月  19 2017 /etc/passwd   如下效果图:

 权限说明

对于文件来说:

r:读 cat

w:写 vim echo

x:执行 运行命名或者脚本

对于目录来说:

r:读(看到目录里面有什么)   ls

w:在目录里面建文件,删除,移动  touch mkdir  rm  mv cp

x:进入 cd 

文件拥有者

UGO:所有者--用户组--其它用户

所有者: 就是创建文件的用户,这个用户拥有对它所创建的文件的一切权限,所有者可以允许其所在的用户组可以访问所有者的文件。

用户组: 用户组是具有相同特征用户的逻辑集合,有时我们需要让多个用户具有相同的权限,比如查看、修改某一个文件的权限,一种方法是分别对多个用户进行文件访问授权,如果有10个用户的话,就需要授权10次,显然这种方法不太合理;另一种方法是建立一个组,让这个组具有查看、修改此文件的权限,然后将所有需要访问此文件的用户放入这个组中,那么所有用户就具有了和组一样的权限。这就是用户组。

其它用户:系统内的其他所有者用户就是other用户类

常见几种文件权限组成

- rwx --- ---:文件所有者对文件具有读取、写入和执行的权限。

- rwx r-- r--: 文件所有者具有读、写与执行的权限,用户组里用户及其他用户则具有读取的权限

- rw- rw- r-x:文件所有者与同组用户对文件具有读写的权限,而其他用户仅具有读取和执行的权限。

drwx--x—x: 目录所有者具有读写与进入目录的权限,其他用户近能进入该目录,却无法读取任何数据。

drwx------: 除了目录所有者具有完整的权限之外,其他用户对该目录完全没有任何权限。

举例如下:

每个用户都拥有自己的专属目录,通常放置/home下

[root@xuegod63 home]# ll /home/

总用量 0

drwx------. 3 user1 user1 78 9月  19 2017 user1

注: [rwx------]表示目录所有者本身拥有的权限,其它用户是无法进入的。 root可以。

例2: 你以什么用户身份登录,那么你创建的文件或目录,自动成为该文件的所属主和组

[root@xuegod63 home]# su -user1

上一次登录:二 9月 19 12:57:21 CST 2017:0 上

[user1@xuegod63 ~]$ 

[user1@xuegod63 ~]$ touch a.txt

[user1@xuegod63 ~]$ ll a.txt 

-rw-rw-r-- 1 user1 user1 0 5月   8 20:58 a.txt

总结:

文件权限基本解释:

-        rw-        r--       r--.     1 root root 2053 9月  19 2017 /etc/passwd

 其中:文件类型,可以为p、d、l、s、c、b和 –

p表示命名管道文件

d表示目录文件

l表示符号连接文件

-表示普通文件

s表示socket套接口文件,比如我们启用mysql时,会产生一个mysql.sock文件

c表示字符设备文件,例: 虚拟控制台 或tty0

b表示块设备文件   例: sda, cdrom

热心网友 时间:2022-03-21 04:58

一直以root登陆使用linux的人来说很少有权限被拒这种概念,但某些时候又深受权限拒绝困扰。
  知道为什么很多程序中需要使用getuid(),setuid()?为什么以普通权限登陆的用户不能进入/root,为什么在/目录下执行ls -l后可以显示root的信息,但ls /root -al却是权限不够?为什么有些文件夹可以继续创建文件,但就是不能ls?等等,相信看了此文就能明白。
  主要是学习笔记,不足之处请指正。
  CentOS 5.4 [testc@xxx opt]$ uname -a Linux xxx 2.6.18-164.el5xen #1 SMP Thu Sep 3 04:47:32 EDT 2009 i686 i686 i386 GNU/Linux
  一、口令文件1,格式存储文件/etc/passwd,格式如下:root:x:0:0:root:/root:/bin/bash aaa:x:501:501:bj, bj, 8111111,136000111:/home/aaa:/bin/bash用户名:加密密码:用户ID:组ID:注释:工作目录:shell:
  默认情况是第一行的格式;注释字段可以自行修改,用逗号隔开,如第二行格式,这主要是给finger命令使用时可解析。
  可以vi /etc/passwd修改,但为了保证其格式的正确性,请用vipw命令编译此文件。
  sh-3.2# finger aaa Login: aaa Name: bj Directory: /home/aaa Shell: /bin/bash Office: bj, 8111111 Home Phone: 136000111 Never logged in. No mail. No Plan.
  2,编程实例
  /*getpwnam_pwuid.c*/ #include #include #include
  int main(void)
  { //struct passwd *pwd = getpwnam("aaa");struct passwd *pwd = getpwuid(501);if(pwd == NULL)
  { printf("err.\n");return 1;}
  printf("name:%s\n", pwd->pw_name);printf("passwd:%s\n", pwd->pw_passwd);printf("description:%s\n", pwd->pw_gecos);printf("uid:%d\n", pwd->pw_uid);printf("gid:%d\n", pwd->pw_gid);printf("dir:%s\n", pwd->pw_dir);printf("shell:%s\n", pwd->pw_shell);
  return 0;}
  sh-3.2# gcc getpwnam_pwuid.c -o app sh-3.2# ./app name:aaa passwd:x description:bj, bj, 8111111,136000111 uid:501 gid:501 dir:/home/aaa shell:/bin/bash
  二、组文件1,格式存储文件/etc/group,格式如下root:x:0:root bin:x:1:root,bin,daemon aaa:x:501:组名:加密密码:组ID:指向的各用户名
  2,改变文件uid和gid.
  sh-3.2# pwd /root/study sh-3.2# ls -al -rw-r——r—— 1 root root 397 10-11 03:23 test.c
  chgrp 改变所属组ID,当然只有root权限才可以修改。
  sh-3.2# chgrp aaa test.c sh-3.2# ls -al -rw-r——r—— 1 root aaa 397 10-11 03:23 test.c
  这个aaa就是新组名,其在/etc/group中,可以通过adser aaa自行添加sh-3.2# cat /etc/group root:x:0:root bin:x:1:root,bin,daemon daemon:x:2:root,bin,daemon.
  gdm:x:42:sabayon:x:86:plmtest:x:500:aaa:x:501:
  chown 改变用户ID或组ID sh-3.2# chown aaa:aaa test.c sh-3.2# ls -al -rw-r——r—— 1 aaa aaa 397 10-11 03:23 test.c
  3,编程实例
  /*getgrnam.c*/ #include #include
  int main(int argc, char *argv[])
  { if(argv[1] == NULL)
  { printf("input error.\n");return 1;}
  struct group *gp = getgrnam(argv[1]);if(gp == NULL)
  { printf("err.\n");return 1;}
  printf("name:%s\n", gp->gr_name);printf("psswd:%s\n", gp->gr_passwd);printf("gid:%d\n", gp->gr_gid);
  int i;for(i = 0; gp->gr_mem[i] != NULL; i++)
  { printf("group name:%s\n", gp->gr_mem[i]);}
  return 0;}
  sh-3.2# gcc getgrnam.c -o app sh-3.2# ./app bin name:bin psswd:x gid:1 group name:root group name:bin group name:daemon 4,文件权限不细讲了sh-3.2# ls -al总计 483984 drwxr-x—— 13 root root 4096 02-22 00:01 . drwxr-xr-x 32 root root 4096 02-21 21:15 ……
  -rw-r——r—— 1 root root 464023491 10-25 22:33 3.3.005-080425.tgz -rw—— 1 root root 9346 02-21 23:16 .bash_history -rw-r——r—— 1 root root 24 2007-01-06 .bash_logout -rw-r——r—— 1 root root 191 2007-01-06 .bash_profile -rw-r——r—— 1 root root 176 2007-01-06 .bashrc drwxrwxrwx 10 1000 users 4096 08-23 20:16 cflow-1.3 -rw-r——r—— 1 root root 759691 08-23 20:13 cflow.tar.gz -rw-r——r—— 1 root root 100 2007-01-06 .cshrc -rwxr-xr-x 1 root root 582 11-11 21:48 delete_M.sh -rw-r——r—— 1 root root 2518 11-11 20:25 .dir_colors
  主要是最左边一列:drwxr-x——10个字符,最左边是文件类型,-默认为普通文件;d:目录文件;l符号链接……
  后面9个,3个一组共三组,分别表示所属用户uid的权限;所属组或者附属组gid的权限;其它权限。
  三个字符分别是读、写、执行权限读4,写2, 执行1
  所以chmod 777 test.c,提升到读、写、执行权限。
  5,组权限操作实例此节演示相同组的成员之间共享资源,即不同uid但相同gid的用户共享同一组的资源。
  为了方便起见,我同时开了两个终端。
  "sh-3.2#"以root权限登陆的shell /bin/sh "[testa@xxx root]"以testa用户登陆的shell
  注:下文提到的“用户”是指/etc/passwd里定义的通过终端登陆的用户(此文即以下增加的三个账号名)。
  sh-3.2# useradd testa sh-3.2# useradd testb sh-3.2# useradd testc
  sh-3.2# tail -f /etc/passwd -n 4 sabayon:x:86:86:Sabayon user:/home/sabayon:/sbin/nologin testa:x:500:500::/home/testa:/bin/bash testb:x:501:501::/home/testb:/bin/bash testc:x:502:502::/home/testc:/bin/bash
  再开一个终端登陆testa,之前那个终端保持。
  sh-3.2# su testa [testa@xxx root]$ id uid=500(testa) gid=500(testa) groups=500(testa)
  [testa@xxx home]$ ls -al总计 28 drwxr-xr-x 5 root root 4096 02-21 22:52 . drwxr-xr-x 32 root root 4096 02-21 21:15 ……
  drwx—— 3 testa testa 4096 02-21 22:56 testa drwx—— 3 testb testb 4096 02-21 22:48 testb drwx—— 3 testc testc 4096 02-21 22:52 testc
  [testa@xxx home]$ cd testb bash: cd: testb: 权限不够
  通过root修改testb目录权限为770,即当前uid或者gid相同的用户均有读写执行权限。
  sh-3.2# cd /home/ sh-3.2# chmod 770 testb
  [testa@xxx home]$ ls -al总计 28 drwxr-xr-x 5 root root 4096 02-21 22:52 . drwxr-xr-x 32 root root 4096 02-21 21:15 ……
  drwx—— 3 testa testa 4096 02-21 22:56 testa drwxrwx—— 3 testb testb 4096 02-21 22:48 testb (here modify)
  drwx—— 3 testc testc 4096 02-21 22:52 testc
  [testa@xxx home]$ cd testb bash: cd: testb: 权限不够[testa@xxx root]$ id uid=500(testa) gid=500(testa) groups=500(testa)
  此时虽然开放了testb的所属组权限,但用户testa的gid=500(testa) groups=500(testa),它还不属于testb组。
  下面修改testa的gid为testb(或者增加其附属组groups值为testb)
  sh-3.2# usermod -G testb testa (增加用户testa的附属组testb)
  sh-3.2# id testa uid=500(testa) gid=500(testa) groups=500(testa),501(testb)
  此时testa终端需要重新登下,使刚才更改生效[testa@xxx root]$ exit exit [root@xxx ~]# su testa [testa@xxx root]$ id uid=500(testa) gid=500(testa) groups=500(testa),501(testb)
  [testa@xxx root]$ cd /home/ [testa@xxx home]$ ls -al总计 28 drwxr-xr-x 5 root root 4096 02-21 22:52 . drwxr-xr-x 32 root root 4096 02-21 21:15 ……
  drwx—— 3 testa testa 4096 02-21 22:56 testa drwxrwx—— 3 testb testb 4096 02-21 22:48 testb drwx—— 3 testc testc 4096 02-21 22:52 testc [testa@xxx home]$ cd testb [testa@xxx testb]$ pwd /home/testb
  以上是增加了用户testa的附属组testb,使其对于属于testb组的资源有了访问权限。
  下面再使用newgrp切换用户testa的gid.
  [testa@xxx testb]$ id uid=500(testa) gid=500(testa) groups=500(testa),501(testb)
  [testa@xxx testb]$ newgrp testb [testa@xxx testb]$ id uid=500(testa) gid=501(testb) groups=500(testa),501(testb)
  此时testa用户的gid已改为501(testb)。
  组之前的关系在文件/etc/group sh-3.2# tail -f /etc/group -n 4 sabayon:x:86:testa:x:500:testb:x:501:testa (最后一列:组内用户列表。即组testb里包含testa,testa属于testb组,大概就这意思吧……)
  testc:x:502:
  虽然知道控制组关系的文件,但不能直接修改些文件,否则执行newgrp时会出现"抱歉"错误提示。
  当然root用户权限是无*的,它访问文件时不需要进行权限检查。
  三、相关系统调用getuid();getgid();int setuid(uid_t uid);int setgid(gid_t gid);
  只有超级用户或者需要设置的uid和当前用户的uid一致才可以设置,否则返回-1,置errno = EPERM, errno可以通过strerror()翻译。
  其它:[testa@xxx home]$ su testa [testa@xxx home]$ sudo touch aa
  testa is not in the sudoers file. This incident will be reported.
  以root权限vim /etc/sudoers增加testa ALL=(ALL) ALL
  参考:APUE2E,1.8, 4.4, 8.11

热心网友 时间:2022-03-21 06:16

linux下文件权限分为四段:drwxrwxrwx
d表示这是一个目录,是一段,有时第一段也可能是l(l表示软连接)也可能没有,就用“-”表示
第二段是所属主权限,r:4(读取);w:2(写入);x:1(执行),rwx表示所属主用于所有权限,第三段和第四段也是一个意思,但第三段表示的是所属组,第四段表示的是其他人,懂了么?

热心网友 时间:2022-03-21 07:51

楼上说的很详细。

热心网友 时间:2022-03-21 09:42

rwx 421
如何分别真金和仿金首饰 怎样区分真金和仿金首饰呢 小学生新年晚会主持人的串词!!(不要太多)急 大大后天就需要了!!!_百度... 周年晚会策划公司 奥格瑞玛传送门大厅在哪 奥格瑞玛传送门大厅怎么走 锻炼颈椎的几个动作 水多久能结冰 冰能在多长时间内形成 请问水低于0度会结冰吗? 如何防止脱发严重 嘴唇上有黑印用蜜蜡和棉线去除了胡须 软柿子的热量 孕妇可以吃软柿子吗不是西红柿 脆柿子和软柿子的区别 脆柿子好还是软柿子好 软柿子可以多吃吗 “鱼悬洁白振清风”的出处是哪里 用大自然的声音评课好吗? 妇产科博士找超声科工作容易吗 怎能把微信6.2.0版本换回6.1.2版 微信群6.2.4怎么增加人数上限 微信6.2.2如何备份手机通讯录 电脑桌面图标不能放大? 有什么好用的识图软件 识图认人哪个软件最好 手机识图软件什么软件能识别图片位置 小米手机自动锁屏时间怎么修改 小米手机屏幕锁定时间设置教程 能举起100斤算大力吗 中医美容专业是什么 中医美容证有什么用 单声道音频什么意思(开启单声道音频有什么好处) 单声道音频是什么,有什么用处? 户口还未迁移到婆家 娘家户口怎么就没了呢 我结婚没有迁户口,现在娘家也没有怎么办 没领证生的孩子一般会判给谁 没领证生的孩子会判给谁 信用卡卡种有哪些 找一首古风歌曲 男声 低配电脑装w10还是w7流畅 电脑配置低装win7还是win10好 低配电脑适合装WIN7系统还是WIN10系统? ...500s-15isk这个联想笔记本的内存条尺寸是什么型号的有没有知道的... 越快越好.怎样减肥.而且胸部不缩水 请问徐闻县海安长途汽车客运站客服是多少? 过了平台期还会瘦吗 悦耳的意思悦耳的解释 重庆师范大学应用心理学专业的权威性如何? 打印机laserjetm1136mfp怎样设置无线打印 经典电影赏析之1:《精武英雄》 爆米花用的什么玉米 糯玉米哪个好 有机糯玉米的营养价值如何? 四大直辖市换帅原因 四大直辖市换帅为啥 我想重新注册新一个淘宝店铺,要怎样才能注销以前的淘宝帐户呢? 怎样轻松练腹肌 怎么了练腹肌 怎么样练腹肌比较好 怎么样练腹肌? 怎么样练腹肌?? 怎么样练腹肌 一个stp文件,用proe打开时,一打开proe就退了。而有的stp文件则可以打开。该怎么解决 如何注销实名认证 solidworks 打开比较大的STP文件时出错 3DsMAX2015中导入STP格式文件太大怎么办STP proe为什么打不开较大的stp格式的文件, solidworks2010 stp文件太大 莫桑钻石和钻石的区别有哪些? 怎样把QQ信息转发到微信 钻石莫桑石锆石的区别是什么,怎么分别? 莫桑钻石和真钻石有什么区别 我的华为手机一直重启又开不了机 华为手机,一直开不了机,还一直震动怎么办? 华为手机一直自动重启一半,关不了机,也开不了机 简述查看linux权限的命令及详细解释linux下的文件系统权限 LINUX中,文件的权限的表示方法及文件属性的读取理解?。 linux文件权限rwx分别代表 Linux文件权限和用户权限 淘宝的身份证注册用户怎么注销? LINUX 如何对文件分配权限 权限分别是什么? linux文件权限e是什么 Linux中关于文件的x权限 在Linux文件权限中,有R,W,X,S,T.我想知道s是什么意思 linux的文件的权限是怎么确定的 linux文件权限命令 linux下如何查看文件权限 请问在LINUX中,文件权限 t 和 S 分别是什么意思? linux文件权限所有人怎么设置 linux修改文件权限 linux文件权限数字什么意思 LINUX文件权限设置 微信健康码怎么设置30天免登录 linux怎么查看文件权限 linux文件权限-????????
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com