通过深度系统学习Linux用户和组( 二 )


文章插图
 
通过命令可以查看其属性,与可视化界面显示的一致:ls -l

通过深度系统学习Linux用户和组

文章插图
 
2. 变更文件所有者可视化界面没有找到相应的操作,下面是命令行操作:
sudo chown lilei 新建文本.txtls -l
通过深度系统学习Linux用户和组

文章插图
 
四、记录每个用户的操作在 /etc/profile 增加脚本:
#set user historyhistoryUSER=`whoami`USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`if [ "$USER_IP" = "" ]; thenUSER_IP=`hostname`fiif [ ! -d /var/log/history ]; thenmkdir /var/log/historychmod 777 /var/log/historyfiif [ ! -d /var/log/history/${LOGNAME} ]; thenmkdir /var/log/history/${LOGNAME}#chown -R ${LOGNAME}:${LOGNAME} /var/log/history/${LOGNAME}# 这里组写上真实的组名chmod 770 /var/log/history/${LOGNAME}fiexport HISTSIZE=4096DT=`date +"%Y%m%d_%H:%M:%S"`export HISTFILE="/var/log/history/${LOGNAME}/${USER}@${USER_IP}_$DT"chmod 660 /var/log/history/${LOGNAME}/*history* 2>/dev/null日志保存位置:/var/log/history/
五、问题处理1. 新建的普通用户经上面的操作使用不了sudo先修改 /etc/sudoers你的用户名 ALL=(ALL)ALL1说明:
sudoers添加下面四行中任意一条youuser ALL=(ALL) ALL %youuser ALL=(ALL) ALL youuser ALL=(ALL) NOPASSWD: ALL %youuser ALL=(ALL) NOPASSWD: ALL# 第一行:允许用户youuser执行sudo命令(需要输入密码). # 第二行:允许用户组youuser里面的用户执行sudo命令(需要输入密码). # 第三行:允许用户youuser执行sudo命令,并且在执行的时候不输入密码. # 第四行:允许用户组youuser里面的用户执行sudo命令,并且在执行的时候不输入密码. 2. 遇到setuid问题的处理/usr/bin/sudo must be owned by uid 0 and have the setuid bit set [duplicate]处理方式:设置 sudoers权限sudo的用户属组要属于uid 0,即root用户;同时sudo要设置setuid位 。
ll /usr/bin/sudo-rwxr-xr-x 1 root root 155008 Aug 282015 /usr/bin/sudo执行:
chmod 4755 /usr/bin/sudo或chmod u+s /usr/bin/sudo再执行:
ls /usr/bin/sudo-rwsr-xr-x 1 root root 155008 Aug 282015 /usr/bin/sudo看到有一位x改为s , 再重新登陆用户 。
六、关于权限的进一步说明特殊权限虽然常见的八进制权限掩码都是用三位数表示的,但确切地说,它是用四位数表示的,因为除了读、写和执行权限以外,还有一些其他较少用到的权限设置,其中就涉及到上面的setgid设置 。
setuid其中之一就是setuid位,八进制表示为4000,当把它应用到一个可执行文件时,有效用户ID将从实际用户ID(实际运行该程序的用户)设置成该程序所有者的ID,大多数情况下,该权限设置通常应用于一些由超级用户所拥有的程序,例如本问题中的sudo 。当普通用户运行一个具有“setuid root”(已设置setuid位,由root用户所有)属性的程序时,该程序将以超级用户的权限执行 。
setgid第二个是setgid位,八进制表示为2000,类似于setuid,它会把有效用户组ID从该用户的实际组ID更改为该文件所有者的组ID 。如果对一个目录设置setgid位,那么在该目录下创建的文件将由该目录所在组所有,而不属于文件创建者所在组 。当一个公共组下的成员需要访问共享目录下的所有文件时,设置setgid位将会很有用,并不需要关注文件所有者所在的用户组 。
sticky第三个是sticky位,八进制表示位1000,它是从UNIX中继承下来的,在LINUX中将会忽略文件的sticky位 。但是对一个目录设置sticky位,那么将能阻止用户删除或者重命名文件,除非用户是这个目录的所有者、文件所有者或者超级用户 。它通常用来控制对共享目录(例如/tmp)的访问 。
设置方法授予setuid权限
chmod u+s prog1orchmod 4xxx prog1具有setuid属性的程序为-rwsr-xr-x 。
授予setgid权限
chmod g+s dir1orchmod 2xxx dir1具有setgid属性的目录为drwxrwsr-x 。
授予sticky权限
chmod t dir1orchmod 1xxx dir1具有sticky属性的目录为drwxrwxrwt 。




推荐阅读