linux 文件权限-sudo 错误恢复-ls查看文件权限详解

出现问题:

sudo su
sudo: error in /etc/sudo.conf, line 0 while loading plugin "sudoers_policy"
sudo: /usr/lib/sudo/sudoers.so must be only be writable by owner
sudo: fatal error, unable to load plugins

解决方案,和相关资料:

如果能进root环境,如通过串口可以:

chmod 644 /usr/lib/sudo/sudoers.so

chown -R root /usr/lib/sudo

否则尝试:

pkexec chmod go-w /usr/lib/sudo/sudoers.so

 

 

原因:

/usr/lib/sudo/sudoers.so 必须只对其所有者可写 sudo: 致命错误,无法加载插件

至于为何组和其他用户对sudoers.so有写的权限时会有问题还没时间详细研究,下面是相关一些资料:

https://blog.csdn.net/weixin_43459866/article/details/113455200

https://blog.csdn.net/u013197629/article/details/73608613#t1

https://blog.csdn.net/kexiaoling/article/details/51096164

 

sudo权限管理:

在linux中,我们可以使用chmod + chown来控制一个用户对某个文件的权限。简单的说就是某一个用户是否对某一个文件/文件夹有读/写/执行的权限。

如果想编辑或执行其他用户的文件怎么办,这时候可以使用sudo命令

sudo ⇒ substitute user do 译为:代替某个用户去做。 语法sudo -u user  默认就是root

如果任意就去代替某个用户做某些事就太危险了,那还要文件权限控制干什么。所以,sudo有自己的权限控制系统,其实都维护在了/etc/sudoers文件中。

visudo ⇒ vi sudo 即使用vi编辑sudoers的文件

sudo权限配置是有语法规则的,如下:

root ALL=(ALL:ALL) ALL
第一字段指出当前规则要适用于哪一个用户

root ALL =(ALL:ALL) ALL
第一个ALL指明了当前规则要适用于哪一个主机,ALL就是所有主机。
root ALL=(ALL :ALL) ALL
第二个ALL指出了root用户可以替代所有用户执行命令

root ALL=(ALL:ALL ) ALL
第三个ALL指出了可以替代所有组执行命令

root ALL=(ALL:ALL) ALL
最后一个ALL字段代表可以运行哪些命令,此处ALL即可以运行所有命令

总结来说:哪个用户可以替代哪些其他用户(组)执行哪些命令。

针对上面那句话就是root用户可以替代任意用户执行任意命令所以他的权限就是无限制的。

Linux权限详解(chmod、600、644、700、711、755、777、4755、6755、7755)

Linux下文件的权限类型一般包括读,写,执行。对应字母为 r、w、x。

Linux下权限的粒度有 拥有者 、群组 、其它组 三种

 

u 表示该档案的拥有者,g 表示与该档案的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示所有(包含上面三者)。

+ 表示增加权限,- 表示取消权限,= 表示唯一设定权限

r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。

例子:

设置文件 a.conf 权限为拥有者与其所属同一个群组 可读写,其它组可读不可写

chmod a+r,ug+w,o-w a.conf

使用数字代表权限规则:

我们规定 数字 4 、2 和 1表示读、写、执行权限(具体原因可见下节权限详解内容),即 r=4,w=2,x=1 

例:rwx = 4 + 2 + 1 = 7    rw = 4 + 2 = 6      rx = 4 +1 = 5

更改文件拥有者(chown命令)

chown [可选项] user[:group] file...

user : 新的文件拥有者的使用者

group : 新的文件拥有者的使用者群体(group)

例子:chown -R root /usr/lib/sudo

十位权限表示

-rw------- (600) 只有拥有者有读写权限。
-rw-r--r-- (644) 只有拥有者有读写权限;而属组用户和其他用户只有读权限。
-rwx------ (700) 只有拥有者有读、写、执行权限。
-rwxr-xr-x (755) 拥有者有读、写、执行权限;而属组用户和其他用户只有读、执行权限。
-rwx--x--x (711) 拥有者有读、写、执行权限;而属组用户和其他用户只有执行权限。
-rw-rw-rw- (666) 所有用户都有文件读、写权限。
-rwxrwxrwx (777) 所有用户都有读、写、执行权限。

第一位代表的是文件的类型

d代表的是目录(directroy)
-代表的是文件(regular file)
s代表的是套字文件(socket)
p代表的管道文件(pipe)或命名管道文件(named pipe)
l代表的是符号链接文件(symbolic link)
b代表的是该文件是面向块的设备文件(block-oriented device file)
c代表的是该文件是面向字符的设备文件(charcter-oriented device file)

后九位解析: 我们知道Linux权限总共有三个属组,这里我们给每个属组使用三个位置来定义三种操作(读、写、执行)权限,合起来则是权限的后九位。 上面我们用字符表示权限,其中 -代表无权限,r代表读权限,w代表写权限,x代表执行权限。(后九位的前3位对应拥有者权限、4-6位对应群组权限、7-9对应其他组权限)

ls -l命令查看某一个目录会得到一个7个字段的列表

第1字段: 文件属性字段

第2字段:文件硬链接数

第3字段:文件(目录)拥有者

第4字段:文件(目录)拥有者所在的组

第5字段: 文件所占用的空间(以字节为单位)

第6字段:文件(目录)最近访问(修改)时间

  lrwxrwxrwx 1 root root 4 08-03 08:27 bexit -> exit

  文件创建的时间可以通过touch命令来修改。如:

  [root@localhost ~]# touch exit

  可以把exit的创建时间修改为当前时间,另外,一个文件还有最后访问时间,最后修改时间等属性。

  这些属性可以用ls 的其它参数显示出来。

第7字段:文件名

 

 

 

posted on 2022-05-13 13:20  DuoRuaiMi4567  阅读(2065)  评论(0编辑  收藏  举报