Как изменить разрешение и владельца группы файла одновременно

Для изменения разрешения файла я знаю, что могу использовать chmod. Для изменения владельца группы я мог бы использовать chgrp. Однако, если я хочу одновременно изменить как разрешение, так и владельца, любую команду, которую я мог бы использовать в Linux?

Например, есть файл с этим разрешением и владельцем:

-rw-r--r--+ 1 raymondtau staff 0 May 8 16:38 WantToChangeThisFile 

И теперь я хочу изменить его на:

 ---xw--wx+ 1 raymondtau admin 0 May 8 16:38 WantToChangeThisFile 

Я знаю, что могу использовать эту команду: chmod 123 WantToChangeThisFile && chgrp admin WantToChangeThisFile , но хочу знать, есть ли какой-нибудь опрятный способ сделать это.

4 Solutions collect form web for “Как изменить разрешение и владельца группы файла одновременно”

Существует концепция, известная как «UNIX-way». Каждый инструмент должен выполнять одну простую функцию. Если нужна более сложная функция, он может комбинировать меньшие инструменты.

Напротив, это монолитный дизайн, когда все функциональные возможности агрегируются в одном огромном инструменте.

Если вы хотите сделать что-то сложное – просто напишите сценарий, вызывая простые инструменты.

Если то, что вы также хотите, это скопировать файл где-нибудь (например, его конечный пункт назначения), вы можете посмотреть на команду install :

install -m 0777 -o root $sourcefile $destinationfile

Вы можете сделать chown username:groupname file ... чтобы изменить оба одновременно. Он меняет два поля в одной и той же структуре (inode), поэтому при объединении он сохраняет два системных вызова (один для чтения текущих значений и один для установки измененных vaules).

 #!/bin/bash # Setting the Variables for execution LOGDIR=$HOME CURRENTTIME=$(date +"%Y%m%d%s%H%M%S") LOGFILE=${LOGDIR}/chgpermission_${CURRENTTIME}.log MASTERFILE=$1 INDEX=0 # Checking the number of Parameters passed if [ "$#" -ne 1 ]; then echo "Master file name is mandatory parameter" > ${LOGFILE} exit 1 fi # Loading the Master file into an Array echo "Loading the Master file ${MASTERFILE} into an array" >> ${LOGFILE} while read line do #echo $line MASTERARRAY[$INDEX]=$HOME/$line INDEX=$(expr $INDEX + 1) done < ${MASTERFILE} echo "Number of parameters in an master array ${MASTERARRAY[@]}" >> ${LOGFILE} # Changing the permission of the file echo "Changing the permission of the file in master file ${MASTERFILE}" >> ${LOGFILE} index=0 for index in "${MASTERARRAY[@]}" do if [ -f "$index" ] then echo "$index file exist" echo "$index file exist" >> ${LOGFILE} chmod 755 "$index" chown workstation "$index" chgrp workstation "$index" else echo "$index file does not extst" echo "$index file does not exist" >> ${LOGFILE} fi done 
  • NFS экспортирует all_squash, anonuid, anongid, сопоставляя все клиенты клиентов с владельцем на сервере (работающем), все еще нуждающимся в возможностях для чтения на сервере?
  • это проблема доступа или проблема с правами?
  • Должен ли владелец / usr быть root?
  • Нет драйверов после изменения владельца usr Linux Mint
  • Хранить того же владельца файла для вновь созданных файлов
  • Почему вы должны быть членом группы, чтобы сделать эту группу владельцем группы вашего файла?
  • пояснение о chown (1) Спецификация POSIX
  • Удалите учетную запись пользователя ex-admin и предоставите привилегии / разрешения / право собственности другому
  • Разрешение Chown на
  • Невозможно рекурсивно
  • Мониторинг прогресса chmod
  • Linux и Unix - лучшая ОС в мире.