最近在公司闲的不要不要的,打算把linux从头重新学习一边。别说,收获还挺大的,我主要是看《linux就该这么学》这本书的PDF版。
这章笔记主要是记载,我重新学习linux权限这块出来RWX以外的其他运用:
chmod -R o+x linux/ 设置linux目录的保护位置,防止误删除!
chmod -Rf g+s testdir/ 设置testdir这个目录的共享权限
chattr(隐藏权限) -i(不能对文件进行修改,对目录设置后,仅能修改子文件内容,而不能新建或删除) -a(追加,无法覆盖/删除内容) -S(文件内容在变更后立即同步到硬盘中) -s(彻底从硬盘中删除,不可恢复)
lsattr(显示隐藏权限)
setfacl(管理文件ACL规则) -m是针对普通文件,-R是针对目录表示递归,-b是删除文件的ACL规则
如果看到文件的权限的最后一个点(.)变成(+)后就表示这个文件已经设置了ACL
setfacl -Rm u:zhangsan:rwx /san (表示张三这个用户拥有san这个目录全部权限)
getfacl (显示文件上设置的ACL规则)
getfacl /san
sudo命令 -l列出当前用户可执行的命令 -u或UID 以指定的用户身份执行命令 -k 清空密码有效时间,下次执行sudo是需要再次进行密码验证 -b后台执行指定的命令 -p更改询问密码提示语
sudo命令的配置文件在/etc/sudoers
visudo配置用户使用sudo命令的权限(只有root管理员才可以使用visudo命令编辑sudo服务的配置文件)
在生产环境中如果让某个用户拥有只有使用root管理员身份执行指定的命令时,一定要给出命令的决定路径,否则系统识别不出来。
可以先使用whereis命令查看命令所对应的保存路径,然后在把配置文件99行用户权限参数改成对应的路径。
如:whereis useradd
useradd: /usr/sbin/useradd /usr/share/man/man8/useradd.8.gz
visudo
:set nu
:99
zhangsan ALL=NOPASSWD:(这里添加NOPASSWD参数是让用户每次执行sudo 命令的时候都不需要输入密码) /usr/sbin/useradd
:wq
验证下结果:
su - zhangsan
sudo useradd san
然后切换回root用户查看看有没有 san这个用户
cat /etc/passwd | grep san
出现以下结果就表明设置权限设置成功:
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
zhangsan:x:1001:1001::/home/zhangsan:/bin/bash
san:x:1003:1003::/home/san:/bin/bash