学习记录过程中难免出现错误,如有发现,还望大神们指出。
示例操作部分有的与历史操作有关,如果先前的示例操作没有执行过的话,可能会有部分示例的操作无法执行。示例仅供参考。(练习题在附录)
组管理:groupadd, groupdel, groupmod, gpasswd
groupadd:创建组
-g GID:指定GID
-r:添加为系统组
示例:
groupadd -r nginx ―― 指定为系统组
tail -1 /etc/group
groupmod:修改组属性
-g GID
-n GRPNAME:修改组名
groupdel:删除组
gpasswd:为组设定密码
newgrp GRPNAME exit:临时切换指定组为当前用户的基本组,
如果该指定组为当前用户的附加组则不需要输入密码。
示例:
文件的属组是创建该文件用户的基本组:
gpasswd mygroup
redhat
redat
useradd hadoop
su - hadoop
cd /tmp
touch a.hadoop
ls -l ―― a.hadoop的属组为hadoop
id
临时切换用户基本组:
newgrp mygroup ―― hadoop的基本组切换为mygroup
redhat
id
touch b.hadoop
ls -l ―― 由于基本组切换为mygroup,所以b.hadoop属组为mygroup
exit
id
权限管理:如何改变一个文件的属主、属组以及其它用户的权限
chown:改变文件属主、属组(只有管理员可以使用此命令)
# chown USERNAME file,...
-R: 修改目录及其内部文件的属主、属组
--reference=/path/to/somefile file,...:参考
将file的属主、属组设定为与指定路径下的文件一样
同时修改属主,属组:
chown USERNAME:GRPNAME file,...
chown USERNAME.GRPNAME file,...
示例:
tail /etc/passwd
ls -l /tmp/abc(tmp下事先已经存在abc)
chown hadoop /tmp/abc ―― 修改文件abc的属主
ls -l /tmp/abc
ls -ld /tmp/hi
chown hadoop /tmp/hi ―― 修改目录hi的属主,但hi目录里的文件属主不变
ls -ld /tmp/hi
ls -l /tmp/hi ―― 内部文件的属主未改变
chown -R hadoop /tmp/hi
ls -ld /tmp/hi
ls -l /tmp/hi ―― 内部文件的属主也改变了
ls -l /tmp
chown --reference=/tmp/abc /tmp/test
ls -l /tmp ―― test和abc的属主一样
chgrp:只改变文件属组(只有管理员可以使用此命令),用法和chown一样
# chgrp GRPNAME file,...
-R
--reference=/path/to/somefile file,...
示例:
chgrp mygroup /tmp/abc ―― 修改文件abc的属组为mygroup
ls -l /tmp
chgrp -R mygroup /tmp/hi ―― 修改目录hi及其中的内容属组为mygroup
ls -ld /tmp/hi
ls -l /tmp/hi
chown root:root /tmp/abc ―― 同时修改abc的属主、属组为root
ls -l /tmp/abc
chown :hadoop /tmp/abc ―― 只改属组
ls -l /tmp/abc
ls -l /tmp/test
chown --reference=/tmp/abc /tmp/test
ls -l /tmp/test
ls -l /tmp
chmod: 修改文件的权限
修改三类用户的权限:
chmod MODE file,...:(如果MODE位数(8进制)不够,系统会自动在MODE前面补0)
-R
--reference=/path/to/somefile file,...
示例:
将abc的权限rw-r--r--(644)修改为rwxr-x---(750)
chmod 750 /tmp/abc
ls -l /tmp/abc
chmod 75 /tmp/abc ―― 相当于075
ls -l /tmp/abc
ls -l /tmp/test
chmod --reference=/tmp/test /tmp/abc
ls -l /tmp/abc ―― abc的权限和test的一样
修改某类用户或某些类用户权限:u,g,o,a(所有类别)
chmod 用户类别=MODE file,... (MODE可以省略,省略的权限视为没有权限)
示例:
ls -l /tmp/abc
chmod u=rwx /tmp/abc ―― 修改abc的属主权限为rwx
ls -l /tmp/abc
chmod g=7 /tmp/abc ―― 无法执行
chmod g=rw /tmp/abc
!ls
chmod o=rw /tmp/abc
!ls
chmod g=r,o=r /tmp/abc
!ls
chmod go=rw /tmp/abc
!ls
修改某类用户的某位或某些位权限:u,g,o,a
chmod 用户类别+|-MODE file,...
示例:
chmod u-x /tmp/abc ―― 去除属主的执行权限
chmod u+x,g-r /tmp/abc
ls -l /tmp/abc
chmod a+x /tmp/abc ―― 三类用户同时添加执行文件,a可以省略
!ls
管理员和普通用户在同一路径下建立文件或目录,它们的权限不同。
umask:遮罩码(默认管理员022,普通用户002)
umask :查看遮罩码
umask 022 :设置遮罩码
666-umask = 新建文件权限
777-umask = 新建目录权限
文件默认不能具有执行权限,如果算得的结果中有执行权限,则将其权限加1;
umask: 023
文件:666-023=643 X
目录:777-023=754
注:所有权限的设定对管理员都没用,管理员有最高权限 ls -l /etc/shadow ls -l `which passwd` ―― s->使得普通用户能够修改密码