ls -l
rwxrwxrwx:
左三位:定义user(owner)的权限
中三位:定义group的权限
右三位:定义other的权限
进程对文件的访问权限应用模型:
进程的属主与文件的属主是否相同,如果相同,则应用属主权限;
否则,则检查进程的属主是否属于文件的属组:如果是,则应用属组权限;
否则,就只能应用other的权限;
r:readable,读
w:writable,写
x:excutable,执行
文件:
r:可获取文件的数据;
w:可修改文件的数据;
x:可将此文件运行为进程;
目录:
r:可使用ls命令获取其下的所有文件列表;但不能用ls -l
;
w:可修改此目录下的文件列表;即创建或删除文件;
x:可cd至此目录中,且可使用ls -l来获取所有文件的详细属性信息;
mode:rwxrwxrwx
ownership:user group
权限组合机制:
--- 000 0
--x 001 1
-w- 010 2
-wx 011 3
r-- 100 4
r-x 101 5
rw- 110 6
rwx 111 7
三类用户:
u:属主
g:属组
o:其它
a:所有
u=
g=
o=
a=
cp /etc/fstab ./
pwd
ll fstab
#设置属组读写权限
chmod g=rw fstab
#设置属主,属组读权限
chmod ug=r fstab
#设置属主读写执行,属组读写,其它没有权限
chmod u=rwx,g=rw,o= fstab
u+,u-
g+,g-
o+,o-
a+,a-
#去除属组的执行权限
chmod u-x fstab
ll fstab
#给其它加上读权限
chmod o+r fstab
#给属主,属组加上执行权限
chmod ug+x fstab
#给所有加上执行权限
chmod +x fstab
#给所有去除执行权限
chmod -x fstab
#给属主执行权限,属组写权限
chmod u+x,g+w fstab
#属主和属组读写,其他无权限
chmod 660 fstab
#查看fstab权限
ll fstab
#查看参考文件权限
ll /var/log/messages
#指明参考文件来修改指定文件权限
chmod --reference=/var/log/messages fstab
#再次查看fstab权限
ll fstab
选项:
-R,--recursive 递归修改;如果不加-R选项,修改的是目录权限时,则表示仅修改目录自身的权限;加上-R则表示修改目录自身和目录下的所有子目录和子文件的权限;递归修改建议赋权和授权表示法,其他不建议使用;
#设置/temp/abc/属主和属组为无权限,递归执行
chmod -R ug= /temp/abc/
注意:用户仅能修改属主为自己的那些文件的权限;
chown [OPTION]...[OWNER][:[GROUP]] FILE...
chown [OPTION]... --reference=RFILE FILE...
选项:
-R:递归修改
#copy文件和使用ll查看
cp -r /etc/skel /tmp/
cd /tmp
ll -ad /etc/skel
ll /etc/skel -a
#递归修改/etc/skel/的属组为docker
chown -R docker /tmp/skel/
ll -d /tmp/skel
ll -a /tmp/skel
#递归修改设置属主:属组
chown -R archlinux:mygrp /tmp/skel/
ll -d /tmp/skel/
ll -a /tmp/skel/
#也可以用.号来隔开,如root.root
chown -R root.root /tmp/skel/
#:递归修改设置属主不变,属组为mygrp
chown -R :mygrp /tmp/skel/
#引用修改
chown -R --reference=/tmp/ssh-ZcL8QoJiIFGk/ /tmp/skel
ll -d /tmp/skel/
ll -a /tmp/skel/
chgrp [OPTION]... GROUP FILE...
chgrp [OPTION]... --reference=RFILE FILE...
注意:仅管理员可修改文件的属主和属组;
思考:用户对目录有写权限,但对目录下的文件没有写权限时,能否修改此文件的内容?能否删除此文件?
答:不能修改此文件内容,但是能删除此文件;同时可以在这个目录下创建文件
文件:666-umask
目录:777-umask
注意:之所以文件用666去减,表示文件默认不能拥有执行权限;如果减得的结果中有执行权限,则需要将其加1
umask:022
666-022=644
777-022=755
umask命令:
umask:查看当前umask
umask:MASK:设置umask;默认只对当前shell进程有效
练习:
1、新建系统组mariadb,新建系统用户mariadb,属于mariadb组,要求其没有家目录,且shell为/sbin/nologin;尝试root切换至用户,查看其命令提示符;
2、新建GID为5000的组geedu,新建用户gentoo,要求其家目录为/users/gentoo,密码同用户名;
3、新建用户fedora,其家目录为/users/fedora,密码同用户名;
4、新建用户www,其家目录为/users/www;删除www用户,但保留其家目录;
5、为用户gentoo和fedora新增附加组geedu;
6、复制目录/var/log至/tmp/目录,修改/tmp/log及其内部的所有文件的属组为geedu,并让属组对目录本身拥有写权限;
单源复制:
install [option]... source dest
多源复制:
install [option]... source... directory
install [option]... -t directory source
创建目录:
install [option] [-d,--directory] directory...
常用选项:
-m,--mode=MODE:设定目标文件权限,默认为755;
-o,--owner=OWNER:设定目标文件属主;
-g,--group=GROUP:设定目标文件属组;
-d,--directory:用于创建目录
#什么选项也不加复制文件会被赋予755权限,而/etc/inittab权限为644
install /etc/inittab /root
#先删除文件
rm -rf inittab
#复制文件设置权限为640
install -m 640 /etc/inittab /root
ll inittab
#复制文件并设置权限、属主、属组
install -m 640 -o archlinux -g mygrp /etc/inittab /tmp/inittab
ll /tmp/inittab
#-d创建目录
install -d -m 640 hello
ll -d hello
mktemp [OPTION]... [TEMPLATE]
常用选项:
-d:创建临时目录
注意:mktemp会将创建的临时文件名直接返回,因此,可直接通过命令引用保存起来;
myfile=$(mktemp /tmp/abc.XXXXX)
echo $myfile
一般临时文件路径放在/tmp/下,一个月后会自动删除,其他目录不确定会自动删除
#创建临时文件后面至少跟三个大写的X,表示随机值
mktemp /tmp/abc.XXX
mktemp /tmp/abc.XXXX
mktemp /tmp/abc.XXXXX
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。